Use Black stable to format python code
[babeltrace.git] / tests / utils / python / tap / line.py
CommitLineData
0235b0db
MJ
1# SPDX-License-Identifier: BSD-2-Clause
2#
b85894a3
MJ
3# Copyright (c) 2016, Matt Layman
4
5
6class Line(object):
7 """Base type for TAP data.
8
9 TAP is a line based protocol. Thus, the most primitive type is a line.
10 """
768f9bcb 11
b85894a3
MJ
12 @property
13 def category(self):
14 raise NotImplementedError
15
16
17class Result(Line):
18 """Information about an individual test line."""
19
20 def __init__(
768f9bcb
MJ
21 self, ok, number=None, description='', directive=None, diagnostics=None
22 ):
b85894a3
MJ
23 self._ok = ok
24 if number:
25 self._number = int(number)
26 else:
27 # The number may be an empty string so explicitly set to None.
28 self._number = None
29 self._description = description
30 self.directive = directive
31 self.diagnostics = diagnostics
32
33 @property
34 def category(self):
35 """:returns: ``test``"""
36 return 'test'
37
38 @property
39 def ok(self):
40 """Get the ok status.
41
42 :rtype: bool
43 """
44 return self._ok
45
46 @property
47 def number(self):
48 """Get the test number.
49
50 :rtype: int
51 """
52 return self._number
53
54 @property
55 def description(self):
56 """Get the description."""
57 return self._description
58
59 @property
60 def skip(self):
61 """Check if this test was skipped.
62
63 :rtype: bool
64 """
65 return self.directive.skip
66
67 @property
68 def todo(self):
69 """Check if this test was a TODO.
70
71 :rtype: bool
72 """
73 return self.directive.todo
74
75 def __str__(self):
76 is_not = ''
77 if not self.ok:
78 is_not = 'not '
79 directive = ''
80 if self.directive is not None and self.directive.text:
81 directive = ' # {0}'.format(self.directive.text)
82 diagnostics = ''
83 if self.diagnostics is not None:
84 diagnostics = '\n' + self.diagnostics.rstrip()
85 return "{0}ok {1} - {2}{3}{4}".format(
768f9bcb
MJ
86 is_not, self.number, self.description, directive, diagnostics
87 )
b85894a3
MJ
88
89
90class Plan(Line):
91 """A plan line to indicate how many tests to expect."""
92
93 def __init__(self, expected_tests, directive=None):
94 self._expected_tests = expected_tests
95 self.directive = directive
96
97 @property
98 def category(self):
99 """:returns: ``plan``"""
100 return 'plan'
101
102 @property
103 def expected_tests(self):
104 """Get the number of expected tests.
105
106 :rtype: int
107 """
108 return self._expected_tests
109
110 @property
111 def skip(self):
112 """Check if this plan should skip the file.
113
114 :rtype: bool
115 """
116 return self.directive.skip
117
118
119class Diagnostic(Line):
120 """A diagnostic line (i.e. anything starting with a hash)."""
121
122 def __init__(self, text):
123 self._text = text
124
125 @property
126 def category(self):
127 """:returns: ``diagnostic``"""
128 return 'diagnostic'
129
130 @property
131 def text(self):
132 """Get the text."""
133 return self._text
134
135
136class Bail(Line):
137 """A bail out line (i.e. anything starting with 'Bail out!')."""
138
139 def __init__(self, reason):
140 self._reason = reason
141
142 @property
143 def category(self):
144 """:returns: ``bail``"""
145 return 'bail'
146
147 @property
148 def reason(self):
149 """Get the reason."""
150 return self._reason
151
152
153class Version(Line):
154 """A version line (i.e. of the form 'TAP version 13')."""
155
156 def __init__(self, version):
157 self._version = version
158
159 @property
160 def category(self):
161 """:returns: ``version``"""
162 return 'version'
163
164 @property
165 def version(self):
166 """Get the version number.
167
168 :rtype: int
169 """
170 return self._version
171
172
173class Unknown(Line):
174 """A line that represents something that is not a known TAP line.
175
176 This exists for the purpose of a Null Object pattern.
177 """
768f9bcb 178
b85894a3
MJ
179 @property
180 def category(self):
181 """:returns: ``unknown``"""
182 return 'unknown'
This page took 0.06026 seconds and 4 git commands to generate.