[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