--- unittest-orig25.py 2008-01-13 15:02:16.234375000 +0100 +++ unittest-only25.py 2008-01-13 15:26:19.046875000 +0100 @@ -242,7 +242,7 @@ return "<%s testMethod=%s>" % \ (_strclass(self.__class__), self._testMethodName) - def run(self, result=None): + def run(self, result=None, onlyone=False): if result is None: result = self.defaultTestResult() result.startTest(self) testMethod = getattr(self, self._testMethodName) @@ -426,11 +426,13 @@ for test in tests: self.addTest(test) - def run(self, result): + def run(self, result, onlyone=False): for test in self._tests: if result.shouldStop: break - test(result) + test(result, onlyone=onlyone) + if onlyone and not result.wasSuccessful(): + break return result def __call__(self, *args, **kwds): @@ -698,11 +700,11 @@ def _makeResult(self): return _TextTestResult(self.stream, self.descriptions, self.verbosity) - def run(self, test): + def run(self, test, onlyone=False): "Run the given test case or test suite." result = self._makeResult() startTime = time.time() - test(result) + test(result, onlyone=onlyone) stopTime = time.time() timeTaken = stopTime - startTime result.printErrors() @@ -739,6 +741,7 @@ Options: -h, --help Show this message + -o, --one Stop after one error -v, --verbose Verbose output -q, --quiet Minimal output @@ -759,6 +762,7 @@ self.module = module if argv is None: argv = sys.argv + self.onlyone = False self.verbosity = 1 self.defaultTest = defaultTest self.testRunner = testRunner @@ -775,11 +779,13 @@ def parseArgs(self, argv): import getopt try: - options, args = getopt.getopt(argv[1:], 'hHvq', - ['help','verbose','quiet']) + options, args = getopt.getopt(argv[1:], 'hHovq', + ['help','one','verbose','quiet']) for opt, value in options: if opt in ('-h','-H','--help'): self.usageExit() + if opt in ('-o','--one'): + self.onlyone = True if opt in ('-q','--quiet'): self.verbosity = 0 if opt in ('-v','--verbose'): @@ -802,7 +808,7 @@ def runTests(self): if self.testRunner is None: self.testRunner = TextTestRunner(verbosity=self.verbosity) - result = self.testRunner.run(self.test) + result = self.testRunner.run(self.test, onlyone=self.onlyone) sys.exit(not result.wasSuccessful()) main = TestProgram