diff --git a/Lib/packaging/tests/test_support.py b/Lib/packaging/tests/test_support.py --- a/Lib/packaging/tests/test_support.py +++ b/Lib/packaging/tests/test_support.py @@ -70,9 +70,62 @@ if name in files: self.assertFalse(os.path.exists(files[name])) +class TestKwOrder(support.LoggingCatcher, + support.TempdirManager, + unittest.TestCase): + + def test_order_create_dist(self): + from collections import OrderedDict + kw = OrderedDict([('home_page', 'xxx'), + ('author', 'Author'), + ('author_email', 'xxx'), + ('name', 'Project'), + ('version', 'invalid')]) + + if 'name' not in kw: + kw['name'] = 'foo' + tmp_dir = self.mkdtemp() + project_dir = os.path.join(tmp_dir, kw['name']) + os.mkdir(project_dir) + dist = Distribution(attrs=kw) + self.assertIn("'Project': 'invalid' is not a valid version (field" + " 'Version')", self.get_logs()) + + + def test_starstar_order_create_dist(self): + from collections import OrderedDict + kw = OrderedDict([('home_page', 'xxx'), + ('author', 'Author'), + ('author_email', 'xxx'), + ('name', 'Project'), + ('version', 'invalid')]) + + project_dir, dist = self.create_dist(**kw) + self.assertIn("'Project': 'invalid' is not a valid version (field" + " 'Version')", self.get_logs()) + +# +# The following will fail at the first loop (i == 0) or never. +# +# def test_starstar_order_create_dist(self): +# for i in range(100): +# from collections import OrderedDict +# kw = OrderedDict([('home_page', 'xxx'), +# ('author', 'Author'), +# ('author_email', 'xxx'), +# ('name', 'Project'), +# ('version', 'invalid')]) +# +# project_dir, dist = self.create_dist(**kw) +# self.assertIn("'Project': 'invalid' is not a valid version (field" +# " 'Version')", self.get_logs()) + + def test_suite(): - return unittest.makeSuite(TestingSupportTestCase) + suite = unittest.makeSuite(TestingSupportTestCase) + suite.addTest(unittest.makeSuite(TestKwOrder)) + return suite if __name__ == "__main__": unittest.main(defaultTest="test_suite")