11
11
from testtools.matchers import (
16
class TestDocTestMatchesInterface(TestCase):
18
class TestMatchersInterface:
18
def test_matches_matches(self):
19
matcher = DocTestMatches("Ran 1 test in ...s", doctest.ELLIPSIS)
20
matches = ["Ran 1 test in 0.000s", "Ran 1 test in 1.234s"]
21
mismatches = ["Ran 1 tests in 0.000s", "Ran 2 test in 0.000s"]
20
def test_matches_match(self):
21
matcher = self.matches_matcher
22
matches = self.matches_matches
23
mismatches = self.matches_mismatches
22
24
for candidate in matches:
23
self.assertTrue(matcher.matches(candidate))
25
self.assertEqual(None, matcher.match(candidate))
24
26
for candidate in mismatches:
25
self.assertFalse(matcher.matches(candidate))
27
mismatch = matcher.match(candidate)
28
self.assertNotEqual(None, mismatch)
29
self.assertNotEqual(None, getattr(mismatch, 'describe', None))
27
31
def test__str__(self):
28
32
# [(expected, object to __str__)].
29
examples = [("DocTestMatches('Ran 1 test in ...s\\n')",
30
DocTestMatches("Ran 1 test in ...s")),
31
("DocTestMatches('foo\\n', flags=8)", DocTestMatches("foo", flags=8)),
33
examples = self.str_examples
33
34
for expected, matcher in examples:
34
35
self.assertThat(matcher, DocTestMatches(expected))
36
37
def test_describe_difference(self):
37
38
# [(expected, matchee, matcher), ...]
38
examples = [('Expected:\n Ran 1 test in ...s\nGot:\n'
39
' Ran 1 test in 0.123s\n', "Ran 1 test in 0.123s",
40
DocTestMatches("Ran 1 test in ...s", doctest.ELLIPSIS))]
39
examples = self.describe_examples
41
40
for difference, matchee, matcher in examples:
42
self.assertEqual(difference, matcher.describe_difference(matchee))
41
mismatch = matcher.match(matchee)
42
self.assertEqual(difference, mismatch.describe())
45
class TestDocTestMatchesInterface(TestCase, TestMatchersInterface):
47
matches_matcher = DocTestMatches("Ran 1 test in ...s", doctest.ELLIPSIS)
48
matches_matches = ["Ran 1 test in 0.000s", "Ran 1 test in 1.234s"]
49
matches_mismatches = ["Ran 1 tests in 0.000s", "Ran 2 test in 0.000s"]
51
str_examples = [("DocTestMatches('Ran 1 test in ...s\\n')",
52
DocTestMatches("Ran 1 test in ...s")),
53
("DocTestMatches('foo\\n', flags=8)", DocTestMatches("foo", flags=8)),
56
describe_examples = [('Expected:\n Ran 1 tests in ...s\nGot:\n'
57
' Ran 1 test in 0.123s\n', "Ran 1 test in 0.123s",
58
DocTestMatches("Ran 1 tests in ...s", doctest.ELLIPSIS))]
45
61
class TestDocTestMatchesSpecific(TestCase):
54
70
self.assertEqual(doctest.ELLIPSIS, matcher.flags)
73
class TestEqualsInterface(TestCase, TestMatchersInterface):
75
matches_matcher = Equals(1)
77
matches_mismatches = [2]
79
str_examples = [("Equals(1)", Equals(1)), ("Equals('1')", Equals('1'))]
81
describe_examples = [("1 != 2", 2, Equals(1))]
84
class TestMatchersAnyInterface(TestCase, TestMatchersInterface):
86
matches_matcher = MatchesAny(DocTestMatches("1"), DocTestMatches("2"))
87
matches_matches = ["1", "2"]
88
matches_mismatches = ["3"]
91
"MatchesAny(DocTestMatches('1\\n'), DocTestMatches('2\\n'))",
92
MatchesAny(DocTestMatches("1"), DocTestMatches("2"))),
95
describe_examples = [("""Differences: [
108
"3", MatchesAny(DocTestMatches("1"), DocTestMatches("2")))]
58
112
from unittest import TestLoader
59
113
return TestLoader().loadTestsFromName(__name__)