"""Unit tests for normalize_folder_path (REQ-002, REQ-063, REQ-064, REQ-066).""" import pytest from agentcache.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"