diff options
| author | Max Reitz <mreitz@redhat.com> | 2019-09-17 11:19:59 +0200 |
|---|---|---|
| committer | Max Reitz <mreitz@redhat.com> | 2019-10-28 11:22:30 +0100 |
| commit | 6be012252018249d3a2843a0143ee8cca41c276d (patch) | |
| tree | beefd2cb040c0ab361b73492730be382234d83e5 | |
| parent | a6f8f9f82c857cf31cda702e6c62d623e8ddedd5 (diff) | |
| download | focaccia-qemu-6be012252018249d3a2843a0143ee8cca41c276d.tar.gz focaccia-qemu-6be012252018249d3a2843a0143ee8cca41c276d.zip | |
iotests: Allow skipping test cases
case_notrun() does not actually skip the current test case. It just adds a "notrun" note and then returns to the caller, who manually has to skip the test. Generally, skipping a test case is as simple as returning from the current function, but not always: For example, this model does not allow skipping tests already in the setUp() function. Thus, add a QMPTestCase.case_skip() function that invokes case_notrun() and then self.skipTest(). To make this work, we need to filter the information on how many test cases were skipped from the unittest output. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com> Message-id: 20190917092004.999-3-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
| -rw-r--r-- | tests/qemu-iotests/iotests.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 709def4d5d..6d5de6e504 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -838,6 +838,11 @@ class QMPTestCase(unittest.TestCase): return self.pause_wait(job_id) return result + def case_skip(self, reason): + '''Skip this test case''' + case_notrun(reason) + self.skipTest(reason) + def notrun(reason): '''Skip this test suite''' @@ -849,7 +854,11 @@ def notrun(reason): sys.exit(0) def case_notrun(reason): - '''Skip this test case''' + '''Mark this test case as not having been run (without actually + skipping it, that is left to the caller). See + QMPTestCase.case_skip() for a variant that actually skips the + current test case.''' + # Each test in qemu-iotests has a number ("seq") seq = os.path.basename(sys.argv[0]) @@ -950,8 +959,15 @@ def execute_unittest(output, verbosity, debug): unittest.main(testRunner=runner) finally: if not debug: - sys.stderr.write(re.sub(r'Ran (\d+) tests? in [\d.]+s', - r'Ran \1 tests', output.getvalue())) + out = output.getvalue() + out = re.sub(r'Ran (\d+) tests? in [\d.]+s', r'Ran \1 tests', out) + + # Hide skipped tests from the reference output + out = re.sub(r'OK \(skipped=\d+\)', 'OK', out) + out_first_line, out_rest = out.split('\n', 1) + out = out_first_line.replace('s', '.') + '\n' + out_rest + + sys.stderr.write(out) def execute_test(test_function=None, supported_fmts=[], supported_oses=['linux'], |