diff options
author | Rémi Cardona <remi.cardona@logilab.fr> | 2015-06-29 19:16:21 +0200 |
---|---|---|
committer | Rémi Cardona <remi.cardona@logilab.fr> | 2015-06-29 19:16:21 +0200 |
commit | dabff316576806fcd84c2dcff34b7c9e3aa3d4bc (patch) | |
tree | d268afc204792f5770a37d7103d2642ffdd56ac0 /test | |
parent | 8caa4d6ad334e64ca78ab24b709b7763eb54e8d8 (diff) | |
download | logilab-common-dabff316576806fcd84c2dcff34b7c9e3aa3d4bc.tar.gz |
[test] Fix modutils tests when running inside a python 3 virtualenv (closes #294756)
Virtualenv symlinks a bunch of stdlib modules which confuse
modutils.is_standard_module. The better way would obviously be to fix
modutils to properly detect virtualenvs, but life is too short.
As for why virtualenv actually needs to symlink a good chunk of the
stdlib, anyone's guess is as good as mine. Here's the upstream commit
that added hashlib.py to the list of needed symlinks:
https://github.com/pypa/virtualenv/commit/10ba3f3cc0d7a254dd72e2bb9557006da2f85e00#diff-7e83770aa980bd4327db90f4eafeffdfR126
And for the record, 'venv' (the virtualenv-lookalike shipped since
python 3.3) does not do _any_ symlink to stdlib modules.
Diffstat (limited to 'test')
-rw-r--r-- | test/unittest_modutils.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/test/unittest_modutils.py b/test/unittest_modutils.py index 76741c8..dfed2ff 100644 --- a/test/unittest_modutils.py +++ b/test/unittest_modutils.py @@ -206,11 +206,14 @@ class is_standard_module_tc(ModutilsTestCase): def test_4(self): self.assertEqual(modutils.is_standard_module('marshal'), True) - self.assertEqual(modutils.is_standard_module('hashlib'), True) self.assertEqual(modutils.is_standard_module('pickle'), True) self.assertEqual(modutils.is_standard_module('email'), True) - self.assertEqual(modutils.is_standard_module('io'), True) self.assertEqual(modutils.is_standard_module('StringIO'), sys.version_info < (3, 0)) + venv_py3 = sys.version_info[0] >= 3 and hasattr(sys, 'real_prefix') + if not venv_py3: + # those modules are symlinked by virtualenv (but not by python's venv) + self.assertEqual(modutils.is_standard_module('hashlib'), True) + self.assertEqual(modutils.is_standard_module('io'), True) def test_custom_path(self): self.assertEqual(modutils.is_standard_module('data.module', (DATADIR,)), True) |