[Lldb-commits] [lldb] r330708 - [dotest] Make the set of tests independent of the test configuration
Vedant Kumar via lldb-commits
lldb-commits at lists.llvm.org
Wed Apr 25 11:07:32 PDT 2018
Hi Pavel,
> On Apr 24, 2018, at 3:51 AM, Pavel Labath via lldb-commits <lldb-commits at lists.llvm.org> wrote:
>
> Author: labath
> Date: Tue Apr 24 03:51:44 2018
> New Revision: 330708
>
> URL: http://llvm.org/viewvc/llvm-project?rev=330708&view=rev
> Log:
> [dotest] Make the set of tests independent of the test configuration
>
> Summary:
> In the magic test duplicator, we were making the decision whether to
> create a test variant based on the compiler and the target platform.
> This meant that the set of known tests was different for each test
> configuration.
>
> This patch makes the set of generated test variants static and handles
> the skipping via runtime checks instead. This is more consistent with
> how we do other test-skipping decision (e.g. for libc++ tests), and
> makes it easier to expose the full set of tests to lit, which now does
> not need to know anything about what things can potentially cause tests
> to appear or disappear.
>
> Reviewers: JDevlieghere, aprantl
>
> Subscribers: eraman, lldb-commits
>
> Differential Revision: https://reviews.llvm.org/D45949
>
> Modified:
> lldb/trunk/packages/Python/lldbsuite/test/dotest.py
> lldb/trunk/packages/Python/lldbsuite/test/lldbinline.py
> lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py
>
> Modified: lldb/trunk/packages/Python/lldbsuite/test/dotest.py
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/dotest.py?rev=330708&r1=330707&r2=330708&view=diff
> ==============================================================================
> --- lldb/trunk/packages/Python/lldbsuite/test/dotest.py (original)
> +++ lldb/trunk/packages/Python/lldbsuite/test/dotest.py Tue Apr 24 03:51:44 2018
> @@ -1104,6 +1104,22 @@ def checkLibcxxSupport():
> print("Libc++ tests will not be run because: " + reason)
> configuration.skipCategories.append("libc++")
>
> +def checkDebugInfoSupport():
> + import lldb
> +
> + platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2]
> + compiler = configuration.compiler
> + skipped = []
> + for cat in test_categories.debug_info_categories:
> + if cat in configuration.categoriesList:
> + continue # Category explicitly requested, let it run.
Is there a missing check here for:
if cat in configuration.skipCategories:
skip(cat)
Without this, I'm not sure how 'dotest --skip-category days' would work on Darwin.
> + if test_categories.is_supported_on_platform(cat, platform, compiler):
> + continue
> + configuration.skipCategories.append(cat)
> + skipped.append(cat)
> + if skipped:
> + print("Skipping following debug info categories:", skipped)
> +
> def run_suite():
> # On MacOS X, check to make sure that domain for com.apple.DebugSymbols defaults
> # does not exist before proceeding to running the test suite.
> @@ -1212,6 +1228,7 @@ def run_suite():
> target_platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2]
>
> checkLibcxxSupport()
> + checkDebugInfoSupport()
>
> # Don't do debugserver tests on everything except OS X.
> configuration.dont_do_debugserver_test = "linux" in target_platform or "freebsd" in target_platform or "windows" in target_platform
>
> Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbinline.py
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbinline.py?rev=330708&r1=330707&r2=330708&view=diff
> ==============================================================================
> --- lldb/trunk/packages/Python/lldbsuite/test/lldbinline.py (original)
> +++ lldb/trunk/packages/Python/lldbsuite/test/lldbinline.py Tue Apr 24 03:51:44 2018
> @@ -241,23 +241,14 @@ def MakeInlineTest(__file, __globals, de
> test = type(test_name, (InlineTest,), {'using_dsym': None})
> test.name = test_name
>
> - target_platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2]
> - if test_categories.is_supported_on_platform(
> - "dsym", target_platform, configuration.compiler):
> - test.test_with_dsym = ApplyDecoratorsToFunction(
> - test._InlineTest__test_with_dsym, decorators)
> - if test_categories.is_supported_on_platform(
> - "dwarf", target_platform, configuration.compiler):
> - test.test_with_dwarf = ApplyDecoratorsToFunction(
> - test._InlineTest__test_with_dwarf, decorators)
> - if test_categories.is_supported_on_platform(
> - "dwo", target_platform, configuration.compiler):
> - test.test_with_dwo = ApplyDecoratorsToFunction(
> - test._InlineTest__test_with_dwo, decorators)
> - if test_categories.is_supported_on_platform(
> - "gmodules", target_platform, configuration.compiler):
> - test.test_with_gmodules = ApplyDecoratorsToFunction(
> - test._InlineTest__test_with_gmodules, decorators)
> + test.test_with_dsym = ApplyDecoratorsToFunction(
> + test._InlineTest__test_with_dsym, decorators)
> + test.test_with_dwarf = ApplyDecoratorsToFunction(
> + test._InlineTest__test_with_dwarf, decorators)
> + test.test_with_dwo = ApplyDecoratorsToFunction(
> + test._InlineTest__test_with_dwo, decorators)
> + test.test_with_gmodules = ApplyDecoratorsToFunction(
> + test._InlineTest__test_with_gmodules, decorators)
>
> # Add the test case to the globals, and hide InlineTest
> __globals.update({test_name: test})
>
> Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py?rev=330708&r1=330707&r2=330708&view=diff
> ==============================================================================
> --- lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py (original)
> +++ lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Tue Apr 24 03:51:44 2018
> @@ -1732,14 +1732,11 @@ class LLDBTestCaseFactory(type):
> for attrname, attrvalue in attrs.items():
> if attrname.startswith("test") and not getattr(
> attrvalue, "__no_debug_info_test__", False):
> - target_platform = lldb.DBG.GetSelectedPlatform(
> - ).GetTriple().split('-')[2]
>
> # If any debug info categories were explicitly tagged, assume that list to be
> # authoritative. If none were specified, try with all debug
> # info formats.
> - all_dbginfo_categories = set(
> - test_categories.debug_info_categories) - set(configuration.skipCategories)
> + all_dbginfo_categories = set(test_categories.debug_info_categories)
Ditto. I'm not sure why it shouldn't be possible to skip debug info categories.
thanks,
vedant
> categories = set(
> getattr(
> attrvalue,
> @@ -1748,49 +1745,16 @@ class LLDBTestCaseFactory(type):
> if not categories:
> categories = all_dbginfo_categories
>
> - supported_categories = [
> - x for x in categories if test_categories.is_supported_on_platform(
> - x, target_platform, configuration.compiler)]
> -
> - if "dsym" in supported_categories:
> - @decorators.add_test_categories(["dsym"])
> + for cat in categories:
> + @decorators.add_test_categories([cat])
> @wraps(attrvalue)
> - def dsym_test_method(self, attrvalue=attrvalue):
> + def test_method(self, attrvalue=attrvalue):
> return attrvalue(self)
> - dsym_method_name = attrname + "_dsym"
> - dsym_test_method.__name__ = dsym_method_name
> - dsym_test_method.debug_info = "dsym"
> - newattrs[dsym_method_name] = dsym_test_method
>
> - if "dwarf" in supported_categories:
> - @decorators.add_test_categories(["dwarf"])
> - @wraps(attrvalue)
> - def dwarf_test_method(self, attrvalue=attrvalue):
> - return attrvalue(self)
> - dwarf_method_name = attrname + "_dwarf"
> - dwarf_test_method.__name__ = dwarf_method_name
> - dwarf_test_method.debug_info = "dwarf"
> - newattrs[dwarf_method_name] = dwarf_test_method
> -
> - if "dwo" in supported_categories:
> - @decorators.add_test_categories(["dwo"])
> - @wraps(attrvalue)
> - def dwo_test_method(self, attrvalue=attrvalue):
> - return attrvalue(self)
> - dwo_method_name = attrname + "_dwo"
> - dwo_test_method.__name__ = dwo_method_name
> - dwo_test_method.debug_info = "dwo"
> - newattrs[dwo_method_name] = dwo_test_method
> -
> - if "gmodules" in supported_categories:
> - @decorators.add_test_categories(["gmodules"])
> - @wraps(attrvalue)
> - def gmodules_test_method(self, attrvalue=attrvalue):
> - return attrvalue(self)
> - gmodules_method_name = attrname + "_gmodules"
> - gmodules_test_method.__name__ = gmodules_method_name
> - gmodules_test_method.debug_info = "gmodules"
> - newattrs[gmodules_method_name] = gmodules_test_method
> + method_name = attrname + "_" + cat
> + test_method.__name__ = method_name
> + test_method.debug_info = cat
> + newattrs[method_name] = test_method
>
> else:
> newattrs[attrname] = attrvalue
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list