Spaces:
Running
Running
| """Unit tests for normalize_folder_path (REQ-002, REQ-063, REQ-064, REQ-066).""" | |
| import sys | |
| import os | |
| import pytest | |
| sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src')) | |
| from functions import normalize_folder_path | |
| class TestNormalizeFolderPath: | |
| def test_unix_path(self): | |
| assert normalize_folder_path('/home/user/projects/myapp') == 'home/user/projects/myapp' | |
| def test_windows_path(self): | |
| result = normalize_folder_path('C:\\Users\\foo\\projects\\myapp') | |
| assert '\\' not in result | |
| assert 'Users' in result or 'users' in result.lower() | |
| def test_trailing_slash_stripped(self): | |
| result = normalize_folder_path('/home/user/projects/') | |
| assert not result.endswith('/') | |
| def test_leading_slash_stripped(self): | |
| result = normalize_folder_path('/home/user/projects') | |
| assert not result.startswith('/') | |
| def test_double_slashes_collapsed(self): | |
| result = normalize_folder_path('/home//user///projects') | |
| assert '//' not in result | |
| def test_empty_string_raises(self): | |
| with pytest.raises(ValueError): | |
| normalize_folder_path('') | |
| def test_path_traversal_raises(self): | |
| with pytest.raises(ValueError): | |
| normalize_folder_path('/home/user/../../etc/passwd') | |
| def test_length_cap(self): | |
| long_path = 'a/' * 300 | |
| result = normalize_folder_path(long_path) | |
| assert len(result) <= 512 | |
| def test_idempotent(self): | |
| path = '/home/user/projects/myapp' | |
| once = normalize_folder_path(path) | |
| twice = normalize_folder_path(once) | |
| assert once == twice | |
| def test_relative_path(self): | |
| result = normalize_folder_path('projects/myapp/src') | |
| assert result == 'projects/myapp/src' | |
| def test_windows_forward_slashes(self): | |
| result = normalize_folder_path('C:/Users/foo/projects') | |
| assert '\\' not in result | |
| def test_single_segment(self): | |
| result = normalize_folder_path('/workspace') | |
| assert result == 'workspace' | |