~bzr/ubuntu/natty/python-testtools/bzr-ppa

« back to all changes in this revision

Viewing changes to testtools/tests/helpers.py

  • Committer: Robert Collins
  • Date: 2009-11-22 03:48:30 UTC
  • mfrom: (16.11.1 upstream)
  • Revision ID: robertc@robertcollins.net-20091122034830-itaynkycem2mchy9
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
from testtools import TestResult
11
11
 
12
12
 
 
13
# Deprecated: This classes attributes are somewhat non deterministic which
 
14
# leads to hard to predict tests (because Python upstream are changing things.
13
15
class LoggingResult(TestResult):
14
16
    """TestResult that logs its event to a list."""
15
17
 
41
43
        self._events.append(('addSuccess', test))
42
44
        super(LoggingResult, self).addSuccess(test)
43
45
 
 
46
    def startTestRun(self):
 
47
        self._events.append('startTestRun')
 
48
        super(LoggingResult, self).startTestRun()
 
49
        
 
50
    def stopTestRun(self):
 
51
        self._events.append('stopTestRun')
 
52
        super(LoggingResult, self).stopTestRun()
 
53
        
44
54
    def done(self):
45
55
        self._events.append('done')
46
56
        super(LoggingResult, self).done()
 
57
 
 
58
 
 
59
class LoggingBase(object):
 
60
    """Basic support for logging of results."""
 
61
    
 
62
    def __init__(self):
 
63
        self._events = []
 
64
        self.shouldStop = False
 
65
 
 
66
 
 
67
# Note, the following three classes are different to LoggingResult by
 
68
# being fully defined exact matches rather than supersets.
 
69
class Python26TestResult(LoggingBase):
 
70
    """A precisely python 2.6 like test result, that logs."""
 
71
 
 
72
    def addError(self, test, err):
 
73
        self._events.append(('addError', test, err))
 
74
 
 
75
    def addFailure(self, test, err):
 
76
        self._events.append(('addFailure', test, err))
 
77
 
 
78
    def addSuccess(self, test):
 
79
        self._events.append(('addSuccess', test))
 
80
 
 
81
    def startTest(self, test):
 
82
        self._events.append(('startTest', test))
 
83
 
 
84
    def stop(self):
 
85
        self.shouldStop = True
 
86
 
 
87
    def stopTest(self, test):
 
88
        self._events.append(('stopTest', test))
 
89
 
 
90
 
 
91
class Python27TestResult(Python26TestResult):
 
92
    """A precisely python 2.7 like test result, that logs."""
 
93
 
 
94
    def addExpectedFailure(self, test, err):
 
95
        self._events.append(('addExpectedFailure', test, err))
 
96
 
 
97
    def addSkip(self, test, reason):
 
98
        self._events.append(('addSkip', test, reason))
 
99
 
 
100
    def addUnexpectedSuccess(self, test):
 
101
        self._events.append(('addUnexpectedSuccess', test))
 
102
 
 
103
    def startTestRun(self):
 
104
        self._events.append(('startTestRun',))
 
105
 
 
106
    def stopTestRun(self):
 
107
        self._events.append(('stopTestRun',))
 
108
 
 
109
 
 
110
class ExtendedTestResult(Python27TestResult):
 
111
    """A test result like the proposed extended unittest result API."""
 
112
 
 
113
    def addError(self, test, err=None, details=None):
 
114
        self._events.append(('addError', test, err or details))
 
115
 
 
116
    def addFailure(self, test, err=None, details=None):
 
117
        self._events.append(('addFailure', test, err or details))
 
118
 
 
119
    def addExpectedFailure(self, test, err=None, details=None):
 
120
        self._events.append(('addExpectedFailure', test, err or details))
 
121
 
 
122
    def addSkip(self, test, reason=None, details=None):
 
123
        self._events.append(('addSkip', test, reason or details))
 
124
 
 
125
    def addSuccess(self, test, details=None):
 
126
        if details:
 
127
            self._events.append(('addSuccess', test, details))
 
128
        else:
 
129
            self._events.append(('addSuccess', test))
 
130
 
 
131
    def addUnexpectedSuccess(self, test, details=None):
 
132
        if details is not None:
 
133
            self._events.append(('addUnexpectedSuccess', test, details))
 
134
        else:
 
135
            self._events.append(('addUnexpectedSuccess', test))
 
136
 
 
137
    def progress(self, offset, whence):
 
138
        self._events.append(('progress', offset, whence))
 
139
 
 
140
    def tags(self, new_tags, gone_tags):
 
141
        self._events.append(('tags', new_tags, gone_tags))
 
142
 
 
143
    def time(self, time):
 
144
        self._events.append(('time', time))