|
7 | 7 | from codeflash.optimization.optimizer import Optimizer |
8 | 8 |
|
9 | 9 |
|
10 | | -def test_mirror_paths_for_worktree_mode(monkeypatch: pytest.MonkeyPatch): |
| 10 | +def test_mirror_paths_for_worktree_mode(monkeypatch: pytest.MonkeyPatch) -> None: |
11 | 11 | repo_root = Path(__file__).resolve().parent.parent |
12 | 12 | project_root = repo_root / "code_to_optimize" / "code_directories" / "nested_module_root" |
13 | 13 |
|
@@ -67,3 +67,103 @@ def test_mirror_paths_for_worktree_mode(monkeypatch: pytest.MonkeyPatch): |
67 | 67 | assert optimizer.test_cfg.tests_root == worktree_dir / "tests" |
68 | 68 | assert optimizer.test_cfg.project_root_path == worktree_dir # same as project_root |
69 | 69 | assert optimizer.test_cfg.tests_project_rootdir == worktree_dir # same as test_project_root |
| 70 | + |
| 71 | + |
| 72 | +def test_mirror_paths_preserves_original_args(monkeypatch: pytest.MonkeyPatch) -> None: |
| 73 | + repo_root = Path(__file__).resolve().parent.parent |
| 74 | + project_root = repo_root / "code_to_optimize" / "code_directories" / "nested_module_root" |
| 75 | + |
| 76 | + monkeypatch.setattr("codeflash.optimization.optimizer.git_root_dir", lambda: project_root) |
| 77 | + |
| 78 | + args = Namespace() |
| 79 | + args.benchmark = False |
| 80 | + args.benchmarks_root = None |
| 81 | + args.no_pr = True |
| 82 | + args.config_file = project_root / "pyproject.toml" |
| 83 | + args.file = project_root / "src" / "app" / "main.py" |
| 84 | + args.worktree = True |
| 85 | + |
| 86 | + new_args = process_pyproject_config(args) |
| 87 | + optimizer = Optimizer(new_args) |
| 88 | + |
| 89 | + original_project_root = optimizer.args.project_root |
| 90 | + original_module_root = optimizer.args.module_root |
| 91 | + original_file = optimizer.args.file |
| 92 | + original_tests_root = optimizer.args.tests_root |
| 93 | + original_test_project_root = optimizer.args.test_project_root |
| 94 | + |
| 95 | + worktree_dir = repo_root / "worktree" |
| 96 | + optimizer.mirror_paths_for_worktree_mode(worktree_dir) |
| 97 | + |
| 98 | + assert optimizer.original_args_and_test_cfg is not None |
| 99 | + saved_args = optimizer.original_args_and_test_cfg[0] |
| 100 | + assert saved_args.project_root == original_project_root |
| 101 | + assert saved_args.module_root == original_module_root |
| 102 | + assert saved_args.file == original_file |
| 103 | + assert saved_args.tests_root == original_tests_root |
| 104 | + assert saved_args.test_project_root == original_test_project_root |
| 105 | + |
| 106 | + |
| 107 | +def test_mirror_paths_preserves_original_test_cfg(monkeypatch: pytest.MonkeyPatch) -> None: |
| 108 | + repo_root = Path(__file__).resolve().parent.parent |
| 109 | + project_root = repo_root / "code_to_optimize" / "code_directories" / "nested_module_root" |
| 110 | + |
| 111 | + monkeypatch.setattr("codeflash.optimization.optimizer.git_root_dir", lambda: project_root) |
| 112 | + |
| 113 | + args = Namespace() |
| 114 | + args.benchmark = False |
| 115 | + args.benchmarks_root = None |
| 116 | + args.no_pr = True |
| 117 | + args.config_file = project_root / "pyproject.toml" |
| 118 | + args.file = project_root / "src" / "app" / "main.py" |
| 119 | + args.worktree = True |
| 120 | + |
| 121 | + new_args = process_pyproject_config(args) |
| 122 | + optimizer = Optimizer(new_args) |
| 123 | + |
| 124 | + original_tests_root = optimizer.test_cfg.tests_root |
| 125 | + original_project_root_path = optimizer.test_cfg.project_root_path |
| 126 | + original_tests_project_rootdir = optimizer.test_cfg.tests_project_rootdir |
| 127 | + |
| 128 | + worktree_dir = repo_root / "worktree" |
| 129 | + optimizer.mirror_paths_for_worktree_mode(worktree_dir) |
| 130 | + |
| 131 | + assert optimizer.original_args_and_test_cfg is not None |
| 132 | + saved_test_cfg = optimizer.original_args_and_test_cfg[1] |
| 133 | + assert saved_test_cfg.tests_root == original_tests_root |
| 134 | + assert saved_test_cfg.project_root_path == original_project_root_path |
| 135 | + assert saved_test_cfg.tests_project_rootdir == original_tests_project_rootdir |
| 136 | + |
| 137 | + |
| 138 | +def test_shallow_copy_independence(monkeypatch: pytest.MonkeyPatch) -> None: |
| 139 | + repo_root = Path(__file__).resolve().parent.parent |
| 140 | + project_root = repo_root / "code_to_optimize" / "code_directories" / "nested_module_root" |
| 141 | + |
| 142 | + monkeypatch.setattr("codeflash.optimization.optimizer.git_root_dir", lambda: project_root) |
| 143 | + |
| 144 | + args = Namespace() |
| 145 | + args.benchmark = False |
| 146 | + args.benchmarks_root = None |
| 147 | + args.no_pr = True |
| 148 | + args.config_file = project_root / "pyproject.toml" |
| 149 | + args.file = project_root / "src" / "app" / "main.py" |
| 150 | + args.worktree = True |
| 151 | + |
| 152 | + new_args = process_pyproject_config(args) |
| 153 | + optimizer = Optimizer(new_args) |
| 154 | + |
| 155 | + worktree_dir = repo_root / "worktree" |
| 156 | + optimizer.mirror_paths_for_worktree_mode(worktree_dir) |
| 157 | + |
| 158 | + assert optimizer.original_args_and_test_cfg is not None |
| 159 | + saved_args = optimizer.original_args_and_test_cfg[0] |
| 160 | + saved_test_cfg = optimizer.original_args_and_test_cfg[1] |
| 161 | + |
| 162 | + original_project_root = saved_args.project_root |
| 163 | + original_tests_root = saved_test_cfg.tests_root |
| 164 | + |
| 165 | + optimizer.args.project_root = Path("/mutated/path") |
| 166 | + optimizer.test_cfg.tests_root = Path("/mutated/tests") |
| 167 | + |
| 168 | + assert saved_args.project_root == original_project_root |
| 169 | + assert saved_test_cfg.tests_root == original_tests_root |
0 commit comments