[llvm-dev] [RFC] Cross-project lit test suite

Alexandre Ganea via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 5 12:47:23 PST 2021


The debuginfo-test tests are failing for a long time for us too. I won't have much time to fix them in the short term, but here's the errors I'm seeing (James do you see the same thing on your end?):

Failed Tests (7):
  debuginfo-tests :: dexter/feature_tests/commands/penalty/expect_program_state.cpp
  debuginfo-tests :: dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
  debuginfo-tests :: dexter/feature_tests/commands/penalty/expect_step_order.cpp
  debuginfo-tests :: dexter/feature_tests/commands/penalty/expect_watch_type.cpp
  debuginfo-tests :: dexter/feature_tests/commands/penalty/expect_watch_value.cpp
  debuginfo-tests :: dexter/feature_tests/commands/penalty/unreachable.cpp
  debuginfo-tests :: dexter/feature_tests/unittests/run.test


The first ones seem to be related to a missing Python library in my installation:

F:\aganea\llvm-project>"C:/Program Files/Python39/python.exe" "F:/aganea/llvm-project/debuginfo-tests\dexter\dexter.py" list-debuggers

dbgeng [dbgeng]             YES (1)
lldb   [lldb]               NO  (The system cannot find the file specified ["lldb.exe"])
vs2015 [Visual Studio 2015] NO  (No module named 'win32com')
vs2017 [Visual Studio 2017] NO  (No module named 'win32com')
vs2019 [Visual Studio 2019] NO  (No module named 'win32com')


Which in turns generates this error:

F:\aganea\llvm-project>"C:/Program Files/Python39/python.exe" F:/aganea/llvm-project/debuginfo-tests\dexter\dexter.py test --fail-lt 1.0 -w --builder clang-cl_vs2015 --debugger dbgeng --cflags "/Zi /Od" --ldflags "/Zi" -- F:\aganea\llvm-project\debuginfo-tests\dexter\feature_tests\commands\penalty\expect_watch_type.cpp
expect_watch_type.cpp: nan/nan (nan) [F:\aganea\llvm-project\debuginfo-tests\dexter\dex\builder\scripts\windows\clang-cl_vs2015.bat: failed with returncode 1. : The system cannot find the path specified.]


The last failure (dexter/feature_tests/unittests/run.test) is related to slash vs. backslash:

F:\aganea\llvm-project>"C:/Program Files/Python39/python.exe" "F:/aganea/llvm-project/debuginfo-tests\dexter\dexter.py" "--unittest=show-all"

