Page MenuHomePhabricator

tests: make check-py3-compat.py actually load the specified files correctly
ClosedPublic

Authored by spectral on Jul 24 2020, 8:02 PM.

Details

Summary

For most uses, this change is essentially a no-op, as this script is generally
only run by test-check-py3-compat.t, which will already put $TESTDIR/.. in
$PYTHONPATH.

When running outside of tests, however, $PYTHONPATH is likely not set, causing
check-py3-compat.py to parse the file from the repo, but then import the
installed version, and raise any errors about the installed version, not the one
currently in the repo.

Additionally, this helps users (like me) who have a strange set up where their
home directory (and thus their hg repos) happen to be in a subdirectory of
sys.prefix (which is /usr on my system). Since the '.' entry added to sys.path
takes precedence over the absolute path of $TESTDIR/.. in $PYTHONPATH, the
path to the modules that it imports (and that show up in any stack trace) are
*relative*, meaning that we don't detect them as starting with sys.prefix.

Sample non-test invocation, and the difference this change makes (the path for
'error at <path>:<line>' is correct now)::

Before:

$ python3 contrib/check-py3-compat.py mercurial/win*.py
mercurial/win32.py: error importing: <ValueError> _type_ 'v' not supported (error at check-py3-compat.py:65)
mercurial/windows.py: error importing: <ModuleNotFoundError> No module named 'msvcrt' (error at check-py3-compat.py:65)

After:

$ python3 contrib/check-py3-compat.py mercurial/win*.py
mercurial/win32.py: error importing: <ValueError> _type_ 'v' not supported (error at win32.py:11)
mercurial/windows.py: error importing: <ModuleNotFoundError> No module named 'msvcrt' (error at windows.py:12)

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

spectral created this revision.Jul 24 2020, 8:02 PM
pulkit accepted this revision.Jul 25 2020, 5:25 AM
This revision is now accepted and ready to land.Jul 25 2020, 5:25 AM