Skip to content

gh-151626: Fix tests that fail when PYTHONPYCACHEPREFIX is set#151952

Open
zangjiucheng wants to merge 3 commits into
python:mainfrom
zangjiucheng:gh-151626-fix
Open

gh-151626: Fix tests that fail when PYTHONPYCACHEPREFIX is set#151952
zangjiucheng wants to merge 3 commits into
python:mainfrom
zangjiucheng:gh-151626-fix

Conversation

@zangjiucheng

@zangjiucheng zangjiucheng commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Several tests in test_inspect, test_import, test_importlib.test_util,
    test_py_compile, and test_compileall assume the default __pycache__
    bytecode layout and fail when the suite is run with PYTHONPYCACHEPREFIX set.
  • Fix: neutralize sys.pycache_prefix (and PYTHONPYCACHEPREFIX for
    subprocess-based tests) where that assumption is made so tests are environment-independent.
  • The key pattern for subprocess tests: assert_python_ok() runs with -I
    (isolated mode), which ignores PYTHONPYCACHEPREFIX, so the expected cached
    path must be computed with sys.pycache_prefix=None to match.

…mpile, and test_inspect to neutralize PYTHONPYCACHEPREFIX
@vstinner

Copy link
Copy Markdown
Member

test_inspect fails on Windows. Example:


FAIL: test_details_option_with_aliased_target (test.test_inspect.test_inspect.TestModuleCLI.test_details_option_with_aliased_target)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\a\cpython\cpython\Lib\test\test_inspect\test_inspect.py", line 6676, in test_details_option_with_aliased_target
    self.assertEqual(output_lines, expected_lines)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Lists differ: ['Tar[116 chars], 'Cached: None', 'Line: 98', ''] != ['Tar[116 chars], 'Cached: __pycache__\\frozencpython-316.pyc', 'Line: 98', '']

First differing element 3:
'Cached: None'
'Cached: __pycache__\\frozencpython-316.pyc'

  ['Target: ntpath:join (looked up as "os:path.join")',
   'Origin: frozen',
   'Source: D:\\a\\cpython\\cpython\\Lib\\ntpath.py',
-  'Cached: None',
+  'Cached: __pycache__\\frozencpython-316.pyc',
   'Line: 98',
   '']

@zangjiucheng

Copy link
Copy Markdown
Contributor Author

I will resolve this today :)

zangjiucheng and others added 2 commits June 23, 2026 09:32
…d_target

On Windows, os.path resolves to ntpath which is a frozen module
(origin='frozen', cached=None). Calling cache_from_source('frozen')
fabricates a nonsensical path that mismatches the subprocess output of
None. Guard the cache_from_source call on cached being non-None.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants