gh-140006: Preserve fish prompt status in venv activation #144558
+14
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
echo "exit $old_status" | .withreturn $old_statusinactivate.fishso the fish prompt preserves the previous command status without sourcingexitfrom stdin.test_activate_fish_script_preserves_statusinLib/test/test_venv.pyto assert the generated script contains the fixed prompt-status line.gh-140006.Verification
python -m py_compile Lib/test/test_venv.pypython -c "import importlib.util, pathlib, tempfile, os; spec=importlib.util.spec_from_file_location('repo_venv', r'D:\Code\cpython\Lib\venv\__init__.py'); mod=importlib.util.module_from_spec(spec); spec.loader.exec_module(mod); d=tempfile.mkdtemp(); mod.create(d, with_pip=False, scm_ignore_files=frozenset()); p=pathlib.Path(d)/('Scripts' if os.name=='nt' else 'bin')/'activate.fish'; s=p.read_text(encoding='utf-8'); assert 'return $old_status' in s; assert 'echo \"exit $old_status\" | .' not in s; print('ok')"