mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
improved test coverage for distutils.cmd
This commit is contained in:
parent
abc26603a4
commit
2fdd0d5ab7
2 changed files with 47 additions and 7 deletions
|
@ -214,7 +214,7 @@ class Command:
|
||||||
# and they can be guaranteed that thereafter, self.foo will be
|
# and they can be guaranteed that thereafter, self.foo will be
|
||||||
# a list of strings.
|
# a list of strings.
|
||||||
|
|
||||||
def _ensure_stringlike (self, option, what, default=None):
|
def _ensure_stringlike(self, option, what, default=None):
|
||||||
val = getattr(self, option)
|
val = getattr(self, option)
|
||||||
if val is None:
|
if val is None:
|
||||||
setattr(self, option, default)
|
setattr(self, option, default)
|
||||||
|
@ -224,13 +224,13 @@ class Command:
|
||||||
"'%s' must be a %s (got `%s`)" % (option, what, val)
|
"'%s' must be a %s (got `%s`)" % (option, what, val)
|
||||||
return 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
|
"""Ensure that 'option' is a string; if not defined, set it to
|
||||||
'default'.
|
'default'.
|
||||||
"""
|
"""
|
||||||
self._ensure_stringlike(option, "string", 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
|
"""Ensure that 'option' is a list of strings. If 'option' is
|
||||||
currently a string, we split it either on /,\s*/ or /\s+/, so
|
currently a string, we split it either on /,\s*/ or /\s+/, so
|
||||||
"foo bar baz", "foo,bar,baz", and "foo, bar baz" all become
|
"foo bar baz", "foo,bar,baz", and "foo, bar baz" all become
|
||||||
|
@ -258,20 +258,20 @@ class Command:
|
||||||
(option, val)
|
(option, val)
|
||||||
|
|
||||||
|
|
||||||
def _ensure_tested_string (self, option, tester,
|
def _ensure_tested_string(self, option, tester,
|
||||||
what, error_fmt, default=None):
|
what, error_fmt, default=None):
|
||||||
val = self._ensure_stringlike(option, what, default)
|
val = self._ensure_stringlike(option, what, default)
|
||||||
if val is not None and not tester(val):
|
if val is not None and not tester(val):
|
||||||
raise DistutilsOptionError, \
|
raise DistutilsOptionError, \
|
||||||
("error in '%s' option: " + error_fmt) % (option, val)
|
("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."""
|
"""Ensure that 'option' is the name of an existing file."""
|
||||||
self._ensure_tested_string(option, os.path.isfile,
|
self._ensure_tested_string(option, os.path.isfile,
|
||||||
"filename",
|
"filename",
|
||||||
"'%s' does not exist or is not a file")
|
"'%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,
|
self._ensure_tested_string(option, os.path.isdir,
|
||||||
"directory name",
|
"directory name",
|
||||||
"'%s' does not exist or is not a directory")
|
"'%s' does not exist or is not a directory")
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
"""Tests for distutils.cmd."""
|
"""Tests for distutils.cmd."""
|
||||||
import unittest
|
import unittest
|
||||||
|
import os
|
||||||
|
|
||||||
from distutils.cmd import Command
|
from distutils.cmd import Command
|
||||||
from distutils.dist import Distribution
|
from distutils.dist import Distribution
|
||||||
|
@ -62,6 +63,45 @@ class CommandTestCase(unittest.TestCase):
|
||||||
' option2 = 1']
|
' option2 = 1']
|
||||||
self.assertEquals(msgs, wanted)
|
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():
|
def test_suite():
|
||||||
return unittest.makeSuite(CommandTestCase)
|
return unittest.makeSuite(CommandTestCase)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue