mirror of
https://github.com/python/cpython.git
synced 2026-06-27 19:36:07 +00:00
[3.15] gh-109940: Respect VIRTUAL_ENV_DISABLE_PROMPT in activate.bat (GH-151215) (GH-151225)
Co-authored-by: Harjoth Khara <harjoth.khara@gmail.com>
This commit is contained in:
parent
54ee910bcd
commit
5c83037313
3 changed files with 49 additions and 2 deletions
|
|
@ -592,6 +592,51 @@ def test_unicode_in_batch_file(self):
|
|||
)
|
||||
self.assertEqual(out.strip(), '0')
|
||||
|
||||
@unittest.skipUnless(os.name == 'nt', 'only relevant on Windows')
|
||||
def test_activate_bat_respects_disable_prompt(self):
|
||||
rmtree(self.env_dir)
|
||||
env_dir = os.path.join(os.path.realpath(self.env_dir), 'venv')
|
||||
builder = venv.EnvBuilder(clear=True)
|
||||
builder.create(env_dir)
|
||||
activate = os.path.join(env_dir, self.bindir, 'activate.bat')
|
||||
test_batch = os.path.join(self.env_dir, 'test_disable_prompt.bat')
|
||||
with open(test_batch, "w") as f:
|
||||
f.write('@echo off\n'
|
||||
'set "PROMPT=base$G"\n'
|
||||
'set "VIRTUAL_ENV_DISABLE_PROMPT=1"\n'
|
||||
f'call "{activate}"\n'
|
||||
'echo ACTIVE_PROMPT:%PROMPT%\n'
|
||||
'echo VIRTUAL_ENV:%VIRTUAL_ENV%\n'
|
||||
'set "PROMPT=changed$G"\n'
|
||||
'call deactivate\n'
|
||||
'echo FINAL_PROMPT:%PROMPT%\n')
|
||||
out, err = check_output([test_batch])
|
||||
lines = out.splitlines()
|
||||
self.assertEqual(lines[0], b'ACTIVE_PROMPT:base$G')
|
||||
self.assertEndsWith(lines[1], os.fsencode(env_dir))
|
||||
self.assertEqual(lines[2], b'FINAL_PROMPT:changed$G')
|
||||
|
||||
@unittest.skipUnless(os.name == 'nt', 'only relevant on Windows')
|
||||
def test_activate_bat_prefixes_prompt_by_default(self):
|
||||
rmtree(self.env_dir)
|
||||
env_dir = os.path.join(os.path.realpath(self.env_dir), 'venv')
|
||||
builder = venv.EnvBuilder(clear=True)
|
||||
builder.create(env_dir)
|
||||
activate = os.path.join(env_dir, self.bindir, 'activate.bat')
|
||||
test_batch = os.path.join(self.env_dir, 'test_enable_prompt.bat')
|
||||
with open(test_batch, "w") as f:
|
||||
f.write('@echo off\n'
|
||||
'set "PROMPT=base) $G"\n'
|
||||
'set "VIRTUAL_ENV_DISABLE_PROMPT="\n'
|
||||
f'call "{activate}"\n'
|
||||
'echo ACTIVE_PROMPT:%PROMPT%\n'
|
||||
'call deactivate\n'
|
||||
'echo FINAL_PROMPT:%PROMPT%\n')
|
||||
out, err = check_output([test_batch])
|
||||
lines = out.splitlines()
|
||||
self.assertEqual(lines[0], b'ACTIVE_PROMPT:(venv) base) $G')
|
||||
self.assertEqual(lines[1], b'FINAL_PROMPT:base) $G')
|
||||
|
||||
@unittest.skipUnless(os.name == 'nt' and can_symlink(),
|
||||
'symlinks on Windows')
|
||||
def test_failed_symlink(self):
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
@if defined _OLD_VIRTUAL_PROMPT @set PROMPT=%_OLD_VIRTUAL_PROMPT%
|
||||
@if defined _OLD_VIRTUAL_PYTHONHOME @set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%
|
||||
|
||||
@set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
|
||||
@set "PROMPT=(__VENV_PROMPT__) %PROMPT%"
|
||||
@if not defined VIRTUAL_ENV_DISABLE_PROMPT @set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
|
||||
@if not defined VIRTUAL_ENV_DISABLE_PROMPT @set "PROMPT=(__VENV_PROMPT__) %PROMPT%"
|
||||
|
||||
@if defined PYTHONHOME @set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%
|
||||
@set PYTHONHOME=
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Fix Windows :mod:`venv` activation in ``cmd.exe`` to respect
|
||||
``VIRTUAL_ENV_DISABLE_PROMPT``.
|
||||
Loading…
Add table
Add a link
Reference in a new issue