These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			256 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			256 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from cStringIO import StringIO
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
import unittest
 | 
						|
 | 
						|
 | 
						|
class Test_TestProgram(unittest.TestCase):
 | 
						|
 | 
						|
    def test_discovery_from_dotted_path(self):
 | 
						|
        loader = unittest.TestLoader()
 | 
						|
 | 
						|
        tests = [self]
 | 
						|
        expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
 | 
						|
 | 
						|
        self.wasRun = False
 | 
						|
        def _find_tests(start_dir, pattern):
 | 
						|
            self.wasRun = True
 | 
						|
            self.assertEqual(start_dir, expectedPath)
 | 
						|
            return tests
 | 
						|
        loader._find_tests = _find_tests
 | 
						|
        suite = loader.discover('unittest.test')
 | 
						|
        self.assertTrue(self.wasRun)
 | 
						|
        self.assertEqual(suite._tests, tests)
 | 
						|
 | 
						|
    # Horrible white box test
 | 
						|
    def testNoExit(self):
 | 
						|
        result = object()
 | 
						|
        test = object()
 | 
						|
 | 
						|
        class FakeRunner(object):
 | 
						|
            def run(self, test):
 | 
						|
                self.test = test
 | 
						|
                return result
 | 
						|
 | 
						|
        runner = FakeRunner()
 | 
						|
 | 
						|
        oldParseArgs = unittest.TestProgram.parseArgs
 | 
						|
        def restoreParseArgs():
 | 
						|
            unittest.TestProgram.parseArgs = oldParseArgs
 | 
						|
        unittest.TestProgram.parseArgs = lambda *args: None
 | 
						|
        self.addCleanup(restoreParseArgs)
 | 
						|
 | 
						|
        def removeTest():
 | 
						|
            del unittest.TestProgram.test
 | 
						|
        unittest.TestProgram.test = test
 | 
						|
        self.addCleanup(removeTest)
 | 
						|
 | 
						|
        program = unittest.TestProgram(testRunner=runner, exit=False, verbosity=2)
 | 
						|
 | 
						|
        self.assertEqual(program.result, result)
 | 
						|
        self.assertEqual(runner.test, test)
 | 
						|
        self.assertEqual(program.verbosity, 2)
 | 
						|
 | 
						|
    class FooBar(unittest.TestCase):
 | 
						|
        def testPass(self):
 | 
						|
            assert True
 | 
						|
        def testFail(self):
 | 
						|
            assert False
 | 
						|
 | 
						|
    class FooBarLoader(unittest.TestLoader):
 | 
						|
        """Test loader that returns a suite containing FooBar."""
 | 
						|
        def loadTestsFromModule(self, module):
 | 
						|
            return self.suiteClass(
 | 
						|
                [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])
 | 
						|
 | 
						|
 | 
						|
    def test_NonExit(self):
 | 
						|
        program = unittest.main(exit=False,
 | 
						|
                                argv=["foobar"],
 | 
						|
                                testRunner=unittest.TextTestRunner(stream=StringIO()),
 | 
						|
                                testLoader=self.FooBarLoader())
 | 
						|
        self.assertTrue(hasattr(program, 'result'))
 | 
						|
 | 
						|
 | 
						|
    def test_Exit(self):
 | 
						|
        self.assertRaises(
 | 
						|
            SystemExit,
 | 
						|
            unittest.main,
 | 
						|
            argv=["foobar"],
 | 
						|
            testRunner=unittest.TextTestRunner(stream=StringIO()),
 | 
						|
            exit=True,
 | 
						|
            testLoader=self.FooBarLoader())
 | 
						|
 | 
						|
 | 
						|
    def test_ExitAsDefault(self):
 | 
						|
        self.assertRaises(
 | 
						|
            SystemExit,
 | 
						|
            unittest.main,
 | 
						|
            argv=["foobar"],
 | 
						|
            testRunner=unittest.TextTestRunner(stream=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 initializing 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()
 |