mirror of
https://github.com/python/cpython.git
synced 2025-07-26 04:34:20 +00:00

I need this for some tests, and it makes code clearer. This commit also changes some assertEqual calls to use (actual, expected) order and fix some pyflakes warnings.
102 lines
3.2 KiB
Python
102 lines
3.2 KiB
Python
"""Tests for distutils.cmd."""
|
|
import os
|
|
import logging
|
|
|
|
from packaging.command.cmd import Command
|
|
from packaging.dist import Distribution
|
|
from packaging.errors import PackagingOptionError
|
|
from packaging.tests import support, unittest
|
|
|
|
|
|
class MyCmd(Command):
|
|
def initialize_options(self):
|
|
pass
|
|
|
|
|
|
class CommandTestCase(support.LoggingCatcher,
|
|
unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
super(CommandTestCase, self).setUp()
|
|
dist = Distribution()
|
|
self.cmd = MyCmd(dist)
|
|
|
|
def test_make_file(self):
|
|
cmd = self.cmd
|
|
|
|
# making sure it raises when infiles is not a string or a list/tuple
|
|
self.assertRaises(TypeError, cmd.make_file,
|
|
infiles=1, outfile='', func='func', args=())
|
|
|
|
# making sure execute gets called properly
|
|
def _execute(func, args, exec_msg, level):
|
|
self.assertEqual(exec_msg, 'generating out from in')
|
|
cmd.force = True
|
|
cmd.execute = _execute
|
|
cmd.make_file(infiles='in', outfile='out', func='func', args=())
|
|
|
|
def test_dump_options(self):
|
|
cmd = self.cmd
|
|
cmd.option1 = 1
|
|
cmd.option2 = 1
|
|
cmd.user_options = [('option1', '', ''), ('option2', '', '')]
|
|
cmd.dump_options()
|
|
|
|
wanted = ["command options for 'MyCmd':", ' option1 = 1',
|
|
' option2 = 1']
|
|
msgs = self.get_logs(logging.INFO)
|
|
self.assertEqual(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.assertTrue(hasattr(cmd, 'option2'))
|
|
|
|
cmd.option3 = 1
|
|
self.assertRaises(PackagingOptionError, cmd.ensure_string, 'option3')
|
|
|
|
def test_ensure_string_list(self):
|
|
cmd = self.cmd
|
|
cmd.option1 = 'ok,dok'
|
|
cmd.ensure_string_list('option1')
|
|
self.assertEqual(cmd.option1, ['ok', 'dok'])
|
|
|
|
cmd.yes_string_list = ['one', 'two', 'three']
|
|
cmd.yes_string_list2 = 'ok'
|
|
cmd.ensure_string_list('yes_string_list')
|
|
cmd.ensure_string_list('yes_string_list2')
|
|
self.assertEqual(cmd.yes_string_list, ['one', 'two', 'three'])
|
|
self.assertEqual(cmd.yes_string_list2, ['ok'])
|
|
|
|
cmd.not_string_list = ['one', 2, 'three']
|
|
cmd.not_string_list2 = object()
|
|
self.assertRaises(PackagingOptionError,
|
|
cmd.ensure_string_list, 'not_string_list')
|
|
|
|
self.assertRaises(PackagingOptionError,
|
|
cmd.ensure_string_list, 'not_string_list2')
|
|
|
|
def test_ensure_filename(self):
|
|
cmd = self.cmd
|
|
cmd.option1 = __file__
|
|
cmd.ensure_filename('option1')
|
|
cmd.option2 = 'xxx'
|
|
self.assertRaises(PackagingOptionError, cmd.ensure_filename, 'option2')
|
|
|
|
def test_ensure_dirname(self):
|
|
cmd = self.cmd
|
|
cmd.option1 = os.path.dirname(__file__) or os.curdir
|
|
cmd.ensure_dirname('option1')
|
|
cmd.option2 = 'xxx'
|
|
self.assertRaises(PackagingOptionError, cmd.ensure_dirname, 'option2')
|
|
|
|
|
|
def test_suite():
|
|
return unittest.makeSuite(CommandTestCase)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='test_suite')
|