diff options
| -rwxr-xr-x | scripts/oe-selftest | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/scripts/oe-selftest b/scripts/oe-selftest index 303b1d52ea..3188a410cb 100755 --- a/scripts/oe-selftest +++ b/scripts/oe-selftest | |||
| @@ -48,8 +48,19 @@ import oeqa.utils.ftools as ftools | |||
| 48 | from oeqa.utils.commands import runCmd, get_bb_var, get_test_layer | 48 | from oeqa.utils.commands import runCmd, get_bb_var, get_test_layer |
| 49 | from oeqa.selftest.base import oeSelfTest, get_available_machines | 49 | from oeqa.selftest.base import oeSelfTest, get_available_machines |
| 50 | 50 | ||
| 51 | try: | ||
| 52 | import xmlrunner | ||
| 53 | from xmlrunner.result import _XMLTestResult as TestResult | ||
| 54 | from xmlrunner import XMLTestRunner as _TestRunner | ||
| 55 | except ImportError: | ||
| 56 | # use the base runner instead | ||
| 57 | from unittest import TextTestResult as TestResult | ||
| 58 | from unittest import TextTestRunner as _TestRunner | ||
| 59 | |||
| 60 | log_prefix = "oe-selftest-" + t.strftime("%Y-%m-%d_%H:%M:%S") | ||
| 61 | |||
| 51 | def logger_create(): | 62 | def logger_create(): |
| 52 | log_file = "oe-selftest-" + t.strftime("%Y-%m-%d_%H:%M:%S") + ".log" | 63 | log_file = log_prefix + ".log" |
| 53 | if os.path.exists("oe-selftest.log"): os.remove("oe-selftest.log") | 64 | if os.path.exists("oe-selftest.log"): os.remove("oe-selftest.log") |
| 54 | os.symlink(log_file, "oe-selftest.log") | 65 | os.symlink(log_file, "oe-selftest.log") |
| 55 | 66 | ||
| @@ -520,7 +531,8 @@ def main(): | |||
| 520 | suite = unittest.TestSuite() | 531 | suite = unittest.TestSuite() |
| 521 | loader = unittest.TestLoader() | 532 | loader = unittest.TestLoader() |
| 522 | loader.sortTestMethodsUsing = None | 533 | loader.sortTestMethodsUsing = None |
| 523 | runner = unittest.TextTestRunner(verbosity=2, resultclass=buildResultClass(args)) | 534 | runner = TestRunner(verbosity=2, |
| 535 | resultclass=buildResultClass(args)) | ||
| 524 | # we need to do this here, otherwise just loading the tests | 536 | # we need to do this here, otherwise just loading the tests |
| 525 | # will take 2 minutes (bitbake -e calls) | 537 | # will take 2 minutes (bitbake -e calls) |
| 526 | oeSelfTest.testlayer_path = get_test_layer() | 538 | oeSelfTest.testlayer_path = get_test_layer() |
| @@ -561,7 +573,7 @@ def buildResultClass(args): | |||
| 561 | """Build a Result Class to use in the testcase execution""" | 573 | """Build a Result Class to use in the testcase execution""" |
| 562 | import site | 574 | import site |
| 563 | 575 | ||
| 564 | class StampedResult(unittest.TextTestResult): | 576 | class StampedResult(TestResult): |
| 565 | """ | 577 | """ |
| 566 | Custom TestResult that prints the time when a test starts. As oe-selftest | 578 | Custom TestResult that prints the time when a test starts. As oe-selftest |
| 567 | can take a long time (ie a few hours) to run, timestamps help us understand | 579 | can take a long time (ie a few hours) to run, timestamps help us understand |
| @@ -631,6 +643,21 @@ def buildResultClass(args): | |||
| 631 | 643 | ||
| 632 | return StampedResult | 644 | return StampedResult |
| 633 | 645 | ||
| 646 | class TestRunner(_TestRunner): | ||
| 647 | """Test runner class aware of exporting tests.""" | ||
| 648 | def __init__(self, *args, **kwargs): | ||
| 649 | try: | ||
| 650 | exportdir = os.path.join(os.getcwd(), log_prefix) | ||
| 651 | kwargsx = dict(**kwargs) | ||
| 652 | # argument specific to XMLTestRunner, if adding a new runner then | ||
| 653 | # also add logic to use other runner's args. | ||
| 654 | kwargsx['output'] = exportdir | ||
| 655 | kwargsx['descriptions'] = False | ||
| 656 | # done for the case where telling the runner where to export | ||
| 657 | super(TestRunner, self).__init__(*args, **kwargsx) | ||
| 658 | except TypeError: | ||
| 659 | log.info("test runner init'ed like unittest") | ||
| 660 | super(TestRunner, self).__init__(*args, **kwargs) | ||
| 634 | 661 | ||
| 635 | if __name__ == "__main__": | 662 | if __name__ == "__main__": |
| 636 | try: | 663 | try: |
