Index: third_party/twisted_8_1/twisted/trial/test/test_loader.py |
diff --git a/third_party/twisted_8_1/twisted/trial/test/test_loader.py b/third_party/twisted_8_1/twisted/trial/test/test_loader.py |
deleted file mode 100644 |
index 0bc53a17df0c51871b778bd5ea86b834d25cc9a7..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/trial/test/test_loader.py |
+++ /dev/null |
@@ -1,475 +0,0 @@ |
- |
-import md5 |
-import os |
-import shutil |
- |
-from twisted.python import util |
-from twisted.trial.test import packages |
-from twisted.trial import runner, reporter, unittest |
-from twisted.trial.itrial import ITestCase |
- |
-from twisted.python.modules import getModule |
- |
- |
- |
-def testNames(tests): |
- """ |
- Return the id of each test within the given test suite or case. |
- """ |
- names = [] |
- for test in unittest._iterateTests(tests): |
- names.append(test.id()) |
- return names |
- |
- |
- |
-class FinderTest(packages.PackageTest): |
- def setUp(self): |
- packages.PackageTest.setUp(self) |
- self.loader = runner.TestLoader() |
- |
- def tearDown(self): |
- packages.PackageTest.tearDown(self) |
- |
- def test_findPackage(self): |
- sample1 = self.loader.findByName('twisted') |
- import twisted as sample2 |
- self.failUnlessEqual(sample1, sample2) |
- |
- def test_findModule(self): |
- sample1 = self.loader.findByName('twisted.trial.test.sample') |
- import sample as sample2 |
- self.failUnlessEqual(sample1, sample2) |
- |
- def test_findFile(self): |
- path = util.sibpath(__file__, 'sample.py') |
- sample1 = self.loader.findByName(path) |
- import sample as sample2 |
- self.failUnlessEqual(sample1, sample2) |
- |
- def test_findObject(self): |
- sample1 = self.loader.findByName('twisted.trial.test.sample.FooTest') |
- import sample |
- self.failUnlessEqual(sample.FooTest, sample1) |
- |
- def test_findNonModule(self): |
- self.failUnlessRaises(AttributeError, |
- self.loader.findByName, |
- 'twisted.trial.test.nonexistent') |
- |
- def test_findNonPackage(self): |
- self.failUnlessRaises(ValueError, |
- self.loader.findByName, |
- 'nonextant') |
- |
- def test_findNonFile(self): |
- path = util.sibpath(__file__, 'nonexistent.py') |
- self.failUnlessRaises(ValueError, self.loader.findByName, path) |
- |
- |
- |
-class FileTest(packages.SysPathManglingTest): |
- def test_notFile(self): |
- self.failUnlessRaises(ValueError, |
- runner.filenameToModule, 'doesntexist') |
- |
- def test_moduleInPath(self): |
- sample1 = runner.filenameToModule(util.sibpath(__file__, 'sample.py')) |
- import sample as sample2 |
- self.failUnlessEqual(sample2, sample1) |
- |
- def test_moduleNotInPath(self): |
- self.mangleSysPath(self.oldPath) |
- sample1 = runner.filenameToModule(os.path.join(self.parent, |
- 'goodpackage', |
- 'test_sample.py')) |
- self.mangleSysPath(self.newPath) |
- from goodpackage import test_sample as sample2 |
- self.failUnlessEqual(os.path.splitext(sample2.__file__)[0], |
- os.path.splitext(sample1.__file__)[0]) |
- |
- def test_packageInPath(self): |
- package1 = runner.filenameToModule(os.path.join(self.parent, |
- 'goodpackage')) |
- import goodpackage |
- self.failUnlessEqual(goodpackage, package1) |
- |
- def test_packageNotInPath(self): |
- self.mangleSysPath(self.oldPath) |
- package1 = runner.filenameToModule(os.path.join(self.parent, |
- 'goodpackage')) |
- self.mangleSysPath(self.newPath) |
- import goodpackage |
- self.failUnlessEqual(os.path.splitext(goodpackage.__file__)[0], |
- os.path.splitext(package1.__file__)[0]) |
- |
- def test_directoryNotPackage(self): |
- self.failUnlessRaises(ValueError, runner.filenameToModule, |
- util.sibpath(__file__, 'directory')) |
- |
- def test_filenameNotPython(self): |
- self.failUnlessRaises(ValueError, runner.filenameToModule, |
- util.sibpath(__file__, 'notpython.py')) |
- |
- def test_filenameMatchesPackage(self): |
- filename = os.path.join(self.parent, 'goodpackage.py') |
- fd = open(filename, 'w') |
- fd.write(packages.testModule) |
- fd.close() |
- try: |
- module = runner.filenameToModule(filename) |
- self.failUnlessEqual(filename, module.__file__) |
- finally: |
- os.remove(filename) |
- |
- def test_directory(self): |
- """ |
- Test loader against a filesystem directory. It should handle |
- 'path' and 'path/' the same way. |
- """ |
- path = util.sibpath(__file__, 'goodDirectory') |
- os.mkdir(path) |
- f = file(os.path.join(path, '__init__.py'), "w") |
- f.close() |
- try: |
- module = runner.filenameToModule(path) |
- self.assert_(module.__name__.endswith('goodDirectory')) |
- module = runner.filenameToModule(path + os.path.sep) |
- self.assert_(module.__name__.endswith('goodDirectory')) |
- finally: |
- shutil.rmtree(path) |
- |
- |
- |
-class LoaderTest(packages.SysPathManglingTest): |
- |
- def setUp(self): |
- self.loader = runner.TestLoader() |
- packages.SysPathManglingTest.setUp(self) |
- |
- def test_sortCases(self): |
- import sample |
- suite = self.loader.loadClass(sample.AlphabetTest) |
- self.failUnlessEqual(['test_a', 'test_b', 'test_c'], |
- [test._testMethodName for test in suite._tests]) |
- newOrder = ['test_b', 'test_c', 'test_a'] |
- sortDict = dict(zip(newOrder, range(3))) |
- self.loader.sorter = lambda x : sortDict.get(x.shortDescription(), -1) |
- suite = self.loader.loadClass(sample.AlphabetTest) |
- self.failUnlessEqual(newOrder, |
- [test._testMethodName for test in suite._tests]) |
- |
- def test_loadMethod(self): |
- import sample |
- suite = self.loader.loadMethod(sample.FooTest.test_foo) |
- self.failUnlessEqual(1, suite.countTestCases()) |
- self.failUnlessEqual('test_foo', suite._testMethodName) |
- |
- def test_loadFailingMethod(self): |
- # test added for issue1353 |
- import erroneous |
- suite = self.loader.loadMethod(erroneous.TestRegularFail.test_fail) |
- result = reporter.TestResult() |
- suite.run(result) |
- self.failUnlessEqual(result.testsRun, 1) |
- self.failUnlessEqual(len(result.failures), 1) |
- |
- def test_loadNonMethod(self): |
- import sample |
- self.failUnlessRaises(TypeError, self.loader.loadMethod, sample) |
- self.failUnlessRaises(TypeError, |
- self.loader.loadMethod, sample.FooTest) |
- self.failUnlessRaises(TypeError, self.loader.loadMethod, "string") |
- self.failUnlessRaises(TypeError, |
- self.loader.loadMethod, ('foo', 'bar')) |
- |
- def test_loadClass(self): |
- import sample |
- suite = self.loader.loadClass(sample.FooTest) |
- self.failUnlessEqual(2, suite.countTestCases()) |
- self.failUnlessEqual(['test_bar', 'test_foo'], |
- [test._testMethodName for test in suite._tests]) |
- |
- |
- def test_loadNonClass(self): |
- import sample |
- self.failUnlessRaises(TypeError, self.loader.loadClass, sample) |
- self.failUnlessRaises(TypeError, |
- self.loader.loadClass, sample.FooTest.test_foo) |
- self.failUnlessRaises(TypeError, self.loader.loadClass, "string") |
- self.failUnlessRaises(TypeError, |
- self.loader.loadClass, ('foo', 'bar')) |
- |
- def test_loadNonTestCase(self): |
- import sample |
- self.failUnlessRaises(ValueError, self.loader.loadClass, |
- sample.NotATest) |
- |
- def test_loadModule(self): |
- import sample |
- suite = self.loader.loadModule(sample) |
- self.failUnlessEqual(7, suite.countTestCases()) |
- |
- def test_loadNonModule(self): |
- import sample |
- self.failUnlessRaises(TypeError, |
- self.loader.loadModule, sample.FooTest) |
- self.failUnlessRaises(TypeError, |
- self.loader.loadModule, sample.FooTest.test_foo) |
- self.failUnlessRaises(TypeError, self.loader.loadModule, "string") |
- self.failUnlessRaises(TypeError, |
- self.loader.loadModule, ('foo', 'bar')) |
- |
- def test_loadPackage(self): |
- import goodpackage |
- suite = self.loader.loadPackage(goodpackage) |
- self.failUnlessEqual(7, suite.countTestCases()) |
- |
- def test_loadNonPackage(self): |
- import sample |
- self.failUnlessRaises(TypeError, |
- self.loader.loadPackage, sample.FooTest) |
- self.failUnlessRaises(TypeError, |
- self.loader.loadPackage, sample.FooTest.test_foo) |
- self.failUnlessRaises(TypeError, self.loader.loadPackage, "string") |
- self.failUnlessRaises(TypeError, |
- self.loader.loadPackage, ('foo', 'bar')) |
- |
- def test_loadModuleAsPackage(self): |
- import sample |
- ## XXX -- should this instead raise a ValueError? -- jml |
- self.failUnlessRaises(TypeError, self.loader.loadPackage, sample) |
- |
- def test_loadPackageRecursive(self): |
- import goodpackage |
- suite = self.loader.loadPackage(goodpackage, recurse=True) |
- self.failUnlessEqual(14, suite.countTestCases()) |
- |
- def test_loadAnythingOnModule(self): |
- import sample |
- suite = self.loader.loadAnything(sample) |
- self.failUnlessEqual(sample.__name__, |
- suite._tests[0]._tests[0].__class__.__module__) |
- |
- def test_loadAnythingOnClass(self): |
- import sample |
- suite = self.loader.loadAnything(sample.FooTest) |
- self.failUnlessEqual(2, suite.countTestCases()) |
- |
- def test_loadAnythingOnMethod(self): |
- import sample |
- suite = self.loader.loadAnything(sample.FooTest.test_foo) |
- self.failUnlessEqual(1, suite.countTestCases()) |
- |
- def test_loadAnythingOnPackage(self): |
- import goodpackage |
- suite = self.loader.loadAnything(goodpackage) |
- self.failUnless(isinstance(suite, self.loader.suiteFactory)) |
- self.failUnlessEqual(7, suite.countTestCases()) |
- |
- def test_loadAnythingOnPackageRecursive(self): |
- import goodpackage |
- suite = self.loader.loadAnything(goodpackage, recurse=True) |
- self.failUnless(isinstance(suite, self.loader.suiteFactory)) |
- self.failUnlessEqual(14, suite.countTestCases()) |
- |
- def test_loadAnythingOnString(self): |
- # the important thing about this test is not the string-iness |
- # but the non-handledness. |
- self.failUnlessRaises(TypeError, |
- self.loader.loadAnything, "goodpackage") |
- |
- def test_importErrors(self): |
- import package |
- suite = self.loader.loadPackage(package, recurse=True) |
- result = reporter.Reporter() |
- suite.run(result) |
- self.failUnlessEqual(False, result.wasSuccessful()) |
- self.failUnlessEqual(2, len(result.errors)) |
- errors = [test.id() for test, error in result.errors] |
- errors.sort() |
- self.failUnlessEqual(errors, ['package.test_bad_module', |
- 'package.test_import_module']) |
- |
- |
- def test_loadModuleWith_test_suite(self): |
- """ |
- Check that C{test_suite} is used when present and other L{TestCase}s are |
- not included. |
- """ |
- from twisted.trial.test import mockcustomsuite |
- suite = self.loader.loadModule(mockcustomsuite) |
- self.failUnlessEqual(0, suite.countTestCases()) |
- self.failUnlessEqual("MyCustomSuite", getattr(suite, 'name', None)) |
- |
- |
- def test_loadModuleWith_testSuite(self): |
- """ |
- Check that C{testSuite} is used when present and other L{TestCase}s are |
- not included. |
- """ |
- from twisted.trial.test import mockcustomsuite2 |
- suite = self.loader.loadModule(mockcustomsuite2) |
- self.assertEqual(0, suite.countTestCases()) |
- self.assertEqual("MyCustomSuite", getattr(suite, 'name', None)) |
- |
- |
- def test_loadModuleWithBothCustom(self): |
- """ |
- Check that if C{testSuite} and C{test_suite} are both present in a |
- module then C{testSuite} gets priority. |
- """ |
- from twisted.trial.test import mockcustomsuite3 |
- suite = self.loader.loadModule(mockcustomsuite3) |
- self.assertEqual('testSuite', getattr(suite, 'name', None)) |
- |
- |
- def test_customLoadRaisesAttributeError(self): |
- """ |
- Make sure that any C{AttributeError}s raised by C{testSuite} are not |
- swallowed by L{TestLoader}. |
- """ |
- def testSuite(): |
- raise AttributeError('should be reraised') |
- from twisted.trial.test import mockcustomsuite2 |
- mockcustomsuite2.testSuite, original = (testSuite, |
- mockcustomsuite2.testSuite) |
- try: |
- self.assertRaises(AttributeError, self.loader.loadModule, |
- mockcustomsuite2) |
- finally: |
- mockcustomsuite2.testSuite = original |
- |
- |
- # XXX - duplicated and modified from test_script |
- def assertSuitesEqual(self, test1, test2): |
- loader = runner.TestLoader() |
- names1 = testNames(test1) |
- names2 = testNames(test2) |
- names1.sort() |
- names2.sort() |
- self.assertEqual(names1, names2) |
- |
- def test_loadByNamesDuplicate(self): |
- """ |
- Check that loadByNames ignores duplicate names |
- """ |
- module = 'twisted.trial.test.test_test_visitor' |
- suite1 = self.loader.loadByNames([module, module], True) |
- suite2 = self.loader.loadByName(module, True) |
- self.assertSuitesEqual(suite1, suite2) |
- |
- def test_loadDifferentNames(self): |
- """ |
- Check that loadByNames loads all the names that it is given |
- """ |
- modules = ['goodpackage', 'package.test_module'] |
- suite1 = self.loader.loadByNames(modules) |
- suite2 = runner.TestSuite(map(self.loader.loadByName, modules)) |
- self.assertSuitesEqual(suite1, suite2) |
- |
- |
- |
-class ZipLoadingTest(LoaderTest): |
- def setUp(self): |
- from twisted.test.test_paths import zipit |
- LoaderTest.setUp(self) |
- zipit(self.parent, self.parent+'.zip') |
- self.parent += '.zip' |
- self.mangleSysPath(self.oldPath+[self.parent]) |
- |
- |
- |
-class PackageOrderingTest(packages.SysPathManglingTest): |
- def setUp(self): |
- self.resultingTests = [] |
- self.loader = runner.TestLoader() |
- self.topDir = self.mktemp() |
- parent = os.path.join(self.topDir, "uberpackage") |
- os.makedirs(parent) |
- file(os.path.join(parent, "__init__.py"), "wb").close() |
- packages.SysPathManglingTest.setUp(self, parent) |
- self.mangleSysPath(self.oldPath + [self.topDir]) |
- |
- def _trialSortAlgorithm(self, sorter): |
- """ |
- Right now, halfway by accident, trial sorts like this: |
- |
- 1. all modules are grouped together in one list and sorted. |
- |
- 2. within each module, the classes are grouped together in one list |
- and sorted. |
- |
- 3. finally within each class, each test method is grouped together |
- in a list and sorted. |
- |
- This attempts to return a sorted list of testable thingies following |
- those rules, so that we can compare the behavior of loadPackage. |
- |
- The things that show as 'cases' are errors from modules which failed to |
- import, and test methods. Let's gather all those together. |
- """ |
- pkg = getModule('uberpackage') |
- testModules = [] |
- for testModule in pkg.walkModules(): |
- if testModule.name.split(".")[-1].startswith("test_"): |
- testModules.append(testModule) |
- sortedModules = util.dsu(testModules, sorter) # ONE |
- for modinfo in sortedModules: |
- # Now let's find all the classes. |
- module = modinfo.load(None) |
- if module is None: |
- yield modinfo |
- else: |
- testClasses = [] |
- for attrib in modinfo.iterAttributes(): |
- if runner.isTestCase(attrib.load()): |
- testClasses.append(attrib) |
- sortedClasses = util.dsu(testClasses, sorter) # TWO |
- for clsinfo in sortedClasses: |
- testMethods = [] |
- for attr in clsinfo.iterAttributes(): |
- if attr.name.split(".")[-1].startswith('test'): |
- testMethods.append(attr) |
- sortedMethods = util.dsu(testMethods, sorter) # THREE |
- for methinfo in sortedMethods: |
- yield methinfo |
- |
- |
- def loadSortedPackages(self, sorter=runner.name): |
- """ |
- Verify that packages are loaded in the correct order. |
- """ |
- import uberpackage |
- self.loader.sorter = sorter |
- suite = self.loader.loadPackage(uberpackage, recurse=True) |
- # XXX: Work around strange, unexplained Zope crap. |
- # jml, 2007-11-15. |
- suite = unittest.decorate(suite, ITestCase) |
- self.resultingTests = list(unittest._iterateTests(suite)) |
- manifest = list(self._trialSortAlgorithm(sorter)) |
- for number, (manifestTest, actualTest) in enumerate( |
- zip(manifest, self.resultingTests)): |
- self.assertEqual( |
- manifestTest.name, actualTest.id(), |
- "#%d: %s != %s" % |
- (number, manifestTest.name, actualTest.id())) |
- self.assertEqual(len(manifest), len(self.resultingTests)) |
- |
- |
- def test_sortPackagesDefaultOrder(self): |
- self.loadSortedPackages() |
- |
- |
- def test_sortPackagesSillyOrder(self): |
- def sillySorter(s): |
- # This has to work on fully-qualified class names and class |
- # objects, which is silly, but it's the "spec", such as it is. |
-# if isinstance(s, type) or isinstance(s, types.ClassType): |
-# return s.__module__+'.'+s.__name__ |
- n = runner.name(s) |
- d = md5.new(n).hexdigest() |
- return d |
- self.loadSortedPackages(sillySorter) |
- |
- |