forked from mirrors/nixpkgs
7447fff95a
The prefix will now be correct in case of Nix env. Note, however, that creating a venv from a Nix env still does not function. This does not seem to be possible with the current approach either, because venv will copy or symlink our Python wrapper. In case it symlinks (the default) it won't see a pyvenv.cfg. If it is copied I think it should function but it does not...
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""
|
|
Python interpreter and environment tests.
|
|
|
|
These need to be executed with the standard library unittest.
|
|
Third party test runners such as pytest cannot be used because
|
|
that would interfere with the tests.
|
|
"""
|
|
|
|
import platform
|
|
import sys
|
|
import unittest
|
|
import site
|
|
|
|
|
|
ENV = "@env@"
|
|
INTERPRETER = "@interpreter@"
|
|
PYTHON_VERSION = "@pythonVersion@"
|
|
|
|
IS_VENV = @is_venv@
|
|
IS_NIXENV = @is_nixenv@
|
|
IS_PYPY = platform.python_implementation() == "PyPy"
|
|
|
|
|
|
class TestCasePython(unittest.TestCase):
|
|
|
|
@unittest.skipIf(IS_PYPY, "Executable is incorrect and needs to be fixed.")
|
|
def test_interpreter(self):
|
|
self.assertEqual(sys.executable, INTERPRETER)
|
|
|
|
@unittest.skipIf(IS_PYPY, "Prefix is incorrect and needs to be fixed.")
|
|
def test_prefix(self):
|
|
self.assertEqual(sys.prefix, ENV)
|
|
self.assertEqual(sys.prefix, sys.exec_prefix)
|
|
|
|
def test_site_prefix(self):
|
|
self.assertTrue(sys.prefix in site.PREFIXES)
|
|
|
|
@unittest.skipIf(IS_PYPY or sys.version_info.major==2, "Python 2 does not have base_prefix")
|
|
def test_base_prefix(self):
|
|
if IS_VENV or IS_NIXENV:
|
|
self.assertNotEqual(sys.prefix, sys.base_prefix)
|
|
else:
|
|
self.assertEqual(sys.prefix, sys.base_prefix)
|
|
|
|
def test_python_version(self):
|
|
self.assertTrue(platform.python_version().startswith(PYTHON_VERSION))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|