diff options
Diffstat (limited to 'tests/test_memfs.py')
-rw-r--r-- | tests/test_memfs.py | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/tests/test_memfs.py b/tests/test_memfs.py deleted file mode 100644 index 0555726..0000000 --- a/tests/test_memfs.py +++ /dev/null @@ -1,65 +0,0 @@ -import logging -from concurrent.futures import ThreadPoolExecutor -from contextlib import ExitStack -from unittest import TestCase, mock -from uuid import uuid4 - -from snekbox.memfs import MemFS - -UUID_TEST = uuid4() - - -class MemFSTests(TestCase): - def setUp(self): - super().setUp() - self.logger = logging.getLogger("snekbox.memfs") - self.logger.setLevel(logging.WARNING) - - @mock.patch("snekbox.memfs.uuid4", lambda: UUID_TEST) - def test_assignment_thread_safe(self): - """Test concurrent mounting works in multi-thread environments.""" - # Concurrently create MemFS in threads, check only 1 can be created - # Others should result in RuntimeError - with ExitStack() as stack: - with ThreadPoolExecutor() as executor: - memfs: MemFS | None = None - # Each future uses enter_context to ensure __exit__ on test exception - futures = [ - executor.submit(lambda: stack.enter_context(MemFS(10))) for _ in range(8) - ] - for future in futures: - # We should have exactly one result and all others RuntimeErrors - if err := future.exception(): - self.assertIsInstance(err, RuntimeError) - else: - self.assertIsNone(memfs) - memfs = future.result() - - # Original memfs should still exist afterwards - self.assertIsInstance(memfs, MemFS) - self.assertTrue(memfs.path.is_mount()) - - def test_cleanup(self): - """Test explicit cleanup.""" - memfs = MemFS(10) - path = memfs.path - self.assertTrue(path.is_mount()) - memfs.cleanup() - self.assertFalse(path.exists()) - - def test_context_cleanup(self): - """Context __exit__ should trigger cleanup.""" - with MemFS(10) as memfs: - path = memfs.path - self.assertTrue(path.is_mount()) - self.assertFalse(path.exists()) - - def test_implicit_cleanup(self): - """Test implicit _cleanup triggered by GC.""" - memfs = MemFS(10) - path = memfs.path - self.assertTrue(path.is_mount()) - # Catch the warning about implicit cleanup - with self.assertWarns(ResourceWarning): - del memfs - self.assertFalse(path.exists()) |