Commit | Line | Data |
---|---|---|
0235b0db MJ |
1 | # SPDX-License-Identifier: BSD-2-Clause |
2 | # | |
b85894a3 MJ |
3 | # Copyright (c) 2016, Matt Layman |
4 | ||
5 | ||
6 | class Adapter(object): | |
7 | """The adapter processes a TAP test line and updates a unittest result. | |
8 | ||
9 | It is an alternative to TestCase to collect TAP results. | |
10 | """ | |
768f9bcb | 11 | |
b85894a3 MJ |
12 | failureException = AssertionError |
13 | ||
14 | def __init__(self, filename, line): | |
15 | self._filename = filename | |
16 | self._line = line | |
17 | ||
18 | def shortDescription(self): | |
19 | """Get the short description for verbeose results.""" | |
20 | return self._line.description | |
21 | ||
22 | def __call__(self, result): | |
23 | """Update test result with the lines in the TAP file. | |
24 | ||
25 | Provide the interface that TestCase provides to a suite or runner. | |
26 | """ | |
27 | result.startTest(self) | |
28 | ||
29 | if self._line.skip: | |
30 | result.addSkip(None, self._line.directive.reason) | |
31 | return | |
32 | ||
33 | if self._line.todo: | |
34 | if self._line.ok: | |
35 | result.addUnexpectedSuccess(self) | |
36 | else: | |
37 | result.addExpectedFailure(self, (Exception, Exception(), None)) | |
38 | return | |
39 | ||
40 | if self._line.ok: | |
41 | result.addSuccess(self) | |
42 | else: | |
43 | self.addFailure(result) | |
44 | ||
45 | def addFailure(self, result): | |
46 | """Add a failure to the result.""" | |
47 | result.addFailure(self, (Exception, Exception(), None)) | |
48 | # Since TAP will not provide assertion data, clean up the assertion | |
49 | # section so it is not so spaced out. | |
50 | test, err = result.failures[-1] | |
51 | result.failures[-1] = (test, '') | |
52 | ||
53 | def __repr__(self): | |
54 | return '<file={filename}>'.format(filename=self._filename) |