diff --git a/docs/changelog/1679.bugfix.rst b/docs/changelog/1679.bugfix.rst new file mode 100644 index 000000000..b42782b65 --- /dev/null +++ b/docs/changelog/1679.bugfix.rst @@ -0,0 +1 @@ +Fix Batch activation script shell prompt to display environment name by default - by :user:`spetafree`. diff --git a/src/virtualenv/activation/batch/activate.bat b/src/virtualenv/activation/batch/activate.bat index 96e835b52..c0949ba83 100644 --- a/src/virtualenv/activation/batch/activate.bat +++ b/src/virtualenv/activation/batch/activate.bat @@ -13,7 +13,12 @@ if defined _OLD_VIRTUAL_PROMPT ( ) ) if not defined VIRTUAL_ENV_DISABLE_PROMPT ( - set "PROMPT=__VIRTUAL_PROMPT__%PROMPT%" + set "ENV_PROMPT=__VIRTUAL_PROMPT__" + if NOT DEFINED ENV_PROMPT ( + for %%d in ("%VIRTUAL_ENV%") do set "ENV_PROMPT=(%%~nxd) " + ) + ) + set "PROMPT=%ENV_PROMPT%%PROMPT%" ) REM Don't use () to avoid problems with them in %PATH% diff --git a/tests/unit/activation/conftest.py b/tests/unit/activation/conftest.py index 712ee1411..c016b4052 100644 --- a/tests/unit/activation/conftest.py +++ b/tests/unit/activation/conftest.py @@ -205,10 +205,13 @@ def raise_on_non_source_class(): return RaiseOnNonSourceCall -@pytest.fixture(scope="session") -def activation_python(tmp_path_factory, special_char_name, current_fastest): +@pytest.fixture(scope="session", params=[True, False], ids=["with_prompt", "no_prompt"]) +def activation_python(request, tmp_path_factory, special_char_name, current_fastest): dest = os.path.join(ensure_text(str(tmp_path_factory.mktemp("activation-tester-env"))), special_char_name) - session = cli_run(["--without-pip", dest, "--prompt", special_char_name, "--creator", current_fastest, "-vv"]) + cmd = ["--without-pip", dest, "--creator", current_fastest, "-vv"] + if request.param: + cmd += ["--prompt", special_char_name] + session = cli_run(cmd) pydoc_test = session.creator.purelib / "pydoc_test.py" pydoc_test.write_text('"""This is pydoc_test.py"""') yield session