[Python-checkins] r74991 - in python/branches/release31-maint: Lib/distutils/cmd.py Lib/distutils/fancy_getopt.py Lib/distutils/tests/test_cmd.py Lib/distutils/tests/test_core.py Lib/distutils/tests/test_filelist.py Lib/distutils/tests/test_install.py

tarek.ziade python-checkins at python.org
Mon Sep 21 15:10:06 CEST 2009


Author: tarek.ziade
Date: Mon Sep 21 15:10:05 2009
New Revision: 74991

Log:
Merged revisions 74990 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r74990 | tarek.ziade | 2009-09-21 15:01:54 +0200 (Mon, 21 Sep 2009) | 9 lines
  
  Merged revisions 74988 via svnmerge from 
  svn+ssh://pythondev@svn.python.org/python/trunk
  
  ........
    r74988 | tarek.ziade | 2009-09-21 14:19:07 +0200 (Mon, 21 Sep 2009) | 1 line
    
    improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
  ........
................


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/distutils/cmd.py
   python/branches/release31-maint/Lib/distutils/fancy_getopt.py
   python/branches/release31-maint/Lib/distutils/tests/test_cmd.py
   python/branches/release31-maint/Lib/distutils/tests/test_core.py
   python/branches/release31-maint/Lib/distutils/tests/test_filelist.py
   python/branches/release31-maint/Lib/distutils/tests/test_install.py

Modified: python/branches/release31-maint/Lib/distutils/cmd.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/cmd.py	(original)
+++ python/branches/release31-maint/Lib/distutils/cmd.py	Mon Sep 21 15:10:05 2009
@@ -157,7 +157,7 @@
         self.announce(indent + header, level=log.INFO)
         indent = indent + "  "
         for (option, _, _) in self.user_options:
-            option = longopt_xlate(option)
+            option = option.translate(longopt_xlate)
             if option[-1] == "=":
                 option = option[:-1]
             value = getattr(self, option)

Modified: python/branches/release31-maint/Lib/distutils/fancy_getopt.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/fancy_getopt.py	(original)
+++ python/branches/release31-maint/Lib/distutils/fancy_getopt.py	Mon Sep 21 15:10:05 2009
@@ -26,7 +26,7 @@
 
 # This is used to translate long options to legitimate Python identifiers
 # (for use as attributes of some object).
