1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-09 19:56:48 +00:00
webvirtcloud/storages/tests/test_pool_target.py
catborise c55f52f025 test: each app keeps its tests in a tests package
131 test modules sat next to the code they test; instances alone had
51 of them beside views.py and utils.py. They move into a
tests/ package per app, and the JavaScript checks into
webvirtcloud/tests/js. Each non-empty tests.py becomes tests/test_views.py;
the empty generated stubs are removed.

Imports of the app's own modules become absolute, paths built from
__file__ go one level up, the live helper is instances.tests.livetest,
and coverage omits */tests/*. The suite discovers the same 960 tests as
before.
2026-10-12 15:17:30 +03:00

33 lines
1.1 KiB
Python

"""The storage pool target check runs in linear time and accepts what it did."""
import time
from django.test import SimpleTestCase
from storages.forms import AddStgPool
def target_error(target):
form = AddStgPool({"name": "pool1", "stg_type": "dir", "target": target})
form.is_valid()
return "target" in form.errors
class PoolTargetTests(SimpleTestCase):
def test_accepted_and_refused_targets(self):
for target, refused in (
("/var/lib/libvirt/images", False),
("/srv/iso-pool", False),
("/a//b", False),
("a-b.c_d/e", False),
("/a/-b", True), # a dash right after a slash
("-x", True),
("/a b", True),
):
with self.subTest(target=target):
self.assertEqual(target_error(target), refused)
def test_a_crafted_target_is_checked_at_once(self):
# the previous expression backtracked exponentially: 22 dashes took over a second
start = time.monotonic()
self.assertTrue(target_error("," + "-" * 98 + "!"))
self.assertLess(time.monotonic() - start, 1)