@@ -451,43 +451,41 @@ def mirror_paths_for_worktree_mode(self, worktree_dir: Path) -> None:
451451 original_test_cfg = copy .deepcopy (self .test_cfg )
452452 self .original_args_and_test_cfg = (original_args , original_test_cfg )
453453
454- original_module_root = original_args .module_root
455454 original_git_root = git_root_dir ()
456455
457- # mutate project_root
458- relative_project_root = original_args .project_root .relative_to (original_git_root )
459- # this will be the same as the original project root but in the worktree
460- new_project_root = worktree_dir / relative_project_root
461- self .args .project_root = new_project_root
462- self .test_cfg .project_root_path = new_project_root
463-
464- # mutate module_root
465- relative_module_root = original_module_root .relative_to (original_git_root )
466- self .args .module_root = worktree_dir / relative_module_root
467-
468- # mute target file
469- relative_optimized_file = original_args .file .relative_to (original_git_root ) if original_args .file else None
470- if relative_optimized_file is not None :
471- self .args .file = worktree_dir / relative_optimized_file
472-
473- # mutate tests root
474- relative_tests_root = original_test_cfg .tests_root .relative_to (original_git_root )
475- new_tests_root = worktree_dir / relative_tests_root
476- self .args .tests_root = new_tests_root
477- self .test_cfg .tests_root = new_tests_root
478-
479- # mutate tests project root
480- relative_tests_project_root = original_args .test_project_root .relative_to (original_git_root )
481- self .args .test_project_root = worktree_dir / relative_tests_project_root
482- self .test_cfg .tests_project_rootdir = worktree_dir / relative_tests_project_root
483-
484- # mutate benchmarks root
485- relative_benchmarks_root = (
486- original_args .benchmarks_root .relative_to (original_git_root ) if original_args .benchmarks_root else None
456+ # mirror project_root
457+ self .args .project_root = mirror_path (self .args .project_root , original_git_root , worktree_dir )
458+ self .test_cfg .project_root_path = mirror_path (self .test_cfg .project_root_path , original_git_root , worktree_dir )
459+
460+ # mirror module_root
461+ self .args .module_root = mirror_path (self .args .module_root , original_git_root , worktree_dir )
462+
463+ # mirror target file
464+ if self .args .file :
465+ self .args .file = mirror_path (self .args .file , original_git_root , worktree_dir )
466+
467+ # mirror tests root
468+ self .args .tests_root = mirror_path (self .args .tests_root , original_git_root , worktree_dir )
469+ self .test_cfg .tests_root = mirror_path (self .test_cfg .tests_root , original_git_root , worktree_dir )
470+
471+ # mirror tests project root
472+ self .args .test_project_root = mirror_path (self .args .test_project_root , original_git_root , worktree_dir )
473+ self .test_cfg .tests_project_rootdir = mirror_path (
474+ self .test_cfg .tests_project_rootdir , original_git_root , worktree_dir
487475 )
488- if relative_benchmarks_root :
489- self .args .benchmarks_root = worktree_dir / relative_benchmarks_root
490- self .test_cfg .benchmark_tests_root = worktree_dir / relative_benchmarks_root
476+
477+ # mirror benchmarks root paths
478+ if self .args .benchmarks_root :
479+ self .args .benchmarks_root = mirror_path (self .args .benchmarks_root , original_git_root , worktree_dir )
480+ if self .test_cfg .benchmark_tests_root :
481+ self .test_cfg .benchmark_tests_root = mirror_path (
482+ self .test_cfg .benchmark_tests_root , original_git_root , worktree_dir
483+ )
484+
485+
486+ def mirror_path (path : Path , src_root : Path , dest_root : Path ) -> Path :
487+ relative_path = path .relative_to (src_root )
488+ return dest_root / relative_path
491489
492490
493491def run_with_args (args : Namespace ) -> None :
0 commit comments