From 082e7f20d7df457c08119eb41fc2f3f8c09ba7ab Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 29 Mar 2010 16:25:03 +0200 Subject: [PATCH] subunit: Update to newer upstream version. --- lib/README | 3 ++ lib/subunit/python/subunit/run.py | 2 +- lib/subunit/python/subunit/test_results.py | 4 +-- lib/subunit/python/testtools/matchers.py | 31 +++++++++++++++++++ .../python/testtools/tests/test_matchers.py | 13 ++++++++ 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/lib/README b/lib/README index acae62c3787..85b7952db8f 100644 --- a/lib/README +++ b/lib/README @@ -1,4 +1,5 @@ compression - Various compression algorithms (MSZIP, lzxpress) +dnspython - Python module for working with DNS. nss_wrapper - Wrapper for the user and group NSS API allowing the use of other data sources. popt - Command-line option parsing library @@ -6,6 +7,8 @@ replace - Provides replacements for standard (POSIX, C99) functions not provided by the host platform. socket_wrapper - Wrapper library allowing TCP/IP traffic to be redirected over Unix domain sockets. +subunit - Utilities and bindings for working with the Subunit test result + reporting protocol. talloc - Hierarchical pool based memory allocator tdb - Simple but fast key/value database library, supporting multiple writers torture - Simple unit testing helper library diff --git a/lib/subunit/python/subunit/run.py b/lib/subunit/python/subunit/run.py index e57939fdfa5..01c0b0e9e6b 100755 --- a/lib/subunit/python/subunit/run.py +++ b/lib/subunit/python/subunit/run.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python # # Simple subunit testrunner for python # Copyright (C) Jelmer Vernooij 2007 diff --git a/lib/subunit/python/subunit/test_results.py b/lib/subunit/python/subunit/test_results.py index 4ccc2aab351..6cf84c519e9 100644 --- a/lib/subunit/python/subunit/test_results.py +++ b/lib/subunit/python/subunit/test_results.py @@ -83,8 +83,8 @@ class TestResultDecorator(object): def stop(self): return self.decorated.stop() - def tags(self, gone_tags, new_tags): - return self.decorated.time(gone_tags, new_tags) + def tags(self, new_tags, gone_tags): + return self.decorated.time(new_tags, gone_tags) def time(self, a_datetime): return self.decorated.time(a_datetime) diff --git a/lib/subunit/python/testtools/matchers.py b/lib/subunit/python/testtools/matchers.py index 244daceb7f4..039c84b7c7e 100644 --- a/lib/subunit/python/testtools/matchers.py +++ b/lib/subunit/python/testtools/matchers.py @@ -12,6 +12,7 @@ $ python -c 'import testtools.matchers; print testtools.matchers.__all__' __metaclass__ = type __all__ = [ + 'Annotate', 'DocTestMatches', 'Equals', 'MatchesAll', @@ -249,3 +250,33 @@ class MatchedUnexpectedly: def describe(self): return "%r matches %s" % (self.other, self.matcher) + + +class Annotate: + """Annotates a matcher with a descriptive string. + + Mismatches are then described as ': '. + """ + + def __init__(self, annotation, matcher): + self.annotation = annotation + self.matcher = matcher + + def __str__(self): + return 'Annotate(%r, %s)' % (self.annotation, self.matcher) + + def match(self, other): + mismatch = self.matcher.match(other) + if mismatch is not None: + return AnnotatedMismatch(self.annotation, mismatch) + + +class AnnotatedMismatch: + """A mismatch annotated with a descriptive string.""" + + def __init__(self, annotation, mismatch): + self.annotation = annotation + self.mismatch = mismatch + + def describe(self): + return '%s: %s' % (self.mismatch.describe(), self.annotation) diff --git a/lib/subunit/python/testtools/tests/test_matchers.py b/lib/subunit/python/testtools/tests/test_matchers.py index d5fd8bab3b5..74b1ebc56ac 100644 --- a/lib/subunit/python/testtools/tests/test_matchers.py +++ b/lib/subunit/python/testtools/tests/test_matchers.py @@ -9,6 +9,7 @@ from testtools import ( TestCase, ) from testtools.matchers import ( + Annotate, Equals, DocTestMatches, MatchesAny, @@ -153,6 +154,18 @@ class TestMatchesAllInterface(TestCase, TestMatchersInterface): 1, MatchesAll(NotEquals(1), NotEquals(2)))] +class TestAnnotate(TestCase, TestMatchersInterface): + + matches_matcher = Annotate("foo", Equals(1)) + matches_matches = [1] + matches_mismatches = [2] + + str_examples = [ + ("Annotate('foo', Equals(1))", Annotate("foo", Equals(1)))] + + describe_examples = [("1 != 2: foo", 2, Annotate('foo', Equals(1)))] + + def test_suite(): from unittest import TestLoader return TestLoader().loadTestsFromName(__name__) -- 2.34.1