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