# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Tests for the output generated by trial. """ import os from io import StringIO from twisted.scripts import trial from twisted.trial import runner from twisted.trial.test import packages _noModuleError = "No module named 'frotz'" def runTrial(*args): from twisted.trial import reporter config = trial.Options() config.parseOptions(args) output = StringIO() 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. """ def debug(self): pass 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().assertIn(containee, container, *args, **kwargs) return container def assertNotIn(self, container, containee, *args, **kwargs): # redefined to be useful in callbacks super().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, "