improved test coverage for distutils.cmd
This commit is contained in:
parent
abc26603a4
commit
2fdd0d5ab7
|
@ -214,7 +214,7 @@ class Command:
|
|||
# and they can be guaranteed that thereafter, self.foo will be
|
||||
# a list of strings.
|
||||
|
||||
def _ensure_stringlike (self, option, what, default=None):
|
||||
def _ensure_stringlike(self, option, what, default=None):
|
||||
val = getattr(self, option)
|
||||
if val is None:
|
||||
setattr(self, option, default)
|
||||
|
@ -224,13 +224,13 @@ class Command:
|
|||
"'%s' must be a %s (got `%s`)" % (option, what, val)
|
||||
return val
|
||||
|
||||
def ensure_string (self, option, default=None):
|
||||
def ensure_string(self, option, default=None):
|
||||
"""Ensure that 'option' is a string; if not defined, set it to
|
||||
'default'.
|
||||
"""
|
||||
self._ensure_stringlike(option, "string", default)
|
||||
|
||||
def ensure_string_list (self, option):
|
||||
def ensure_string_list(self, option):
|
||||
"""Ensure that 'option' is a list of strings. If 'option' is
|
||||
currently a string, we split it either on /,\s*/ or /\s+/, so
|
||||
"foo bar baz", "foo,bar,baz", and "foo, bar baz" all become
|
||||
|
@ -258,20 +258,20 @@ class Command:
|
|||
(option, val)
|
||||
|
||||
|
||||
def _ensure_tested_string (self, option, tester,
|
||||
what, error_fmt, default=None):
|
||||
def _ensure_tested_string(self, option, tester,
|
||||
what, error_fmt, default=None):
|
||||
val = self._ensure_stringlike(option, what, default)
|
||||
if val is not None and not tester(val):
|
||||
raise DistutilsOptionError, \
|
||||
("error in '%s' option: " + error_fmt) % (option, val)
|
||||
|
||||
def ensure_filename (self, option):
|
||||
def ensure_filename(self, option):
|
||||
"""Ensure that 'option' is the name of an existing file."""
|
||||
self._ensure_tested_string(option, os.path.isfile,
|
||||
"filename",
|
||||
"'%s' does not exist or is not a file")
|
||||
|
||||
def ensure_dirname (self, option):
|
||||
def ensure_dirname(self, option):
|
||||
self._ensure_tested_string(option, os.path.isdir,
|
||||
"directory name",
|
||||
"'%s' does not exist or is not a directory")
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
"""Tests for distutils.cmd."""
|
||||
import unittest
|
||||
import os
|
||||
|
||||
from distutils.cmd import Command
|
||||
from distutils.dist import Distribution
|
||||
|
@ -62,6 +63,45 @@ class CommandTestCase(unittest.TestCase):
|
|||
' option2 = 1']
|
||||
self.assertEquals(msgs, wanted)
|
||||
|
||||
def test_ensure_string(self):
|
||||
cmd = self.cmd
|
||||
cmd.option1 = 'ok'
|
||||
cmd.ensure_string('option1')
|
||||
|
||||
cmd.option2 = None
|
||||
cmd.ensure_string('option2', 'xxx')
|
||||
self.assert_(hasattr(cmd, 'option2'))
|
||||
|
||||
cmd.option3 = 1
|
||||
self.assertRaises(DistutilsOptionError, cmd.ensure_string, 'option3')
|
||||
|
||||
def test_ensure_string_list(self):
|
||||
cmd = self.cmd
|
||||
cmd.option1 = 'ok,dok'
|
||||
cmd.ensure_string_list('option1')
|
||||
self.assertEquals(cmd.option1, ['ok', 'dok'])
|
||||
|
||||
cmd.option2 = ['xxx', 'www']
|
||||
cmd.ensure_string_list('option2')
|
||||
|
||||
cmd.option3 = ['ok', 2]
|
||||
self.assertRaises(DistutilsOptionError, cmd.ensure_string_list,
|
||||
'option3')
|
||||
|
||||
def test_ensure_filename(self):
|
||||
cmd = self.cmd
|
||||
cmd.option1 = __file__
|
||||
cmd.ensure_filename('option1')
|
||||
cmd.option2 = 'xxx'
|
||||
self.assertRaises(DistutilsOptionError, cmd.ensure_filename, 'option2')
|
||||
|
||||
def test_ensure_dirname(self):
|
||||
cmd = self.cmd
|
||||
cmd.option1 = os.path.dirname(__file__)
|
||||
cmd.ensure_dirname('option1')
|
||||
cmd.option2 = 'xxx'
|
||||
self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2')
|
||||
|
||||
def test_suite():
|
||||
return unittest.makeSuite(CommandTestCase)
|
||||
|
||||
|
|
Loading…
Reference in New Issue