[Python-checkins] r80921 - in python/branches/py3k: Lib/unittest/test/test_program.py Lib/unittest/test/test_runner.py (original) (raw)
michael.foord python-checkins at python.org
Fri May 7 18:00:31 CEST 2010
- Previous message: [Python-checkins] r80920 - in python/trunk/Lib/unittest/test: test_program.py test_runner.py
- Next message: [Python-checkins] r80922 - in sandbox/trunk/2to3/lib2to3: fixes/fix_xrange.py tests/test_fixers.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: michael.foord Date: Fri May 7 18:00:30 2010 New Revision: 80921
Log: Merged revisions 80920 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk
........ r80920 | michael.foord | 2010-05-07 17:52:05 +0200 (Fri, 07 May 2010) | 1 line
Adding tests for unittest command line handling of buffer, catchbreak and failfast. ........
Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/unittest/test/test_program.py python/branches/py3k/Lib/unittest/test/test_runner.py
Modified: python/branches/py3k/Lib/unittest/test/test_program.py
--- python/branches/py3k/Lib/unittest/test/test_program.py (original) +++ python/branches/py3k/Lib/unittest/test/test_program.py Fri May 7 18:00:30 2010 @@ -1,6 +1,7 @@ import io
import os +import sys import unittest
@@ -89,3 +90,166 @@ argv=["foobar"], testRunner=unittest.TextTestRunner(stream=io.StringIO()), testLoader=self.FooBarLoader()) + + +class InitialisableProgram(unittest.TestProgram):
- exit = False
- result = None
- verbosity = 1
- defaultTest = None
- testRunner = None
- testLoader = unittest.defaultTestLoader
- progName = 'test'
- test = 'test'
- def init(self, *args):
pass
- +RESULT = object()
- +class FakeRunner(object):
- initArgs = None
- test = None
- raiseError = False
- def init(self, **kwargs):
FakeRunner.initArgs = kwargs
if FakeRunner.raiseError:
FakeRunner.raiseError = False
raise TypeError
- def run(self, test):
FakeRunner.test = test
return RESULT
- +class TestCommandLineArgs(unittest.TestCase):
- def setUp(self):
self.program = InitialisableProgram()
self.program.createTests = lambda: None
FakeRunner.initArgs = None
FakeRunner.test = None
FakeRunner.raiseError = False
- def testHelpAndUnknown(self):
program = self.program
def usageExit(msg=None):
program.msg = msg
program.exit = True
program.usageExit = usageExit
for opt in '-h', '-H', '--help':
program.exit = False
program.parseArgs([None, opt])
self.assertTrue(program.exit)
self.assertIsNone(program.msg)
program.parseArgs([None, '-$'])
self.assertTrue(program.exit)
self.assertIsNotNone(program.msg)
- def testVerbosity(self):
program = self.program
for opt in '-q', '--quiet':
program.verbosity = 1
program.parseArgs([None, opt])
self.assertEqual(program.verbosity, 0)
for opt in '-v', '--verbose':
program.verbosity = 1
program.parseArgs([None, opt])
self.assertEqual(program.verbosity, 2)
- def testBufferCatchFailfast(self):
program = self.program
for arg, attr in (('buffer', 'buffer'), ('failfast', 'failfast'),
('catch', 'catchbreak')):
if attr == 'catch' and not hasInstallHandler:
continue
short_opt = '-%s' % arg[0]
long_opt = '--%s' % arg
for opt in short_opt, long_opt:
setattr(program, attr, None)
program.parseArgs([None, opt])
self.assertTrue(getattr(program, attr))
for opt in short_opt, long_opt:
not_none = object()
setattr(program, attr, not_none)
program.parseArgs([None, opt])
self.assertEqual(getattr(program, attr), not_none)
- def testRunTestsRunnerClass(self):
program = self.program
program.testRunner = FakeRunner
program.verbosity = 'verbosity'
program.failfast = 'failfast'
program.buffer = 'buffer'
program.runTests()
self.assertEqual(FakeRunner.initArgs, {'verbosity': 'verbosity',
'failfast': 'failfast',
'buffer': 'buffer'})
self.assertEqual(FakeRunner.test, 'test')
self.assertIs(program.result, RESULT)
- def testRunTestsRunnerInstance(self):
program = self.program
program.testRunner = FakeRunner()
FakeRunner.initArgs = None
program.runTests()
# A new FakeRunner should not have been instantiated
self.assertIsNone(FakeRunner.initArgs)
self.assertEqual(FakeRunner.test, 'test')
self.assertIs(program.result, RESULT)
- def testRunTestsOldRunnerClass(self):
program = self.program
FakeRunner.raiseError = True
program.testRunner = FakeRunner
program.verbosity = 'verbosity'
program.failfast = 'failfast'
program.buffer = 'buffer'
program.test = 'test'
program.runTests()
# If initialising raises a type error it should be retried
# without the new keyword arguments
self.assertEqual(FakeRunner.initArgs, {})
self.assertEqual(FakeRunner.test, 'test')
self.assertIs(program.result, RESULT)
- def testCatchBreakInstallsHandler(self):
module = sys.modules['unittest.main']
original = module.installHandler
def restore():
module.installHandler = original
self.addCleanup(restore)
self.installed = False
def fakeInstallHandler():
self.installed = True
module.installHandler = fakeInstallHandler
program = self.program
program.catchbreak = True
program.testRunner = FakeRunner
program.runTests()
self.assertTrue(self.installed)
- +if name == 'main':
- unittest.main()
Modified: python/branches/py3k/Lib/unittest/test/test_runner.py
--- python/branches/py3k/Lib/unittest/test/test_runner.py (original) +++ python/branches/py3k/Lib/unittest/test/test_runner.py Fri May 7 18:00:30 2010 @@ -114,6 +114,52 @@ class Test_TextTestRunner(unittest.TestCase): """Tests for TextTestRunner."""
- def test_init(self):
runner = unittest.TextTestRunner()
self.assertFalse(runner.failfast)
self.assertFalse(runner.buffer)
self.assertEqual(runner.verbosity, 1)
self.assertTrue(runner.descriptions)
self.assertEqual(runner.resultclass, unittest.TextTestResult)
- def testBufferAndFailfast(self):
class Test(unittest.TestCase):
def testFoo(self):
pass
result = unittest.TestResult()
runner = unittest.TextTestRunner(stream=io.StringIO(), failfast=True,
buffer=True)
# Use our result object
runner._makeResult = lambda: result
runner.run(Test('testFoo'))
self.assertTrue(result.failfast)
self.assertTrue(result.buffer)
- def testRunnerRegistersResult(self):
class Test(unittest.TestCase):
def testFoo(self):
pass
originalRegisterResult = unittest.runner.registerResult
def cleanup():
unittest.runner.registerResult = originalRegisterResult
self.addCleanup(cleanup)
result = unittest.TestResult()
runner = unittest.TextTestRunner(stream=io.StringIO())
# Use our result object
runner._makeResult = lambda: result
self.wasRegistered = 0
def fakeRegisterResult(thisResult):
self.wasRegistered += 1
self.assertEqual(thisResult, result)
unittest.runner.registerResult = fakeRegisterResult
runner.run(unittest.TestSuite())
self.assertEqual(self.wasRegistered, 1)
def test_works_with_result_without_startTestRun_stopTestRun(self): class OldTextResult(ResultWithNoStartTestRunStopTestRun): separator2 = ''
- Previous message: [Python-checkins] r80920 - in python/trunk/Lib/unittest/test: test_program.py test_runner.py
- Next message: [Python-checkins] r80922 - in sandbox/trunk/2to3/lib2to3: fixes/fix_xrange.py tests/test_fixers.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]