summary refs log tree commit diff
path: root/pkgs/development/interpreters/python/tests/test_python.py
blob: f631a172ccc6c755bbadda990e838a9db1d755a8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""
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_NIXENV or 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(sys.version_info.major==2, "Python 2 does not have base_prefix")
    def test_base_prefix(self):
        if IS_VENV:
            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()