Comprehensive test suite for filesystem functionality.
| 13 | from src.environments.filesystem.handlers import TextHandler, JsonHandler, HandlerRegistry |
| 14 | |
| 15 | class FileSystemTester: |
| 16 | """Comprehensive test suite for filesystem functionality.""" |
| 17 | |
| 18 | def __init__(self): |
| 19 | self.test_dir = None |
| 20 | self.fs = None |
| 21 | self.service = None |
| 22 | self.passed_tests = 0 |
| 23 | self.failed_tests = 0 |
| 24 | |
| 25 | async def setup(self): |
| 26 | """Setup test environment.""" |
| 27 | self.test_dir = Path(tempfile.mkdtemp()) |
| 28 | self.fs = FileSystem(base_dir=self.test_dir) |
| 29 | self.service = FileSystemService(self.test_dir) |
| 30 | print(f"Test directory: {self.test_dir}") |
| 31 | |
| 32 | async def cleanup(self): |
| 33 | """Cleanup test environment.""" |
| 34 | import shutil |
| 35 | if self.test_dir and self.test_dir.exists(): |
| 36 | shutil.rmtree(self.test_dir) |
| 37 | |
| 38 | def assert_test(self, condition: bool, test_name: str, message: str = ""): |
| 39 | """Assert test condition and track results.""" |
| 40 | if condition: |
| 41 | print(f"✓ {test_name}") |
| 42 | self.passed_tests += 1 |
| 43 | else: |
| 44 | print(f"✗ {test_name}: {message}") |
| 45 | self.failed_tests += 1 |
| 46 | |
| 47 | async def test_basic_file_operations(self): |
| 48 | """Test basic file read/write operations.""" |
| 49 | print("\n=== Testing Basic File Operations ===") |
| 50 | |
| 51 | # Test write file |
| 52 | test_file = str(self.test_dir / "test.txt") |
| 53 | result = await self.fs.write_file(test_file, "Hello, World!") |
| 54 | self.assert_test("Successfully overwritten" in result, result) |
| 55 | |
| 56 | # Test read file |
| 57 | result = await self.fs.read_file(test_file) |
| 58 | self.assert_test("Hello, World!" in result, result) |
| 59 | |
| 60 | # Test append mode |
| 61 | result = await self.fs.write_file(test_file, "\nAppended text", mode="a") |
| 62 | self.assert_test("Successfully appended" in result, result) |
| 63 | |
| 64 | # Test read with line range |
| 65 | result = await self.fs.read_file(test_file, start_line=1, end_line=2) |
| 66 | self.assert_test("Hello, World!" in result, result) |
| 67 | |
| 68 | # Test file info |
| 69 | result = await self.fs.get_file_info(test_file) |
| 70 | self.assert_test("File" in result and "Size:" in result, result) |
| 71 | |
| 72 |