diff options
| author | Tarek Ziade <tarek@ziade.org> | 2011-01-29 15:18:54 +0100 |
|---|---|---|
| committer | Tarek Ziade <tarek@ziade.org> | 2011-01-29 15:18:54 +0100 |
| commit | 495a24cc296db63e3e2466871aef278f630b7bf7 (patch) | |
| tree | 77e68a2576e4ba576000f1678c67afad728a0c21 /distutils2/tests | |
| parent | 7eaa6dfc487f946a775c5e72d7f7231420e76b23 (diff) | |
| download | disutils2-495a24cc296db63e3e2466871aef278f630b7bf7.tar.gz | |
split the micro-language for PEP 345 in markers
Diffstat (limited to 'distutils2/tests')
| -rw-r--r-- | distutils2/tests/test_markers.py | 69 | ||||
| -rw-r--r-- | distutils2/tests/test_metadata.py | 53 |
2 files changed, 71 insertions, 51 deletions
diff --git a/distutils2/tests/test_markers.py b/distutils2/tests/test_markers.py new file mode 100644 index 0000000..eb1007c --- /dev/null +++ b/distutils2/tests/test_markers.py @@ -0,0 +1,69 @@ +"""Tests for distutils.metadata.""" +import os +import sys +import platform +from StringIO import StringIO + +from distutils2.markers import interpret +from distutils2.tests import run_unittest, unittest +from distutils2.tests.support import LoggingCatcher, WarningsCatcher + + +class MarkersTestCase(LoggingCatcher, WarningsCatcher, + unittest.TestCase): + + def test_interpret(self): + sys_platform = sys.platform + version = sys.version.split()[0] + os_name = os.name + platform_version = platform.version() + platform_machine = platform.machine() + + self.assertTrue(interpret("sys.platform == '%s'" % sys_platform)) + self.assertTrue(interpret( + "sys.platform == '%s' or python_version == '2.4'" % sys_platform)) + self.assertTrue(interpret( + "sys.platform == '%s' and python_full_version == '%s'" % + (sys_platform, version))) + self.assertTrue(interpret("'%s' == sys.platform" % sys_platform)) + self.assertTrue(interpret('os.name == "%s"' % os_name)) + self.assertTrue(interpret( + 'platform.version == "%s" and platform.machine == "%s"' % + (platform_version, platform_machine))) + + # stuff that need to raise a syntax error + ops = ('os.name == os.name', 'os.name == 2', "'2' == '2'", + 'okpjonon', '', 'os.name ==', 'python_version == 2.4') + for op in ops: + self.assertRaises(SyntaxError, interpret, op) + + # combined operations + OP = 'os.name == "%s"' % os_name + AND = ' and ' + OR = ' or ' + self.assertTrue(interpret(OP + AND + OP)) + self.assertTrue(interpret(OP + AND + OP + AND + OP)) + self.assertTrue(interpret(OP + OR + OP)) + self.assertTrue(interpret(OP + OR + OP + OR + OP)) + + # other operators + self.assertTrue(interpret("os.name != 'buuuu'")) + self.assertTrue(interpret("python_version > '1.0'")) + self.assertTrue(interpret("python_version < '5.0'")) + self.assertTrue(interpret("python_version <= '5.0'")) + self.assertTrue(interpret("python_version >= '1.0'")) + self.assertTrue(interpret("'%s' in os.name" % os_name)) + self.assertTrue(interpret("'buuuu' not in os.name")) + self.assertTrue(interpret( + "'buuuu' not in os.name and '%s' in os.name" % os_name)) + + # execution context + self.assertTrue(interpret('python_version == "0.1"', + {'python_version': '0.1'})) + + +def test_suite(): + return unittest.makeSuite(MarkersTestCase) + +if __name__ == '__main__': + run_unittest(test_suite()) diff --git a/distutils2/tests/test_metadata.py b/distutils2/tests/test_metadata.py index 56b9de1..957b209 100644 --- a/distutils2/tests/test_metadata.py +++ b/distutils2/tests/test_metadata.py @@ -1,10 +1,10 @@ -"""Tests for distutils.command.bdist.""" +"""Tests for distutils.metadata.""" import os import sys import platform from StringIO import StringIO -from distutils2.metadata import (DistributionMetadata, _interpret, +from distutils2.metadata import (DistributionMetadata, PKG_INFO_PREFERRED_VERSION) from distutils2.tests import run_unittest, unittest from distutils2.tests.support import LoggingCatcher, WarningsCatcher @@ -46,55 +46,6 @@ class DistributionMetadataTestCase(LoggingCatcher, WarningsCatcher, self.assertRaises(TypeError, DistributionMetadata, PKG_INFO, mapping=m, fileobj=fp) - def test_interpret(self): - sys_platform = sys.platform - version = sys.version.split()[0] - os_name = os.name - platform_version = platform.version() - platform_machine = platform.machine() - - self.assertTrue(_interpret("sys.platform == '%s'" % sys_platform)) - self.assertTrue(_interpret( - "sys.platform == '%s' or python_version == '2.4'" % sys_platform)) - self.assertTrue(_interpret( - "sys.platform == '%s' and python_full_version == '%s'" % - (sys_platform, version))) - self.assertTrue(_interpret("'%s' == sys.platform" % sys_platform)) - self.assertTrue(_interpret('os.name == "%s"' % os_name)) - self.assertTrue(_interpret( - 'platform.version == "%s" and platform.machine == "%s"' % - (platform_version, platform_machine))) - - # stuff that need to raise a syntax error - ops = ('os.name == os.name', 'os.name == 2', "'2' == '2'", - 'okpjonon', '', 'os.name ==', 'python_version == 2.4') - for op in ops: - self.assertRaises(SyntaxError, _interpret, op) - - # combined operations - OP = 'os.name == "%s"' % os_name - AND = ' and ' - OR = ' or ' - self.assertTrue(_interpret(OP + AND + OP)) - self.assertTrue(_interpret(OP + AND + OP + AND + OP)) - self.assertTrue(_interpret(OP + OR + OP)) - self.assertTrue(_interpret(OP + OR + OP + OR + OP)) - - # other operators - self.assertTrue(_interpret("os.name != 'buuuu'")) - self.assertTrue(_interpret("python_version > '1.0'")) - self.assertTrue(_interpret("python_version < '5.0'")) - self.assertTrue(_interpret("python_version <= '5.0'")) - self.assertTrue(_interpret("python_version >= '1.0'")) - self.assertTrue(_interpret("'%s' in os.name" % os_name)) - self.assertTrue(_interpret("'buuuu' not in os.name")) - self.assertTrue(_interpret( - "'buuuu' not in os.name and '%s' in os.name" % os_name)) - - # execution context - self.assertTrue(_interpret('python_version == "0.1"', - {'python_version': '0.1'})) - def test_metadata_read_write(self): PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO') metadata = DistributionMetadata(PKG_INFO) |
