]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_program.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / unittest / test / test_program.py
CommitLineData
4710c53d 1from cStringIO import StringIO\r
2\r
3import os\r
4import sys\r
5import unittest\r
6\r
7\r
8class Test_TestProgram(unittest.TestCase):\r
9\r
10 def test_discovery_from_dotted_path(self):\r
11 loader = unittest.TestLoader()\r
12\r
13 tests = [self]\r
14 expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))\r
15\r
16 self.wasRun = False\r
17 def _find_tests(start_dir, pattern):\r
18 self.wasRun = True\r
19 self.assertEqual(start_dir, expectedPath)\r
20 return tests\r
21 loader._find_tests = _find_tests\r
22 suite = loader.discover('unittest.test')\r
23 self.assertTrue(self.wasRun)\r
24 self.assertEqual(suite._tests, tests)\r
25\r
26 # Horrible white box test\r
27 def testNoExit(self):\r
28 result = object()\r
29 test = object()\r
30\r
31 class FakeRunner(object):\r
32 def run(self, test):\r
33 self.test = test\r
34 return result\r
35\r
36 runner = FakeRunner()\r
37\r
38 oldParseArgs = unittest.TestProgram.parseArgs\r
39 def restoreParseArgs():\r
40 unittest.TestProgram.parseArgs = oldParseArgs\r
41 unittest.TestProgram.parseArgs = lambda *args: None\r
42 self.addCleanup(restoreParseArgs)\r
43\r
44 def removeTest():\r
45 del unittest.TestProgram.test\r
46 unittest.TestProgram.test = test\r
47 self.addCleanup(removeTest)\r
48\r
49 program = unittest.TestProgram(testRunner=runner, exit=False, verbosity=2)\r
50\r
51 self.assertEqual(program.result, result)\r
52 self.assertEqual(runner.test, test)\r
53 self.assertEqual(program.verbosity, 2)\r
54\r
55 class FooBar(unittest.TestCase):\r
56 def testPass(self):\r
57 assert True\r
58 def testFail(self):\r
59 assert False\r
60\r
61 class FooBarLoader(unittest.TestLoader):\r
62 """Test loader that returns a suite containing FooBar."""\r
63 def loadTestsFromModule(self, module):\r
64 return self.suiteClass(\r
65 [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])\r
66\r
67\r
68 def test_NonExit(self):\r
69 program = unittest.main(exit=False,\r
70 argv=["foobar"],\r
71 testRunner=unittest.TextTestRunner(stream=StringIO()),\r
72 testLoader=self.FooBarLoader())\r
73 self.assertTrue(hasattr(program, 'result'))\r
74\r
75\r
76 def test_Exit(self):\r
77 self.assertRaises(\r
78 SystemExit,\r
79 unittest.main,\r
80 argv=["foobar"],\r
81 testRunner=unittest.TextTestRunner(stream=StringIO()),\r
82 exit=True,\r
83 testLoader=self.FooBarLoader())\r
84\r
85\r
86 def test_ExitAsDefault(self):\r
87 self.assertRaises(\r
88 SystemExit,\r
89 unittest.main,\r
90 argv=["foobar"],\r
91 testRunner=unittest.TextTestRunner(stream=StringIO()),\r
92 testLoader=self.FooBarLoader())\r
93\r
94\r
95class InitialisableProgram(unittest.TestProgram):\r
96 exit = False\r
97 result = None\r
98 verbosity = 1\r
99 defaultTest = None\r
100 testRunner = None\r
101 testLoader = unittest.defaultTestLoader\r
102 progName = 'test'\r
103 test = 'test'\r
104 def __init__(self, *args):\r
105 pass\r
106\r
107RESULT = object()\r
108\r
109class FakeRunner(object):\r
110 initArgs = None\r
111 test = None\r
112 raiseError = False\r
113\r
114 def __init__(self, **kwargs):\r
115 FakeRunner.initArgs = kwargs\r
116 if FakeRunner.raiseError:\r
117 FakeRunner.raiseError = False\r
118 raise TypeError\r
119\r
120 def run(self, test):\r
121 FakeRunner.test = test\r
122 return RESULT\r
123\r
124class TestCommandLineArgs(unittest.TestCase):\r
125\r
126 def setUp(self):\r
127 self.program = InitialisableProgram()\r
128 self.program.createTests = lambda: None\r
129 FakeRunner.initArgs = None\r
130 FakeRunner.test = None\r
131 FakeRunner.raiseError = False\r
132\r
133 def testHelpAndUnknown(self):\r
134 program = self.program\r
135 def usageExit(msg=None):\r
136 program.msg = msg\r
137 program.exit = True\r
138 program.usageExit = usageExit\r
139\r
140 for opt in '-h', '-H', '--help':\r
141 program.exit = False\r
142 program.parseArgs([None, opt])\r
143 self.assertTrue(program.exit)\r
144 self.assertIsNone(program.msg)\r
145\r
146 program.parseArgs([None, '-$'])\r
147 self.assertTrue(program.exit)\r
148 self.assertIsNotNone(program.msg)\r
149\r
150 def testVerbosity(self):\r
151 program = self.program\r
152\r
153 for opt in '-q', '--quiet':\r
154 program.verbosity = 1\r
155 program.parseArgs([None, opt])\r
156 self.assertEqual(program.verbosity, 0)\r
157\r
158 for opt in '-v', '--verbose':\r
159 program.verbosity = 1\r
160 program.parseArgs([None, opt])\r
161 self.assertEqual(program.verbosity, 2)\r
162\r
163 def testBufferCatchFailfast(self):\r
164 program = self.program\r
165 for arg, attr in (('buffer', 'buffer'), ('failfast', 'failfast'),\r
166 ('catch', 'catchbreak')):\r
167 if attr == 'catch' and not hasInstallHandler:\r
168 continue\r
169\r
170 short_opt = '-%s' % arg[0]\r
171 long_opt = '--%s' % arg\r
172 for opt in short_opt, long_opt:\r
173 setattr(program, attr, None)\r
174\r
175 program.parseArgs([None, opt])\r
176 self.assertTrue(getattr(program, attr))\r
177\r
178 for opt in short_opt, long_opt:\r
179 not_none = object()\r
180 setattr(program, attr, not_none)\r
181\r
182 program.parseArgs([None, opt])\r
183 self.assertEqual(getattr(program, attr), not_none)\r
184\r
185 def testRunTestsRunnerClass(self):\r
186 program = self.program\r
187\r
188 program.testRunner = FakeRunner\r
189 program.verbosity = 'verbosity'\r
190 program.failfast = 'failfast'\r
191 program.buffer = 'buffer'\r
192\r
193 program.runTests()\r
194\r
195 self.assertEqual(FakeRunner.initArgs, {'verbosity': 'verbosity',\r
196 'failfast': 'failfast',\r
197 'buffer': 'buffer'})\r
198 self.assertEqual(FakeRunner.test, 'test')\r
199 self.assertIs(program.result, RESULT)\r
200\r
201 def testRunTestsRunnerInstance(self):\r
202 program = self.program\r
203\r
204 program.testRunner = FakeRunner()\r
205 FakeRunner.initArgs = None\r
206\r
207 program.runTests()\r
208\r
209 # A new FakeRunner should not have been instantiated\r
210 self.assertIsNone(FakeRunner.initArgs)\r
211\r
212 self.assertEqual(FakeRunner.test, 'test')\r
213 self.assertIs(program.result, RESULT)\r
214\r
215 def testRunTestsOldRunnerClass(self):\r
216 program = self.program\r
217\r
218 FakeRunner.raiseError = True\r
219 program.testRunner = FakeRunner\r
220 program.verbosity = 'verbosity'\r
221 program.failfast = 'failfast'\r
222 program.buffer = 'buffer'\r
223 program.test = 'test'\r
224\r
225 program.runTests()\r
226\r
227 # If initializing raises a type error it should be retried\r
228 # without the new keyword arguments\r
229 self.assertEqual(FakeRunner.initArgs, {})\r
230 self.assertEqual(FakeRunner.test, 'test')\r
231 self.assertIs(program.result, RESULT)\r
232\r
233 def testCatchBreakInstallsHandler(self):\r
234 module = sys.modules['unittest.main']\r
235 original = module.installHandler\r
236 def restore():\r
237 module.installHandler = original\r
238 self.addCleanup(restore)\r
239\r
240 self.installed = False\r
241 def fakeInstallHandler():\r
242 self.installed = True\r
243 module.installHandler = fakeInstallHandler\r
244\r
245 program = self.program\r
246 program.catchbreak = True\r
247\r
248 program.testRunner = FakeRunner\r
249\r
250 program.runTests()\r
251 self.assertTrue(self.installed)\r
252\r
253\r
254if __name__ == '__main__':\r
255 unittest.main()\r