Commit 7f0b8ac0 authored by Tarek Ziadé's avatar Tarek Ziadé

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

parent bd73f62c
......@@ -7,8 +7,7 @@ in the distutils.command package.
__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 @@ class Command:
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 @@ class Command:
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):
......
"""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())
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment