()
| 273 | |
| 274 | def run_lines_thread(name, file, output_filename, output_list, output_queue): |
| 275 | def thread(): |
| 276 | output_file = None |
| 277 | for line in file: |
| 278 | if output_file is None: |
| 279 | output_file = open(output_filename, "w", buffering=1, encoding="utf-8") # line buffering |
| 280 | output_file.write(line) |
| 281 | line = line.rstrip("\r\n") |
| 282 | output_list.append(line) |
| 283 | if output_queue is not None: |
| 284 | try: |
| 285 | output_queue.put(Log.parse(line)) |
| 286 | except ValueError: |
| 287 | # The client will sometimes print multiple log lines without timestamp and level, for example on assertion errors. |
| 288 | # We store log lines verbatim if they could not be parsed, so we can output the log lines on test failures. |
| 289 | output_queue.put(Log(timestamp=None, level=None, line=line)) |
| 290 | |
| 291 | Thread(name=name, target=thread, daemon=True).start() |
| 292 |
no test coverage detected