|
4 | 4 | importtime
|
5 | 5 | importwarnings
|
6 | 6 |
|
7 |
| -from_colorizeimportget_colors |
| 7 | +from_colorizeimportget_theme |
8 | 8 |
|
9 | 9 | from .importresult
|
10 | 10 | from .caseimport_SubTest
|
@@ -45,7 +45,7 @@ def __init__(self, stream, descriptions, verbosity, *, durations=None):
|
45 | 45 | self.showAll=verbosity>1
|
46 | 46 | self.dots=verbosity==1
|
47 | 47 | self.descriptions=descriptions
|
48 |
| -self._ansi=get_colors(file=stream) |
| 48 | +self._theme=get_theme(tty_file=stream).unittest |
49 | 49 | self._newline=True
|
50 | 50 | self.durations=durations
|
51 | 51 |
|
@@ -79,101 +79,99 @@ def _write_status(self, test, status):
|
79 | 79 |
|
80 | 80 | defaddSubTest(self,test,subtest,err):
|
81 | 81 | iferrisnotNone:
|
82 |
| -red,reset=self._ansi.RED,self._ansi.RESET |
| 82 | +t=self._theme |
83 | 83 | ifself.showAll:
|
84 | 84 | ifissubclass(err[0],subtest.failureException):
|
85 |
| -self._write_status(subtest,f"{red}FAIL{reset}") |
| 85 | +self._write_status(subtest,f"{t.fail}FAIL{t.reset}") |
86 | 86 | else:
|
87 |
| -self._write_status(subtest,f"{red}ERROR{reset}") |
| 87 | +self._write_status(subtest,f"{t.fail}ERROR{t.reset}") |
88 | 88 | elifself.dots:
|
89 | 89 | ifissubclass(err[0],subtest.failureException):
|
90 |
| -self.stream.write(f"{red}F{reset}") |
| 90 | +self.stream.write(f"{t.fail}F{t.reset}") |
91 | 91 | else:
|
92 |
| -self.stream.write(f"{red}E{reset}") |
| 92 | +self.stream.write(f"{t.fail}E{t.reset}") |
93 | 93 | self.stream.flush()
|
94 | 94 | super(TextTestResult,self).addSubTest(test,subtest,err)
|
95 | 95 |
|
96 | 96 | defaddSuccess(self,test):
|
97 | 97 | super(TextTestResult,self).addSuccess(test)
|
98 |
| -green,reset=self._ansi.GREEN,self._ansi.RESET |
| 98 | +t=self._theme |
99 | 99 | ifself.showAll:
|
100 |
| -self._write_status(test,f"{green}ok{reset}") |
| 100 | +self._write_status(test,f"{t.passed}ok{t.reset}") |
101 | 101 | elifself.dots:
|
102 |
| -self.stream.write(f"{green}.{reset}") |
| 102 | +self.stream.write(f"{t.passed}.{t.reset}") |
103 | 103 | self.stream.flush()
|
104 | 104 |
|
105 | 105 | defaddError(self,test,err):
|
106 | 106 | super(TextTestResult,self).addError(test,err)
|
107 |
| -red,reset=self._ansi.RED,self._ansi.RESET |
| 107 | +t=self._theme |
108 | 108 | ifself.showAll:
|
109 |
| -self._write_status(test,f"{red}ERROR{reset}") |
| 109 | +self._write_status(test,f"{t.fail}ERROR{t.reset}") |
110 | 110 | elifself.dots:
|
111 |
| -self.stream.write(f"{red}E{reset}") |
| 111 | +self.stream.write(f"{t.fail}E{t.reset}") |
112 | 112 | self.stream.flush()
|
113 | 113 |
|
114 | 114 | defaddFailure(self,test,err):
|
115 | 115 | super(TextTestResult,self).addFailure(test,err)
|
116 |
| -red,reset=self._ansi.RED,self._ansi.RESET |
| 116 | +t=self._theme |
117 | 117 | ifself.showAll:
|
118 |
| -self._write_status(test,f"{red}FAIL{reset}") |
| 118 | +self._write_status(test,f"{t.fail}FAIL{t.reset}") |
119 | 119 | elifself.dots:
|
120 |
| -self.stream.write(f"{red}F{reset}") |
| 120 | +self.stream.write(f"{t.fail}F{t.reset}") |
121 | 121 | self.stream.flush()
|
122 | 122 |
|
123 | 123 | defaddSkip(self,test,reason):
|
124 | 124 | super(TextTestResult,self).addSkip(test,reason)
|
125 |
| -yellow,reset=self._ansi.YELLOW,self._ansi.RESET |
| 125 | +t=self._theme |
126 | 126 | ifself.showAll:
|
127 |
| -self._write_status(test,f"{yellow}skipped{reset}{reason!r}") |
| 127 | +self._write_status(test,f"{t.warn}skipped{t.reset}{reason!r}") |
128 | 128 | elifself.dots:
|
129 |
| -self.stream.write(f"{yellow}s{reset}") |
| 129 | +self.stream.write(f"{t.warn}s{t.reset}") |
130 | 130 | self.stream.flush()
|
131 | 131 |
|
132 | 132 | defaddExpectedFailure(self,test,err):
|
133 | 133 | super(TextTestResult,self).addExpectedFailure(test,err)
|
134 |
| -yellow,reset=self._ansi.YELLOW,self._ansi.RESET |
| 134 | +t=self._theme |
135 | 135 | ifself.showAll:
|
136 |
| -self.stream.writeln(f"{yellow}expected failure{reset}") |
| 136 | +self.stream.writeln(f"{t.warn}expected failure{t.reset}") |
137 | 137 | self.stream.flush()
|
138 | 138 | elifself.dots:
|
139 |
| -self.stream.write(f"{yellow}x{reset}") |
| 139 | +self.stream.write(f"{t.warn}x{t.reset}") |
140 | 140 | self.stream.flush()
|
141 | 141 |
|
142 | 142 | defaddUnexpectedSuccess(self,test):
|
143 | 143 | super(TextTestResult,self).addUnexpectedSuccess(test)
|
144 |
| -red,reset=self._ansi.RED,self._ansi.RESET |
| 144 | +t=self._theme |
145 | 145 | ifself.showAll:
|
146 |
| -self.stream.writeln(f"{red}unexpected success{reset}") |
| 146 | +self.stream.writeln(f"{t.fail}unexpected success{t.reset}") |
147 | 147 | self.stream.flush()
|
148 | 148 | elifself.dots:
|
149 |
| -self.stream.write(f"{red}u{reset}") |
| 149 | +self.stream.write(f"{t.fail}u{t.reset}") |
150 | 150 | self.stream.flush()
|
151 | 151 |
|
152 | 152 | defprintErrors(self):
|
153 |
| -bold_red=self._ansi.BOLD_RED |
154 |
| -red=self._ansi.RED |
155 |
| -reset=self._ansi.RESET |
| 153 | +t=self._theme |
156 | 154 | ifself.dotsorself.showAll:
|
157 | 155 | self.stream.writeln()
|
158 | 156 | self.stream.flush()
|
159 |
| -self.printErrorList(f"{red}ERROR{reset}",self.errors) |
160 |
| -self.printErrorList(f"{red}FAIL{reset}",self.failures) |
| 157 | +self.printErrorList(f"{t.fail}ERROR{t.reset}",self.errors) |
| 158 | +self.printErrorList(f"{t.fail}FAIL{t.reset}",self.failures) |
161 | 159 | unexpectedSuccesses=getattr(self,"unexpectedSuccesses", ())
|
162 | 160 | ifunexpectedSuccesses:
|
163 | 161 | self.stream.writeln(self.separator1)
|
164 | 162 | fortestinunexpectedSuccesses:
|
165 | 163 | self.stream.writeln(
|
166 |
| -f"{red}UNEXPECTED SUCCESS{bold_red}: " |
167 |
| -f"{self.getDescription(test)}{reset}" |
| 164 | +f"{t.fail}UNEXPECTED SUCCESS{t.fail_info}: " |
| 165 | +f"{self.getDescription(test)}{t.reset}" |
168 | 166 | )
|
169 | 167 | self.stream.flush()
|
170 | 168 |
|
171 | 169 | defprintErrorList(self,flavour,errors):
|
172 |
| -bold_red,reset=self._ansi.BOLD_RED,self._ansi.RESET |
| 170 | +t=self._theme |
173 | 171 | fortest,errinerrors:
|
174 | 172 | self.stream.writeln(self.separator1)
|
175 | 173 | self.stream.writeln(
|
176 |
| -f"{flavour}{bold_red}:{self.getDescription(test)}{reset}" |
| 174 | +f"{flavour}{t.fail_info}:{self.getDescription(test)}{t.reset}" |
177 | 175 | )
|
178 | 176 | self.stream.writeln(self.separator2)
|
179 | 177 | self.stream.writeln("%s"%err)
|
@@ -286,31 +284,26 @@ def run(self, test):
|
286 | 284 | expected_fails,unexpected_successes,skipped=results
|
287 | 285 |
|
288 | 286 | infos= []
|
289 |
| -ansi=get_colors(file=self.stream) |
290 |
| -bold_red=ansi.BOLD_RED |
291 |
| -green=ansi.GREEN |
292 |
| -red=ansi.RED |
293 |
| -reset=ansi.RESET |
294 |
| -yellow=ansi.YELLOW |
| 287 | +t=get_theme(tty_file=self.stream).unittest |
295 | 288 |
|
296 | 289 | ifnotresult.wasSuccessful():
|
297 |
| -self.stream.write(f"{bold_red}FAILED{reset}") |
| 290 | +self.stream.write(f"{t.fail_info}FAILED{t.reset}") |
298 | 291 | failed,errored=len(result.failures),len(result.errors)
|
299 | 292 | iffailed:
|
300 |
| -infos.append(f"{bold_red}failures={failed}{reset}") |
| 293 | +infos.append(f"{t.fail_info}failures={failed}{t.reset}") |
301 | 294 | iferrored:
|
302 |
| -infos.append(f"{bold_red}errors={errored}{reset}") |
| 295 | +infos.append(f"{t.fail_info}errors={errored}{t.reset}") |
303 | 296 | elifrun==0andnotskipped:
|
304 |
| -self.stream.write(f"{yellow}NO TESTS RAN{reset}") |
| 297 | +self.stream.write(f"{t.warn}NO TESTS RAN{t.reset}") |
305 | 298 | else:
|
306 |
| -self.stream.write(f"{green}OK{reset}") |
| 299 | +self.stream.write(f"{t.passed}OK{t.reset}") |
307 | 300 | ifskipped:
|
308 |
| -infos.append(f"{yellow}skipped={skipped}{reset}") |
| 301 | +infos.append(f"{t.warn}skipped={skipped}{t.reset}") |
309 | 302 | ifexpected_fails:
|
310 |
| -infos.append(f"{yellow}expected failures={expected_fails}{reset}") |
| 303 | +infos.append(f"{t.warn}expected failures={expected_fails}{t.reset}") |
311 | 304 | ifunexpected_successes:
|
312 | 305 | infos.append(
|
313 |
| -f"{red}unexpected successes={unexpected_successes}{reset}" |
| 306 | +f"{t.fail}unexpected successes={unexpected_successes}{t.reset}" |
314 | 307 | )
|
315 | 308 | ifinfos:
|
316 | 309 | self.stream.writeln(" (%s)"% (", ".join(infos),))
|
|