diff options
Diffstat (limited to 'test/framework.py')
-rw-r--r-- | test/framework.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/framework.py b/test/framework.py index 8c0df282153..2c74a03bf37 100644 --- a/test/framework.py +++ b/test/framework.py @@ -286,6 +286,8 @@ class TestCaseTag(Enum): RUN_SOLO = 1 # marks the suites broken on VPP multi-worker FIXME_VPP_WORKERS = 2 + # marks the suites broken when ASan is enabled + FIXME_ASAN = 3 def create_tag_decorator(e): @@ -300,6 +302,7 @@ def create_tag_decorator(e): tag_run_solo = create_tag_decorator(TestCaseTag.RUN_SOLO) tag_fixme_vpp_workers = create_tag_decorator(TestCaseTag.FIXME_VPP_WORKERS) +tag_fixme_asan = create_tag_decorator(TestCaseTag.FIXME_ASAN) class DummyVpp: @@ -366,6 +369,14 @@ class VppTestCase(CPUInterface, unittest.TestCase): return cls.has_tag(TestCaseTag.RUN_SOLO) @classmethod + def skip_fixme_asan(cls): + """ if @tag_fixme_asan & ASan is enabled - mark for skip """ + if cls.has_tag(TestCaseTag.FIXME_ASAN): + vpp_extra_cmake_args = os.environ.get('VPP_EXTRA_CMAKE_ARGS', '') + if 'DVPP_ENABLE_SANITIZE_ADDR=ON' in vpp_extra_cmake_args: + cls = unittest.skip("Skipping @tag_fixme_asan tests")(cls) + + @classmethod def instance(cls): """Return the instance of this testcase""" return cls.test_instance @@ -1559,6 +1570,11 @@ class VppTestResult(unittest.TestResult): test_title = colorize( f"FIXME with VPP workers: {test_title}", RED) + if test.has_tag(TestCaseTag.FIXME_ASAN): + test_title = colorize( + f"FIXME with ASAN: {test_title}", RED) + test.skip_fixme_asan() + if hasattr(test, 'vpp_worker_count'): if test.vpp_worker_count == 0: test_title += " [main thread only]" |