aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/interpreters/python/tests/test_environments/test_python.py
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/python/tests/test_environments/test_python.py')
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/tests/test_environments/test_python.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/python/tests/test_environments/test_python.py b/nixpkgs/pkgs/development/interpreters/python/tests/test_environments/test_python.py
new file mode 100644
index 00000000000..0fc4b8a9e91
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python/tests/test_environments/test_python.py
@@ -0,0 +1,55 @@
+"""
+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_VIRTUALENV = @is_virtualenv@
+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 or IS_VIRTUALENV:
+ self.assertNotEqual(sys.prefix, sys.base_prefix)
+ else:
+ self.assertEqual(sys.prefix, sys.base_prefix)
+
+ @unittest.skipIf(sys.version_info.major==3, "sys.real_prefix is only set by virtualenv in case of Python 2.")
+ def test_real_prefix(self):
+ self.assertTrue(hasattr(sys, "real_prefix") == IS_VIRTUALENV)
+
+ def test_python_version(self):
+ self.assertTrue(platform.python_version().startswith(PYTHON_VERSION))
+
+
+if __name__ == "__main__":
+ unittest.main()