test_get_script_environment (builder.Builder.TestBuilder) ... ok
test_parse_bad_whitespace (command.ParseCommand.TestParseCommand)
Throw exception when parsing badly formed whitespace. ... ok
test_parse_empty (command.ParseCommand.TestParseCommand)
Empty files are silently ignored. ... ok
test_parse_escaped (command.ParseCommand.TestParseCommand)
Escaped commands are ignored. ... ok
test_parse_good_whitespace (command.ParseCommand.TestParseCommand)
Try to emulate python whitespace rules ... ok
test_parse_inline (command.ParseCommand.TestParseCommand)
Commands can be embedded in other text. ... ok
test_parse_multi_line_comment (command.ParseCommand.TestParseCommand)
Multi-line commands can embed comments. ... ok
test_parse_share_line (command.ParseCommand.TestParseCommand)
More than one command can appear on one line. ... ok
test_add_breakpoint_no_source_root_dir (debugger.DebuggerBase.TestDebuggerBase) ... ok
test_add_breakpoint_with_source_root_dir (debugger.DebuggerBase.TestDebuggerBase) ... FAIL
test_add_breakpoint_with_source_root_dir_slash_suffix (debugger.DebuggerBase.TestDebuggerBase) ... ok
test_get_step_info (debugger.DebuggerBase.TestDebuggerBase) ... FAIL
test_get_step_info_no_frames (debugger.DebuggerBase.TestDebuggerBase) ... ok
test_get_step_info_no_source_root_dir (debugger.DebuggerBase.TestDebuggerBase) ... FAIL
test_did_you_mean (utils.ExtArgParse.TestExtArgumentParser) ... ok
test_PreserveAutoColors (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_auto (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_blue (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_default (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_green (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_red (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_tags (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_yellow (utils.PrettyOutputBase.TestPrettyOutput) ... ok
test_sanity (utils.UnitTests.TestUnitTests) ... ok

======================================================================
FAIL: test_add_breakpoint_with_source_root_dir (debugger.DebuggerBase.TestDebuggerBase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "F:\aganea\llvm-project\debuginfo-tests\dexter\dex\debugger\DebuggerBase.py", line 245, in test_add_breakpoint_with_source_root_dir
    self.assertEqual('some_file', self.dbg.breakpoint_file)
AssertionError: 'some_file' != '/some_file'
- some_file
+ /some_file
? +


======================================================================
FAIL: test_get_step_info (debugger.DebuggerBase.TestDebuggerBase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "F:\aganea\llvm-project\debuginfo-tests\dexter\dex\debugger\DebuggerBase.py", line 268, in test_get_step_info
    self.assertEqual([None, '/other/file', '/my_root/some_file'],
AssertionError: Lists differ: [None, '/other/file', '/my_root/some_file'] != [None, '\\other\\file', '\\dbg\\some_file']

First differing element 1:
'/other/file'
'\\other\\file'

- [None, '/other/file', '/my_root/some_file']
+ [None, '\\other\\file', '\\dbg\\some_file']

======================================================================
FAIL: test_get_step_info_no_source_root_dir (debugger.DebuggerBase.TestDebuggerBase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "F:\aganea\llvm-project\debuginfo-tests\dexter\dex\debugger\DebuggerBase.py", line 254, in test_get_step_info_no_source_root_dir
    self.assertEqual(['/root/some_file'],
AssertionError: Lists differ: ['/root/some_file'] != ['\\root\\some_file']

First differing element 0:
'/root/some_file'
'\\root\\some_file'

- ['/root/some_file']
?   ^    ^

+ ['\\root\\some_file']
?   ^^    ^^


----------------------------------------------------------------------
Ran 24 tests in 0.005s

FAILED (failures=3)

error: unit test failures


-----Message d'origine-----
De : llvm-dev <llvm-dev-bounces at lists.llvm.org> De la part de David Blaikie via llvm-dev
Envoyé : February 5, 2021 1:50 PM
À : James Henderson <jh7370.2008 at my.bristol.ac.uk>; Reid Kleckner <rnk at google.com>; Amy Huang <akhuang at google.com>
Cc : llvm-dev <llvm-dev at lists.llvm.org>; David Greene <greened at obbligato.org>
Objet : Re: [llvm-dev] [RFC] Cross-project lit test suite

Reid and Amy might have some context for Windows (though I don't know if any Windows folks have done much with this test suite).

On Fri, Feb 5, 2021 at 7:38 AM James Henderson via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Given that the debuginfo tests already have cross-project dependencies, I figured I'd try adapting them instead. I've updated https://reviews.llvm.org/D95339 accordingly. Ideally, I think making the existing debug-info tests a subdirectory, and renaming the top-level directory, might be a good idea, but I haven't really come to any conclusions about that yet.
>
> I also found that several of the existing debuginfo-test tests fail for me. Are these tests expected to work on Windows? If so, are there any slightly more unusual prerequisites that I might be missing?
>
> What do people think?
>
> James
>
> On Wed, 27 Jan 2021 at 15:40, <paul.robinson at sony.com> wrote:
>>
>>
>>
>> > -----Original Message-----
>> > From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of David 
>> > Greene via llvm-dev
>> > Sent: Wednesday, January 27, 2021 10:29 AM
>> > To: jh7370.2008 at my.bristol.ac.uk; llvm-dev 
>> > <llvm-dev at lists.llvm.org>
>> > Subject: Re: [llvm-dev] [RFC] Cross-project lit test suite
>> >
>> > James Henderson via llvm-dev <llvm-dev at lists.llvm.org> writes:
>> >
>> > > Currently, there is no location where lit tests that use both 
>> > > clang and
>> > LLD
>> > > can be put, whilst the llvm-symbolizer cases I’ve hit are testing 
>> > > llvm-symbolizer (and not LLD), so don’t really fit in the LLD 
>> > > test
>> > suite. I
>> > > therefore have prototyped a lit test suite that would be part of 
>> > > the monorepo, and which can support tests that use elements from 
>> > > multiple projects - see
>> > https://urldefense.com/v3/__https://reviews.llvm.org/D95339__;!!Jmo
>> > ZiZGBv3 
>> > RvKRSx!vWidWrbKJid6-eIKVUT-dGDzcG-65TMZMzhyd33jgyBwi7p-JRSgFVZkxqKC
>> > vkqW4A$
>> > . Tests could be added to
>> > > this suite as needed. The suite is modelled as an additional 
>> > > top-level directory, and is enabled by enabling the 
>> > > “cross-project-tests” project
>> > in
>> > > CMake.
>> >
>> > This is fantastic!
>> >
>> > > Back in October 2019, there was an extensive discussion on 
>> > > end-to-end testing and how to write them (starting from
>> > > https://urldefense.com/v3/__https://lists.llvm.org/pipermail/cfe-
>> > dev/2019-October/063509.html__;!!JmoZiZGBv3RvKRSx!vWidWrbKJid6-eIKV
>> > UT- dGDzcG-65TMZMzhyd33jgyBwi7p-JRSgFVZkxqJU8k_M_Q$ ).
>> > > The suggestion was that these tests would be lit-based and run as 
>> > > part of check-all, and would not be inside the clang tree, 
>> > > although there was some opposition. This concluded with a round 
>> > > table. Unfortunately, I am unaware of what the conclusion of that 
>> > > round table conversation was, so it’s possible that what I am 
>> > > proposing is redundant/being worked on by someone else.
>> >
>> > I started that thread and IIRC we ended up with the suggestion that 
>> > such tests should live in test-suite.  As you noted having tests 
>> > separated from the monorepo is less than ideal.  I haven't done 
>> > anything with this conclusion yet, mostly due to lack of time.  If 
>> > your proposal gains traction I would like to see if we could build 
>> > end-to-end testing on top of it.
>> >
>> > > Additionally, I don’t consider all classes of tests that the 
>> > > proposed lit suite would be useful for to be “end-to-end” testing.
>> >
>> > Agreed.  There are various classes of tests that could make use of 
>> > your proposed layout, one of which is "end-to-end."  Your proposal 
>> > doesn't provide end-to-end testing per se, but it does make adding 
>> > end-to-end tests later on more straightforward.
>> >
>> >              -David
>>
>> I think a useful distinction here is that lit tests are generally 
>> very focused on a specific feature/function, where test-suite has a 
>> much broader scope.  Another slice at it would be that lit tests tend 
>> to be "regression" tests, while test-suite is more of an "integration" suite.
>>
>> I am not a QA person so I may be abusing some of these terms, but 
>> that's how I look at it.  Sometimes writing that focused lit test 
>> ends up depending on multiple tools, and the cross-project lit suite 
>> would be a good place to drop those; debuginfo-tests is a prime example.
>> --paulr
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list