@@ -161,6 +161,12 @@ class TestCase0002SyncListValidation(E2ETestCase):
161161 r"^(?:DEBUG:\s+)?Local parent directory should be retained due to 'sync_list' inclusion: (.+)$"
162162 ),
163163 ),
164+ (
165+ "retain_sync_root_file" ,
166+ re .compile (
167+ r"^(?:DEBUG:\s+)?Path retained due to 'sync_root_files' override for logical root file: (.+)$"
168+ ),
169+ ),
164170 (
165171 "upload_file" ,
166172 re .compile (r"^(?:DEBUG:\s+)?Uploading new file: (.+?) \.\.\." ),
@@ -1457,24 +1463,28 @@ def _build_scenarios(self) -> list[SyncListScenario]:
14571463 ),
14581464 SyncListScenario (
14591465 scenario_id = "SL-0023" ,
1460- description = "sync_root_files true does not retain non- root sibling files under fixture when only Projects is included " ,
1466+ description = "sync_root_files true retains logical root files alongside included Projects subtree " ,
14611467 sync_list = [
14621468 f"!/{ FIXTURE_ROOT_NAME } /Projects/Audio" ,
14631469 f"!/{ FIXTURE_ROOT_NAME } /Projects/Video" ,
14641470 f"/{ FIXTURE_ROOT_NAME } /Projects" ,
14651471 ],
1472+ allowed_exact = [
1473+ f"{ FIXTURE_ROOT_NAME } /README.txt" ,
1474+ f"{ FIXTURE_ROOT_NAME } /loose.bin" ,
1475+ ],
14661476 allowed_prefixes = [f"{ FIXTURE_ROOT_NAME } /Projects" ],
14671477 forbidden_prefixes = [
14681478 f"{ FIXTURE_ROOT_NAME } /Projects/Audio" ,
14691479 f"{ FIXTURE_ROOT_NAME } /Projects/Video" ,
14701480 ],
14711481 required_processed = [
1482+ f"{ FIXTURE_ROOT_NAME } /README.txt" ,
1483+ f"{ FIXTURE_ROOT_NAME } /loose.bin" ,
14721484 f"{ FIXTURE_ROOT_NAME } /Projects/Code/JOBXYZ/Exports/file.wav" ,
14731485 f"{ FIXTURE_ROOT_NAME } /Projects/Code/JOBXYZ/Source/main.txt" ,
14741486 ],
14751487 required_skipped = [
1476- f"{ FIXTURE_ROOT_NAME } /README.txt" ,
1477- f"{ FIXTURE_ROOT_NAME } /loose.bin" ,
14781488 f"{ FIXTURE_ROOT_NAME } /Projects/Audio" ,
14791489 f"{ FIXTURE_ROOT_NAME } /Projects/Video" ,
14801490 f"{ FIXTURE_ROOT_NAME } /Backup" ,
0 commit comments