]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | """Tests for distutils.cmd."""\r |
2 | import unittest\r | |
3 | import os\r | |
4 | from test.test_support import captured_stdout, run_unittest\r | |
5 | \r | |
6 | from distutils.cmd import Command\r | |
7 | from distutils.dist import Distribution\r | |
8 | from distutils.errors import DistutilsOptionError\r | |
9 | from distutils import debug\r | |
10 | \r | |
11 | class MyCmd(Command):\r | |
12 | def initialize_options(self):\r | |
13 | pass\r | |
14 | \r | |
15 | class CommandTestCase(unittest.TestCase):\r | |
16 | \r | |
17 | def setUp(self):\r | |
18 | dist = Distribution()\r | |
19 | self.cmd = MyCmd(dist)\r | |
20 | \r | |
21 | def test_ensure_string_list(self):\r | |
22 | \r | |
23 | cmd = self.cmd\r | |
24 | cmd.not_string_list = ['one', 2, 'three']\r | |
25 | cmd.yes_string_list = ['one', 'two', 'three']\r | |
26 | cmd.not_string_list2 = object()\r | |
27 | cmd.yes_string_list2 = 'ok'\r | |
28 | cmd.ensure_string_list('yes_string_list')\r | |
29 | cmd.ensure_string_list('yes_string_list2')\r | |
30 | \r | |
31 | self.assertRaises(DistutilsOptionError,\r | |
32 | cmd.ensure_string_list, 'not_string_list')\r | |
33 | \r | |
34 | self.assertRaises(DistutilsOptionError,\r | |
35 | cmd.ensure_string_list, 'not_string_list2')\r | |
36 | \r | |
37 | def test_make_file(self):\r | |
38 | \r | |
39 | cmd = self.cmd\r | |
40 | \r | |
41 | # making sure it raises when infiles is not a string or a list/tuple\r | |
42 | self.assertRaises(TypeError, cmd.make_file,\r | |
43 | infiles=1, outfile='', func='func', args=())\r | |
44 | \r | |
45 | # making sure execute gets called properly\r | |
46 | def _execute(func, args, exec_msg, level):\r | |
47 | self.assertEqual(exec_msg, 'generating out from in')\r | |
48 | cmd.force = True\r | |
49 | cmd.execute = _execute\r | |
50 | cmd.make_file(infiles='in', outfile='out', func='func', args=())\r | |
51 | \r | |
52 | def test_dump_options(self):\r | |
53 | \r | |
54 | msgs = []\r | |
55 | def _announce(msg, level):\r | |
56 | msgs.append(msg)\r | |
57 | cmd = self.cmd\r | |
58 | cmd.announce = _announce\r | |
59 | cmd.option1 = 1\r | |
60 | cmd.option2 = 1\r | |
61 | cmd.user_options = [('option1', '', ''), ('option2', '', '')]\r | |
62 | cmd.dump_options()\r | |
63 | \r | |
64 | wanted = ["command options for 'MyCmd':", ' option1 = 1',\r | |
65 | ' option2 = 1']\r | |
66 | self.assertEqual(msgs, wanted)\r | |
67 | \r | |
68 | def test_ensure_string(self):\r | |
69 | cmd = self.cmd\r | |
70 | cmd.option1 = 'ok'\r | |
71 | cmd.ensure_string('option1')\r | |
72 | \r | |
73 | cmd.option2 = None\r | |
74 | cmd.ensure_string('option2', 'xxx')\r | |
75 | self.assertTrue(hasattr(cmd, 'option2'))\r | |
76 | \r | |
77 | cmd.option3 = 1\r | |
78 | self.assertRaises(DistutilsOptionError, cmd.ensure_string, 'option3')\r | |
79 | \r | |
80 | def test_ensure_string_list(self):\r | |
81 | cmd = self.cmd\r | |
82 | cmd.option1 = 'ok,dok'\r | |
83 | cmd.ensure_string_list('option1')\r | |
84 | self.assertEqual(cmd.option1, ['ok', 'dok'])\r | |
85 | \r | |
86 | cmd.option2 = ['xxx', 'www']\r | |
87 | cmd.ensure_string_list('option2')\r | |
88 | \r | |
89 | cmd.option3 = ['ok', 2]\r | |
90 | self.assertRaises(DistutilsOptionError, cmd.ensure_string_list,\r | |
91 | 'option3')\r | |
92 | \r | |
93 | def test_ensure_filename(self):\r | |
94 | cmd = self.cmd\r | |
95 | cmd.option1 = __file__\r | |
96 | cmd.ensure_filename('option1')\r | |
97 | cmd.option2 = 'xxx'\r | |
98 | self.assertRaises(DistutilsOptionError, cmd.ensure_filename, 'option2')\r | |
99 | \r | |
100 | def test_ensure_dirname(self):\r | |
101 | cmd = self.cmd\r | |
102 | cmd.option1 = os.path.dirname(__file__) or os.curdir\r | |
103 | cmd.ensure_dirname('option1')\r | |
104 | cmd.option2 = 'xxx'\r | |
105 | self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2')\r | |
106 | \r | |
107 | def test_debug_print(self):\r | |
108 | cmd = self.cmd\r | |
109 | with captured_stdout() as stdout:\r | |
110 | cmd.debug_print('xxx')\r | |
111 | stdout.seek(0)\r | |
112 | self.assertEqual(stdout.read(), '')\r | |
113 | \r | |
114 | debug.DEBUG = True\r | |
115 | try:\r | |
116 | with captured_stdout() as stdout:\r | |
117 | cmd.debug_print('xxx')\r | |
118 | stdout.seek(0)\r | |
119 | self.assertEqual(stdout.read(), 'xxx\n')\r | |
120 | finally:\r | |
121 | debug.DEBUG = False\r | |
122 | \r | |
123 | def test_suite():\r | |
124 | return unittest.makeSuite(CommandTestCase)\r | |
125 | \r | |
126 | if __name__ == '__main__':\r | |
127 | run_unittest(test_suite())\r |