diff options
author | Jason Pellerin <jpellerin@gmail.com> | 2007-04-06 02:42:50 +0000 |
---|---|---|
committer | Jason Pellerin <jpellerin@gmail.com> | 2007-04-06 02:42:50 +0000 |
commit | 773dc1c88e5affc32f5b87c438f7379640680aba (patch) | |
tree | b9260ae3124d7704659f8057f8f5dc6ce0daa760 /nose/result.py | |
parent | aad5e1e5e3a4b28602b3c0e1339032465b80d88a (diff) | |
download | nose-773dc1c88e5affc32f5b87c438f7379640680aba.tar.gz |
Added score attribute to plugins and made them sorted by score. Fixed failing skip/pdb interaction test
Diffstat (limited to 'nose/result.py')
-rw-r--r-- | nose/result.py | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/nose/result.py b/nose/result.py index 99039bc..d4840e1 100644 --- a/nose/result.py +++ b/nose/result.py @@ -18,7 +18,7 @@ class TextTestResult(_TextTestResult): Deprecated, TODO) that extend the errors/failures/success triad. """ def __init__(self, stream, descriptions, verbosity, config=None, - errorClasses=None): + errorClasses=None): if errorClasses is None: errorClasses = {} self.errorClasses = errorClasses @@ -33,30 +33,30 @@ class TextTestResult(_TextTestResult): error will be added to the list for that class, not errors. """ ec, ev, tb = err - handler, label, isfail = self.errorClasses.get(ec, (None, None, None)) - if not handler: - return self._addError(test, err) - errlist = getattr(self, handler, None) - if errlist is None: - warn("No attribute %s: needed to handle errors " - "of class %s" % (handler, ec), RuntimeWarning) - return self._addError(test, err) - errlist.append((test, self._exc_info_to_string(err, test))) - # Might get patched into a streamless result - stream = getattr(self, 'stream', None) - if stream is not None: - if self.showAll: - self.stream.write(label) - elif self.dots: - self.stream.write(label[:1]) + for cls, (storage, label, isfail) in self.errorClasses.items(): + if issubclass(ec, cls): + storage.append((test, self._exc_info_to_string(err, test))) + # Might get patched into a streamless result + stream = getattr(self, 'stream', None) + if stream is not None: + if self.showAll: + stream.writeln(label) + elif self.dots: + stream.write(label[:1]) + return + self.errors.append((test, self._exc_info_to_string(err, test))) + if self.showAll: + self.stream.writeln('ERROR') + elif self.dots: + stream.write('E') def printErrors(self): """Overrides to print all errorClasses errors as well. """ _TextTestResult.printErrors(self) for cls in self.errorClasses.keys(): - handler, label, isfail = self.errorClasses[cls] - self.printErrorList(label, getattr(self, handler, [])) + storage, label, isfail = self.errorClasses[cls] + self.printErrorList(label, storage) def wasSuccessful(self): """Overrides to check that there are no errors in errorClasses @@ -66,15 +66,19 @@ class TextTestResult(_TextTestResult): if self.errors or self.failures: return False for cls in self.errorClasses.keys(): - handler, label, isfail = self.errorClasses[cls] + storage, label, isfail = self.errorClasses[cls] if not isfail: continue - if getattr(self, handler, []): + if storage: return False return True def _addError(self, test, err): self.errors.append((test, self._exc_info_to_string(err, test))) + if self.showAll: + self.stream.write('ERROR') + elif self.dots: + stream.write('E') def _exc_info_to_string(self, err, test): try: |