-longopt_xlate = lambda s: s.replace('-', '_')
+longopt_xlate = str.maketrans('-', '_')
 
 class FancyGetopt:
     """Wrapper around the standard 'getopt()' module that provides some
@@ -107,7 +107,7 @@
         """Translate long option name 'long_option' to the form it
         has as an attribute of some object: ie., translate hyphens
         to underscores."""
-        return longopt_xlate(long_option)
+        return long_option.translate(longopt_xlate)
 
     def _check_alias_dict(self, aliases, what):
         assert isinstance(aliases, dict)
@@ -432,7 +432,7 @@
     """Convert a long option name to a valid Python identifier by
     changing "-" to "_".
     """
-    return longopt_xlate(opt)
+    return opt.translate(longopt_xlate)
 
 
 class OptionDummy:

Modified: python/branches/release31-maint/Lib/distutils/tests/test_cmd.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_cmd.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_cmd.py	Mon Sep 21 15:10:05 2009
@@ -1,10 +1,12 @@
 """Tests for distutils.cmd."""
 import unittest
 import os
+from test.support import captured_stdout
 
 from distutils.cmd import Command
 from distutils.dist import Distribution
 from distutils.errors import DistutilsOptionError
+from distutils import debug
 
 class MyCmd(Command):
     def initialize_options(self):
@@ -102,6 +104,22 @@
         cmd.option2 = 'xxx'
         self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2')
 
+    def test_debug_print(self):
+        cmd = self.cmd
+        with captured_stdout() as stdout:
+            cmd.debug_print('xxx')
+        stdout.seek(0)
+        self.assertEquals(stdout.read(), '')
+
+        debug.DEBUG = True
+        try:
+            with captured_stdout() as stdout:
+                cmd.debug_print('xxx')
+            stdout.seek(0)
+            self.assertEquals(stdout.read(), 'xxx\n')
+        finally:
+            debug.DEBUG = False
+
 def test_suite():
     return unittest.makeSuite(CommandTestCase)
 

Modified: python/branches/release31-maint/Lib/distutils/tests/test_core.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_core.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_core.py	Mon Sep 21 15:10:05 2009
@@ -6,6 +6,7 @@
 import shutil
 import sys
 import test.support
+from test.support import captured_stdout
 import unittest
 
 
@@ -33,10 +34,12 @@
     def setUp(self):
         self.old_stdout = sys.stdout
         self.cleanup_testfn()
+        self.old_argv = sys.argv[:]
 
     def tearDown(self):
         sys.stdout = self.old_stdout
         self.cleanup_testfn()
+        sys.argv = self.old_argv[:]
 
     def cleanup_testfn(self):
         path = test.support.TESTFN
@@ -73,6 +76,23 @@
             output = output[:-1]
         self.assertEqual(cwd, output)
 
+    def test_debug_mode(self):
+        # this covers the code called when DEBUG is set
+        sys.argv = ['setup.py', '--name']
+        with captured_stdout() as stdout:
+            distutils.core.setup(name='bar')
+        stdout.seek(0)
+        self.assertEquals(stdout.read(), 'bar\n')
+
+        distutils.core.DEBUG = True
+        try:
+            with captured_stdout() as stdout:
+                distutils.core.setup(name='bar')
+        finally:
+            distutils.core.DEBUG = False
+        stdout.seek(0)
+        wanted = "options (after parsing config files):\n"
+        self.assertEquals(stdout.readlines()[0], wanted)
 
 def test_suite():
     return unittest.makeSuite(CoreTestCase)

Modified: python/branches/release31-maint/Lib/distutils/tests/test_filelist.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_filelist.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_filelist.py	Mon Sep 21 15:10:05 2009
@@ -1,6 +1,9 @@
 """Tests for distutils.filelist."""
 import unittest
-from distutils.filelist import glob_to_re
+
+from distutils.filelist import glob_to_re, FileList
+from test.support import captured_stdout
+from distutils import debug
 
 class FileListTestCase(unittest.TestCase):
 
@@ -16,6 +19,22 @@
         self.assertEquals(glob_to_re('foo????'), r'foo[^/][^/][^/][^/]$')
         self.assertEquals(glob_to_re(r'foo\\??'), r'foo\\\\[^/][^/]$')
 
+    def test_debug_print(self):
+        file_list = FileList()
+        with captured_stdout() as stdout:
+            file_list.debug_print('xxx')
+        stdout.seek(0)
+        self.assertEquals(stdout.read(), '')
+
+        debug.DEBUG = True
+        try:
+            with captured_stdout() as stdout:
+                file_list.debug_print('xxx')
+            stdout.seek(0)
+            self.assertEquals(stdout.read(), 'xxx\n')
+        finally:
+            debug.DEBUG = False
+
 def test_suite():
     return unittest.makeSuite(FileListTestCase)
 

Modified: python/branches/release31-maint/Lib/distutils/tests/test_install.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/tests/test_install.py	(original)
+++ python/branches/release31-maint/Lib/distutils/tests/test_install.py	Mon Sep 21 15:10:05 2009
@@ -6,6 +6,8 @@
 import unittest
 import site
 
+from test.support import captured_stdout
+
 from distutils.command.install import install
 from distutils.command import install as install_module
 from distutils.command.install import INSTALL_SCHEMES
@@ -14,7 +16,6 @@
 
 from distutils.tests import support
 
-
 class InstallTestCase(support.TempdirManager,
                       support.LoggingSilencer,
                       unittest.TestCase):
@@ -183,6 +184,17 @@
         with open(cmd.record) as f:
             self.assertEquals(len(f.readlines()), 1)
 
+    def test_debug_mode(self):
+        # this covers the code called when DEBUG is set
+        old_logs_len = len(self.logs)
+        install_module.DEBUG = True
+        try:
+            with captured_stdout() as stdout:
+                self.test_record()
+        finally:
+            install_module.DEBUG = False
+        self.assertTrue(len(self.logs) > old_logs_len)
+
 def test_suite():
     return unittest.makeSuite(InstallTestCase)
 


More information about the Python-checkins mailing list