diff -r 58bd6a58365d Lib/packaging/tests/test_support.py --- a/Lib/packaging/tests/test_support.py Wed Feb 08 04:09:37 2012 +0100 +++ b/Lib/packaging/tests/test_support.py Wed Feb 08 19:02:55 2012 +0100 @@ -1,23 +1,38 @@ import os +import logging import tempfile +from packaging import logger from packaging.dist import Distribution from packaging.tests import support, unittest + +def run_test(tester, test): + tester.setUp() + try: + getattr(tester, test)() + finally: + tester.tearDown() + + class TestingSupportTestCase(unittest.TestCase): def test_fake_dec(self): @support.fake_dec(1, 2, k=3) def func(arg0, *args, **kargs): return arg0, args, kargs - self.assertEqual(func(-1, -2, k=-3), (-1, (-2,), {'k': -3})) + self.assertEqual(func(-1, -2, k= -3), (-1, (-2,), {'k':-3})) def test_TempdirManager(self): files = {} class Tester(support.TempdirManager, unittest.TestCase): + def runTest(self2): + # This method is needed for back portability + pass + def test_mktempfile(self2): tmpfile = self2.mktempfile() files['test_mktempfile'] = tmpfile.name @@ -60,16 +75,93 @@ for name in ('test_mktempfile', 'test_mkdtemp', 'test_write_file', 'test_create_dist', 'test_assertIsFile', 'test_assertIsNotFile'): - tester.setUp() - try: - getattr(tester, name)() - finally: - tester.tearDown() + + run_test(tester, name) # check clean-up if name in files: self.assertFalse(os.path.exists(files[name])) + def test_EnvironRestorer(self): + + # Take the some existing environment key + envlst = list(os.environ) + firstEnv = None + if envlst: + firstEnv = envlst[0] + + class Tester(support.EnvironRestorer, unittest.TestCase): + + # Keys to restore + restore_environ = ['NO_KEY_42'] + if firstEnv: + restore_environ.append(firstEnv) + + # Manipulate the keys here + def runTest(self2): + os.environ['NO_KEY_42'] = '42' + if firstEnv: + os.environ[firstEnv] = 'test_EnvironRestorer' + + # make book keeping and run tester + if firstEnv: + saved_pythonpath = os.environ[firstEnv] + tester = Tester() + run_test(tester, 'runTest') + + # check the environment for changes + self.assert_('NO_KEY_42' not in os.environ) + if firstEnv: + self.assertEqual(saved_pythonpath, os.environ[firstEnv]) + + + def test_LoggingCatcher(self): + + class Tester(support.LoggingCatcher, unittest.TestCase): + + def runTest(self2): + self.assertFalse(self2.loghandler.shouldFlush()) + logger.debug('debug_msg') + logger.info('info_msg') + logger.warn('warn_msg') + logger.error('error_msg') + logger.critical('critical_msg') + + # Lowest level is DEBUG + self.assertEqual( + self2.get_logs(level=logging.DEBUG, flush=False), + ['debug_msg']) + + # Default is WARNING + self.assertEqual(self2.get_logs(flush=False), ['warn_msg']) + + # The other levels + self.assertEqual( + self2.get_logs(level=logging.INFO, flush=False), + ['info_msg']) + self.assertEqual( + self2.get_logs(level=logging.ERROR, flush=False), + ['error_msg']) + self.assertEqual( + self2.get_logs(level=logging.CRITICAL, flush=False), + ['critical_msg']) + + # check flush (from longhandler and get_logs) + self2.loghandler.flush() + logger.warn('warn_message_2') + logger.info('info_message_2') + self.assertEqual(self2.get_logs(), ['warn_message_2']) + self.assertEqual(self2.get_logs(level=logging.INFO), []) + + tester = Tester() + run_test(tester, 'runTest') + + def test_DummyCommand(self): + cmd = support.DummyCommand(attrFoo='Foo', attr42=42) + cmd.ensure_finalized() + self.assertEqual(cmd.attrFoo, 'Foo') + self.assertEqual(cmd.attr42, 42) + def test_suite(): return unittest.makeSuite(TestingSupportTestCase)