(self)
| 601 | self.context.store_unexpected_output) |
| 602 | |
| 603 | def Run(self): |
| 604 | try: |
| 605 | run_configuration = self.GetRunConfiguration() |
| 606 | command = run_configuration['command'] |
| 607 | envs = {} |
| 608 | if 'envs' in run_configuration: |
| 609 | envs.update(run_configuration['envs']) |
| 610 | envs.update({ |
| 611 | "TEST_SERIAL_ID": "%d" % self.serial_id, |
| 612 | "TEST_THREAD_ID": "%d" % self.thread_id, |
| 613 | "TEST_PARALLEL" : "%d" % self.parallel, |
| 614 | "GITHUB_STEP_SUMMARY": "", |
| 615 | }) |
| 616 | result = self.RunCommand( |
| 617 | command, |
| 618 | envs |
| 619 | ) |
| 620 | finally: |
| 621 | # Tests can leave the tty in non-blocking mode. If the test runner |
| 622 | # tries to print to stdout/stderr after that and the tty buffer is |
| 623 | # full, it'll die with a EAGAIN OSError. Ergo, put the tty back in |
| 624 | # blocking mode before proceeding. |
| 625 | if sys.platform != 'win32': |
| 626 | from fcntl import fcntl, F_GETFL, F_SETFL |
| 627 | from os import O_NONBLOCK |
| 628 | for fd in 0,1,2: fcntl(fd, F_SETFL, ~O_NONBLOCK & fcntl(fd, F_GETFL)) |
| 629 | |
| 630 | return result |
| 631 | |
| 632 | |
| 633 | class TestOutput(object): |
no test coverage detected