[Python-checkins] r69360 - in python/trunk/Lib/distutils: cmd.py tests/test_cmd.py

tarek.ziade python-checkins at python.org
Fri Feb 6 09:55:24 CET 2009


Author: tarek.ziade
Date: Fri Feb  6 09:55:23 2009
New Revision: 69360

Log:
removed types usage and added test coverage (work for #3986)

Added:
   python/trunk/Lib/distutils/tests/test_cmd.py   (contents, props changed)
Modified:
   python/trunk/Lib/distutils/cmd.py

Modified: python/trunk/Lib/distutils/cmd.py
==============================================================================
--- python/trunk/Lib/distutils/cmd.py	(original)
+++ python/trunk/Lib/distutils/cmd.py	Fri Feb  6 09:55:23 2009
@@ -7,8 +7,7 @@
 __revision__ = "$Id$"
 
 import sys, os, string, re
-from types import *
-from distutils.errors import *
+from distutils.errors import DistutilsOptionError
 from distutils import util, dir_util, file_util, archive_util, dep_util
 from distutils import log
 
@@ -220,7 +219,7 @@
         if val is None:
             setattr(self, option, default)
             return default
-        elif type(val) is not StringType:
+        elif not isinstance(val, str):
             raise DistutilsOptionError, \
                   "'%s' must be a %s (got `%s`)" % (option, what, val)
         return val
@@ -240,19 +239,24 @@
         val = getattr(self, option)
         if val is None:
             return
-        elif type(val) is StringType:
+        elif isinstance(val, str):
             setattr(self, option, re.split(r',\s*|\s+', val))
         else:
-            if type(val) is ListType:
-                types = map(type, val)
-                ok = (types == [StringType] * len(val))
+            if isinstance(val, list):
+                # checks if all elements are str
+                ok = 1
+                for element in val:
+                    if not isinstance(element, str):
+                        ok = 0
+                        break
             else:
                 ok = 0
 
             if not ok:
                 raise DistutilsOptionError, \
-                      "'%s' must be a list of strings (got %r)" % \
-                      (option, val)
+                    "'%s' must be a list of strings (got %r)" % \
+                        (option, val)
+
 
     def _ensure_tested_string (self, option, tester,
                                what, error_fmt, default=None):

Added: python/trunk/Lib/distutils/tests/test_cmd.py
==============================================================================
--- (empty file)
+++ python/trunk/Lib/distutils/tests/test_cmd.py	Fri Feb  6 09:55:23 2009
@@ -0,0 +1,38 @@
+"""Tests for distutils.cmd."""
+import unittest
+
+from distutils.cmd import Command
+from distutils.dist import Distribution
+from distutils.errors import DistutilsOptionError
+
+class CommandTestCase(unittest.TestCase):
+
+    def test_ensure_string_list(self):
+
+        class MyCmd(Command):
+
+            def initialize_options(self):
+                pass
+
+        dist = Distribution()
+        cmd = MyCmd(dist)
+
+        cmd.not_string_list = ['one', 2, 'three']
+        cmd.yes_string_list = ['one', 'two', 'three']
+        cmd.not_string_list2 = object()
+        cmd.yes_string_list2 = 'ok'
+
+        cmd.ensure_string_list('yes_string_list')
+        cmd.ensure_string_list('yes_string_list2')
+
+        self.assertRaises(DistutilsOptionError,
+                          cmd.ensure_string_list, 'not_string_list')
+
+        self.assertRaises(DistutilsOptionError,
+                          cmd.ensure_string_list, 'not_string_list2')
+
+def test_suite():
+    return unittest.makeSuite(CommandTestCase)
+
+if __name__ == '__main__':
+    test_support.run_unittest(test_suite())


More information about the Python-checkins mailing list