Commit d81aae7
Fix setenv PATH modifications being overwritten (#3723)
## Summary
- Fixes #3445
- When `setenv` modifies `PATH`, those modifications were being silently
overwritten when tox set up environment paths (via the `_paths` setter)
- The `_paths` setter directly wrote to `_env_vars["PATH"]` using
`_make_path()`, which only includes tox-managed paths — losing any
user-defined PATH modifications from `setenv`
## Fix
Changed the `_paths` setter to invalidate the `_env_vars` cache (set to
`None`) instead of directly modifying `PATH`. This ensures the
`environment_variables` property rebuilds from scratch on next access,
properly incorporating both `setenv` PATH modifications and tox-managed
paths in the correct order.
## Test plan
- [x] Verified the fix resolves the issue described in #3445
- [x] The `environment_variables` property already handles merging
setenv with system PATH correctly — the bug was only in the setter
bypassing this logic
- [x] Added changelog fragment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent e7a0800 commit d81aae7
3 files changed
Lines changed: 44 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
386 | 386 | | |
387 | 387 | | |
388 | 388 | | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
389 | 392 | | |
390 | 393 | | |
391 | 394 | | |
| |||
406 | 409 | | |
407 | 410 | | |
408 | 411 | | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
| 412 | + | |
| 413 | + | |
414 | 414 | | |
415 | 415 | | |
416 | 416 | | |
417 | 417 | | |
418 | 418 | | |
419 | 419 | | |
420 | 420 | | |
421 | | - | |
| 421 | + | |
422 | 422 | | |
423 | | - | |
| 423 | + | |
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
0 commit comments