ยปCore Development>Code coverage>Lib/packaging/tests/test_markers.py

Python code coverage for Lib/packaging/tests/test_markers.py

#countcontent
1n/a"""Tests for packaging.markers."""
2n/aimport os
3n/aimport sys
4n/aimport platform
5n/afrom packaging.markers import interpret
6n/a
7n/afrom packaging.tests import unittest
8n/afrom packaging.tests.support import LoggingCatcher
9n/a
10n/a
11n/aclass MarkersTestCase(LoggingCatcher,
12n/a unittest.TestCase):
13n/a
14n/a def test_interpret(self):
15n/a sys_platform = sys.platform
16n/a version = sys.version.split()[0]
17n/a os_name = os.name
18n/a platform_version = platform.version()
19n/a platform_machine = platform.machine()
20n/a platform_python_implementation = platform.python_implementation()
21n/a
22n/a self.assertTrue(interpret("sys.platform == '%s'" % sys_platform))
23n/a self.assertTrue(interpret(
24n/a "sys.platform == '%s' and python_full_version == '%s'" %
25n/a (sys_platform, version)))
26n/a self.assertTrue(interpret("'%s' == sys.platform" % sys_platform))
27n/a self.assertTrue(interpret('os.name == "%s"' % os_name))
28n/a self.assertTrue(interpret(
29n/a 'platform.version == "%s" and platform.machine == "%s"' %
30n/a (platform_version, platform_machine)))
31n/a self.assertTrue(interpret('platform.python_implementation == "%s"' %
32n/a platform_python_implementation))
33n/a
34n/a # stuff that need to raise a syntax error
35n/a ops = ('os.name == os.name', 'os.name == 2', "'2' == '2'",
36n/a 'okpjonon', '', 'os.name ==', 'python_version == 2.4')
37n/a for op in ops:
38n/a self.assertRaises(SyntaxError, interpret, op)
39n/a
40n/a # combined operations
41n/a OP = 'os.name == "%s"' % os_name
42n/a FALSEOP = 'os.name == "buuuu"'
43n/a AND = ' and '
44n/a OR = ' or '
45n/a self.assertTrue(interpret(OP + AND + OP))
46n/a self.assertTrue(interpret(OP + AND + OP + AND + OP))
47n/a self.assertTrue(interpret(OP + OR + OP))
48n/a self.assertTrue(interpret(OP + OR + FALSEOP))
49n/a self.assertTrue(interpret(OP + OR + OP + OR + FALSEOP))
50n/a self.assertTrue(interpret(OP + OR + FALSEOP + OR + FALSEOP))
51n/a self.assertTrue(interpret(FALSEOP + OR + OP))
52n/a self.assertFalse(interpret(FALSEOP + AND + FALSEOP))
53n/a self.assertFalse(interpret(FALSEOP + OR + FALSEOP))
54n/a
55n/a # other operators
56n/a self.assertTrue(interpret("os.name != 'buuuu'"))
57n/a self.assertTrue(interpret("python_version > '1.0'"))
58n/a self.assertTrue(interpret("python_version < '5.0'"))
59n/a self.assertTrue(interpret("python_version <= '5.0'"))
60n/a self.assertTrue(interpret("python_version >= '1.0'"))
61n/a self.assertTrue(interpret("'%s' in os.name" % os_name))
62n/a self.assertTrue(interpret("'buuuu' not in os.name"))
63n/a self.assertTrue(interpret(
64n/a "'buuuu' not in os.name and '%s' in os.name" % os_name))
65n/a
66n/a # execution context
67n/a self.assertTrue(interpret('python_version == "0.1"',
68n/a {'python_version': '0.1'}))
69n/a
70n/a
71n/adef test_suite():
72n/a return unittest.makeSuite(MarkersTestCase)
73n/a
74n/aif __name__ == '__main__':
75n/a unittest.main(defaultTest='test_suite')