Skip to content

test_venv.test_special_chars_csh fails on NetBSD#139308

@furkanonder

Description

@furkanonder

Bug report

Bug description:

The test_venv.BasicTest.test_special_chars_csh test fails on NetBSD. NetBSD's csh cannot properly handle the specific character combination '";&&$e|"' even when correctly quoted, because $e is interpreted as a variable reference.

Configuration

./configure --with-pydebug

Test

home$ ./python-mtesttest_venv-mtest_special_chars_csh-v==CPython3.15.0a0free-threadingbuild (heads/main:e8382e55c57, Sep232025, 21:04:49) [GCC10.5.0] ==NetBSD-10.1-amd64-x86_64-64bit-ELFlittle-endian==Pythonbuild: free_threadingdebug==cwd:/home/orange/cpython/build/test_python_worker_6821æ==CPUcount: 16==encodings: locale=UTF-8FS=utf-8==resources: alltestresourcesaredisabled, use-uoptiontounskiptestsUsingrandomseed: 35170635750:00:00loadavg: 0.08Run1testsequentiallyinasingleprocess0:00:00loadavg: 0.08 [1/1] test_venvtest_special_chars_csh (test.test_venv.BasicTest.test_special_chars_csh) Testthatthetemplatestringsarequotedproperly (csh) ... prompt: Undefinedvariable. ERROR======================================================================ERROR: test_special_chars_csh (test.test_venv.BasicTest.test_special_chars_csh) Testthatthetemplatestringsarequotedproperly (csh) ----------------------------------------------------------------------Traceback (mostrecentcalllast): File"/home/orange/cpython/Lib/test/test_venv.py", line544, intest_special_chars_cshout, err=check_output([csh, test_script]) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^File"/home/orange/cpython/Lib/test/test_venv.py", line58, incheck_outputraisesubprocess.CalledProcessError( p.returncode, cmd, out, err) subprocess.CalledProcessError: Command'['/bin/csh', '/tmp/tmp82wovfyk/test_special_chars.csh']'returnednon-zeroexitstatus1.----------------------------------------------------------------------Ran1testin1.969sFAILED (errors=1) testtest_venvfailed0:00:02loadavg: 0.15 [1/1/1] test_venvfailed (1error) ==Testsresult: FAILURE==1testfailed: test_venvTotalduration: 2.3secTotaltests: run=1 (filtered) Totaltestfiles: run=1/1 (filtered) failed=1Result: FAILUREhome$

Reproduce

importosimporttempfileimportshutilimportsubprocessimportshlexfromvenvimportEnvBuilderdeftest_original_test_case(): print("\n=== Reproducing original test case ===") csh=shutil.which('tcsh') orshutil.which('csh') ifnotcsh: print("No csh/tcsh found, skipping test") returnwithtempfile.TemporaryDirectory() astmpdir: env_name='";&&$e|"'env_dir=os.path.join(os.path.realpath(tmpdir), env_name) try: builder=EnvBuilder(clear=True) builder.create(env_dir) activate=os.path.join(env_dir, 'bin', 'activate.csh') test_script=os.path.join(tmpdir, 'test_special_chars.csh') withopen(test_script, "w") asf: f.write(f'source {shlex.quote(activate)}\n''python -c \'import sys; print(sys.executable)\'\n''python -c \'import os; print(os.environ["VIRTUAL_ENV"])\'\n''deactivate\n') print(f"\nRunning test script with {csh}:") try: result=subprocess.run([csh, test_script], capture_output=True, text=True, timeout=10) print(f"Return code: {result.returncode}") ifresult.returncode==0: print(f"Output: {result.stdout}") else: print(f"Error: {result.stderr}") exceptExceptionase: print(f"Error running test: {e}") exceptExceptionase: print(f"Error in test case: {e}") if__name__=="__main__": test_original_test_case()

Output:

home:{5} ./python reproducer.py === Reproducing original testcase === Running test script with /bin/csh: Return code: 1 Error: prompt: Undefined variable. home:{6} echo$SHELL /bin/csh
# This FAILS with "Unmatched ." error /bin/csh -c 'echo "Testing: \";&&$e|\""'# This FAILS with "e: Undefined variable." error /bin/csh -c 'echo "Testing: '\'';&&$e|'\''"'# This WORKS correctly /bin/csh -c 'echo '\''";&&$e|"'\'''

CPython versions tested on:

CPython main branch, 3.15, 3.14, 3.13

Operating systems tested on:

Other

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    OS-netbsdtestsTests in the Lib/test dirtopic-venvRelated to the venv moduletype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions