| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- # Copyright (c) Twisted Matrix Laboratories.
- # See LICENSE for details.
- """
- Tests for the output generated by trial.
- """
- from __future__ import absolute_import, division, print_function
- import os
- from twisted.python.compat import NativeStringIO, _PY3
- from twisted.scripts import trial
- from twisted.trial import runner
- from twisted.trial.test import packages
- if _PY3:
- _noModuleError = "No module named 'frotz'"
- else:
- _noModuleError = "No module named frotz"
- def runTrial(*args):
- from twisted.trial import reporter
- config = trial.Options()
- config.parseOptions(args)
- output = NativeStringIO()
- myRunner = runner.TrialRunner(
- reporter.VerboseTextReporter,
- stream=output,
- workingDirectory=config['temp-directory'])
- suite = trial._getSuite(config)
- myRunner.run(suite)
- return output.getvalue()
- class ImportErrorsTests(packages.SysPathManglingTest):
- """Actually run trial as if on the command line and check that the output
- is what we expect.
- """
- debug = False
- parent = "_testImportErrors"
- def runTrial(self, *args):
- return runTrial('--temp-directory', self.mktemp(), *args)
- def _print(self, stuff):
- print(stuff)
- return stuff
- def assertIn(self, container, containee, *args, **kwargs):
- # redefined to be useful in callbacks
- super(ImportErrorsTests, self).assertIn(
- containee, container, *args, **kwargs)
- return container
- def assertNotIn(self, container, containee, *args, **kwargs):
- # redefined to be useful in callbacks
- super(ImportErrorsTests, self).assertNotIn(
- containee, container, *args, **kwargs)
- return container
- def test_trialRun(self):
- self.runTrial()
- def test_nonexistentModule(self):
- d = self.runTrial('twisted.doesntexist')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, 'twisted.doesntexist')
- return d
- def test_nonexistentPackage(self):
- d = self.runTrial('doesntexist')
- self.assertIn(d, 'doesntexist')
- self.assertIn(d, 'ModuleNotFound')
- self.assertIn(d, '[ERROR]')
- return d
- def test_nonexistentPackageWithModule(self):
- d = self.runTrial('doesntexist.barney')
- self.assertIn(d, 'doesntexist.barney')
- self.assertIn(d, 'ObjectNotFound')
- self.assertIn(d, '[ERROR]')
- return d
- def test_badpackage(self):
- d = self.runTrial('badpackage')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, 'badpackage')
- self.assertNotIn(d, 'IOError')
- return d
- def test_moduleInBadpackage(self):
- d = self.runTrial('badpackage.test_module')
- self.assertIn(d, "[ERROR]")
- self.assertIn(d, "badpackage.test_module")
- self.assertNotIn(d, 'IOError')
- return d
- def test_badmodule(self):
- d = self.runTrial('package.test_bad_module')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, 'package.test_bad_module')
- self.assertNotIn(d, 'IOError')
- self.assertNotIn(d, '<module ')
- return d
- def test_badimport(self):
- d = self.runTrial('package.test_import_module')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, 'package.test_import_module')
- self.assertNotIn(d, 'IOError')
- self.assertNotIn(d, '<module ')
- return d
- def test_recurseImport(self):
- d = self.runTrial('package')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, 'test_bad_module')
- self.assertIn(d, 'test_import_module')
- self.assertNotIn(d, '<module ')
- self.assertNotIn(d, 'IOError')
- return d
- def test_recurseImportErrors(self):
- d = self.runTrial('package2')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, 'package2')
- self.assertIn(d, 'test_module')
- self.assertIn(d, _noModuleError)
- self.assertNotIn(d, '<module ')
- self.assertNotIn(d, 'IOError')
- return d
- def test_nonRecurseImportErrors(self):
- d = self.runTrial('-N', 'package2')
- self.assertIn(d, '[ERROR]')
- self.assertIn(d, _noModuleError)
- self.assertNotIn(d, '<module ')
- return d
- def test_regularRun(self):
- d = self.runTrial('package.test_module')
- self.assertNotIn(d, '[ERROR]')
- self.assertNotIn(d, 'IOError')
- self.assertIn(d, 'OK')
- self.assertIn(d, 'PASSED (successes=1)')
- return d
- def test_filename(self):
- self.mangleSysPath(self.oldPath)
- d = self.runTrial(
- os.path.join(self.parent, 'package', 'test_module.py'))
- self.assertNotIn(d, '[ERROR]')
- self.assertNotIn(d, 'IOError')
- self.assertIn(d, 'OK')
- self.assertIn(d, 'PASSED (successes=1)')
- return d
- def test_dosFile(self):
- ## XXX -- not really an output test, more of a script test
- self.mangleSysPath(self.oldPath)
- d = self.runTrial(
- os.path.join(self.parent,
- 'package', 'test_dos_module.py'))
- self.assertNotIn(d, '[ERROR]')
- self.assertNotIn(d, 'IOError')
- self.assertIn(d, 'OK')
- self.assertIn(d, 'PASSED (successes=1)')
- return d
|