Michael137 created this revision. Michael137 added reviewers: labath, aprantl. Herald added a project: All. Michael137 requested review of this revision. Herald added a project: LLDB. Herald added a subscriber: lldb-commits.
Currently, by default LLDB runs an API test with 3 variants, one of which, depending on platform, is `gmodules`. However, most tests don't actually make use of any specific `gmodules` feature since they compile a single `main.cpp` file without imporint types from other modules. Instead of running all tests an extra time with `-gmodules` enabled, we plan to test `gmodules` features with dedicated API tests that explicitly opt-into compiling with `-gmodules`. One of the main benefits of this will be a reduction in total API test-suite run-time (by around 1/3). This patch adds the `@gmodules_test` decorator which test cases will be decorated with to specify that we're running a `gmodules` test. The decorator serves following purposes: 1. Will skip the test on unsupported platforms 2. Add a single debug-info variant to the test-category such that we don't run a `gmodules` test multiple times To enable compilation with `-gmodules`, the `MAKE_GMODULES` flag will be needed in the test's `Makefile`. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D134344 Files: lldb/packages/Python/lldbsuite/test/decorators.py Index: lldb/packages/Python/lldbsuite/test/decorators.py =================================================================== --- lldb/packages/Python/lldbsuite/test/decorators.py +++ lldb/packages/Python/lldbsuite/test/decorators.py @@ -21,10 +21,10 @@ from . import test_categories from . import lldbtest_config from lldbsuite.support import funcutils +from lldbsuite.support import gmodules from lldbsuite.test import lldbplatform from lldbsuite.test import lldbplatformutil - class DecorateMode: Skip, Xfail = range(2) @@ -390,6 +390,25 @@ return skipTestIfFn(should_skip_simulator_test) +def gmodules_test(func): + """ + Use this decorator for 'gmodules'-specific tests. This decorator + makes sure we skip the test if 'gmodules' is unsupported on the + host platforma and adds a single debug_info category to the test + so we don't run it multiple times for each debug_info variant. + """ + def should_skip_gmodules_test(self): + supported_platforms = ["darwin", "macosx", "ios", "watchos", "tvos", "bridgeos"] + platform = lldbplatformutil.getHostPlatform() + compiler_path = self.getCompiler() + if platform not in supported_platforms: + return "Tests not supported on " % lldbplatformutil.getHostPlatform() + elif not gmodules.is_compiler_clang_with_gmodules(compiler_path): + return "-gmodules option is not supported on " % compiler_path + else: + return None + + return skipTestIfFn(should_skip_gmodules_test)(add_test_categories(["dwarf"])(func)) def debugserver_test(func): """Decorate the item as a debugserver test."""
Index: lldb/packages/Python/lldbsuite/test/decorators.py =================================================================== --- lldb/packages/Python/lldbsuite/test/decorators.py +++ lldb/packages/Python/lldbsuite/test/decorators.py @@ -21,10 +21,10 @@ from . import test_categories from . import lldbtest_config from lldbsuite.support import funcutils +from lldbsuite.support import gmodules from lldbsuite.test import lldbplatform from lldbsuite.test import lldbplatformutil - class DecorateMode: Skip, Xfail = range(2) @@ -390,6 +390,25 @@ return skipTestIfFn(should_skip_simulator_test) +def gmodules_test(func): + """ + Use this decorator for 'gmodules'-specific tests. This decorator + makes sure we skip the test if 'gmodules' is unsupported on the + host platforma and adds a single debug_info category to the test + so we don't run it multiple times for each debug_info variant. + """ + def should_skip_gmodules_test(self): + supported_platforms = ["darwin", "macosx", "ios", "watchos", "tvos", "bridgeos"] + platform = lldbplatformutil.getHostPlatform() + compiler_path = self.getCompiler() + if platform not in supported_platforms: + return "Tests not supported on " % lldbplatformutil.getHostPlatform() + elif not gmodules.is_compiler_clang_with_gmodules(compiler_path): + return "-gmodules option is not supported on " % compiler_path + else: + return None + + return skipTestIfFn(should_skip_gmodules_test)(add_test_categories(["dwarf"])(func)) def debugserver_test(func): """Decorate the item as a debugserver test."""
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits