From 016828d119f506e83d9935266baba64ff8849f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarek=20Ziad=C3=A9?= Date: Sun, 17 May 2009 10:44:12 +0000 Subject: [PATCH] removed sys.platform == 'mac' support in distutils.dist.parse_command_line and improved test coverage --- Lib/distutils/dist.py | 6 ---- Lib/distutils/tests/test_dist.py | 58 +++++++++++++++++++++----------- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py index 0c77f85e7b3..93325b97209 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -414,11 +414,6 @@ Common commands: (see '--help-commands' for more) # that allows the user to interactively specify the "command line". # toplevel_options = self._get_toplevel_options() - if sys.platform == 'mac': - import EasyDialogs - cmdlist = self.get_command_list() - self.script_args = EasyDialogs.GetArgv( - toplevel_options + self.display_options, cmdlist) # We have to parse the command line a bit at a time -- global # options, then the first command, then its options, and so on -- @@ -438,7 +433,6 @@ Common commands: (see '--help-commands' for more) # for display options we return immediately if self.handle_display_options(option_order): return - while args: args = self._parse_command_opts(parser, args) if args is None: # user asked for help (and got it) diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py index 3304790b51f..49230c54c00 100644 --- a/Lib/distutils/tests/test_dist.py +++ b/Lib/distutils/tests/test_dist.py @@ -1,19 +1,19 @@ # -*- coding: latin-1 -*- """Tests for distutils.dist.""" - -import distutils.cmd -import distutils.dist import os import StringIO import sys import unittest import warnings -from test.test_support import TESTFN +from distutils.dist import Distribution, fix_help_options +from distutils.cmd import Command + +from test.test_support import TESTFN, captured_stdout from distutils.tests import support -class test_dist(distutils.cmd.Command): +class test_dist(Command): """Sample distutils extension command.""" user_options = [ @@ -24,7 +24,7 @@ class test_dist(distutils.cmd.Command): self.sample_option = None -class TestDistribution(distutils.dist.Distribution): +class TestDistribution(Distribution): """Distribution subclasses that avoids the default search for configuration files. @@ -104,7 +104,7 @@ class DistributionTestCase(support.TempdirManager, unittest.TestCase): # Check DistributionMetadata handling of Unicode fields tmp_dir = self.mkdtemp() my_file = os.path.join(tmp_dir, 'f') - klass = distutils.dist.Distribution + klass = Distribution dist = klass(attrs={'author': u'Mister Café', 'name': 'my.package', @@ -131,7 +131,7 @@ class DistributionTestCase(support.TempdirManager, unittest.TestCase): def test_empty_options(self): # an empty options dictionary should not stay in the # list of attributes - klass = distutils.dist.Distribution + klass = Distribution # catching warnings warns = [] @@ -157,7 +157,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, def test_simple_metadata(self): attrs = {"name": "package", "version": "1.0"} - dist = distutils.dist.Distribution(attrs) + dist = Distribution(attrs) meta = self.format_metadata(dist) self.assert_("Metadata-Version: 1.0" in meta) self.assert_("provides:" not in meta.lower()) @@ -168,7 +168,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, attrs = {"name": "package", "version": "1.0", "provides": ["package", "package.sub"]} - dist = distutils.dist.Distribution(attrs) + dist = Distribution(attrs) self.assertEqual(dist.metadata.get_provides(), ["package", "package.sub"]) self.assertEqual(dist.get_provides(), @@ -179,8 +179,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, self.assert_("obsoletes:" not in meta.lower()) def test_provides_illegal(self): - self.assertRaises(ValueError, - distutils.dist.Distribution, + self.assertRaises(ValueError, Distribution, {"name": "package", "version": "1.0", "provides": ["my.pkg (splat)"]}) @@ -189,7 +188,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, attrs = {"name": "package", "version": "1.0", "requires": ["other", "another (==1.0)"]} - dist = distutils.dist.Distribution(attrs) + dist = Distribution(attrs) self.assertEqual(dist.metadata.get_requires(), ["other", "another (==1.0)"]) self.assertEqual(dist.get_requires(), @@ -202,8 +201,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, self.assert_("obsoletes:" not in meta.lower()) def test_requires_illegal(self): - self.assertRaises(ValueError, - distutils.dist.Distribution, + self.assertRaises(ValueError, Distribution, {"name": "package", "version": "1.0", "requires": ["my.pkg (splat)"]}) @@ -212,7 +210,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, attrs = {"name": "package", "version": "1.0", "obsoletes": ["other", "another (<1.0)"]} - dist = distutils.dist.Distribution(attrs) + dist = Distribution(attrs) self.assertEqual(dist.metadata.get_obsoletes(), ["other", "another (<1.0)"]) self.assertEqual(dist.get_obsoletes(), @@ -225,8 +223,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, self.assert_("Obsoletes: another (<1.0)" in meta) def test_obsoletes_illegal(self): - self.assertRaises(ValueError, - distutils.dist.Distribution, + self.assertRaises(ValueError, Distribution, {"name": "package", "version": "1.0", "obsoletes": ["my.pkg (splat)"]}) @@ -251,7 +248,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, f.close() try: - dist = distutils.dist.Distribution() + dist = Distribution() # linux-style if sys.platform in ('linux', 'darwin'): @@ -269,6 +266,29 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, finally: os.remove(user_filename) + def test_fix_help_options(self): + help_tuples = [('a', 'b', 'c', 'd'), (1, 2, 3, 4)] + fancy_options = fix_help_options(help_tuples) + self.assertEquals(fancy_options[0], ('a', 'b', 'c')) + self.assertEquals(fancy_options[1], (1, 2, 3)) + + def test_show_help(self): + # smoke test, just makes sure some help is displayed + dist = Distribution() + old_argv = sys.argv + sys.argv = [] + try: + dist.help = 1 + dist.script_name = 'setup.py' + with captured_stdout() as s: + dist.parse_command_line() + finally: + sys.argv = old_argv + + output = [line for line in s.getvalue().split('\n') + if line.strip() != ''] + self.assert_(len(output) > 0) + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(DistributionTestCase))