D5798: py3: account for demand import difference between Python versions
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Sat Feb 2 01:17:18 UTC 2019
indygreg created this revision.
Herald added subscribers: mercurial-devel, mjpieters.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Our lazy importer for Python 3 will validate that modules are
loadable before returning a stub module object. This is different
from Python 2, which will always return a stub module object.
While we could change behavior of the Python 3 demand importer,
that seems like a problem for another day.
This commit teaches test-extension.t about that difference in
behavior.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5798
AFFECTED FILES
tests/test-extension.t
CHANGE DETAILS
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -610,7 +610,8 @@
> cmdtable = {}
> command = registrar.command(cmdtable)
>
- > # demand import avoids failure of importing notexist here
+ > # demand import avoids failure of importing notexist here, but only on
+ > # Python 2.
> import extlibroot.lsub1.lsub2.notexist
>
> @command(b'checkrelativity', [], norepo=True)
@@ -622,7 +623,13 @@
> pass # intentional failure
> NO_CHECK_EOF
- $ (PYTHONPATH=${PYTHONPATH}${PATHSEP}${TESTTMP}; hg --config extensions.checkrelativity=$TESTTMP/checkrelativity.py checkrelativity)
+Python 3's lazy importer verifies modules exist before returning the lazy
+module stub. Our custom lazy importer for Python 2 always returns a stub.
+
+ $ (PYTHONPATH=${PYTHONPATH}${PATHSEP}${TESTTMP}; hg --config extensions.checkrelativity=$TESTTMP/checkrelativity.py checkrelativity) || true
+ *** failed to import extension checkrelativity from $TESTTMP/checkrelativity.py: No module named 'extlibroot.lsub1.lsub2.notexist' (py3 !)
+ hg: unknown command 'checkrelativity' (py3 !)
+ (use 'hg help' for a list of commands) (py3 !)
#endif
To: indygreg, #hg-reviewers
Cc: mjpieters, mercurial-devel
More information about the Mercurial-devel
mailing list