[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:08:19 PDT 2018


> On Apr 25, 2018, at 11:07 AM, Vedant Kumar <vsk at apple.com> wrote:
> 
> 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.

Sorry, I meant to type: --skip-category dsym.

vedant

> 
>> +        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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180425/2e59ab3d/attachment-0001.html>


More information about the lldb-commits mailing list