1973 Commits

Author SHA1 Message Date
Pavel Labath
12a7e6c09c dotest: improvements to the pexpect tests
Summary:
While working on r370054, i've found it frustrating that the test output
was compeletely unhelpful in case of failures. Therefore I've decided to
improve that. In this I reuse the PExpectTest class, which was one of
our mechanisms for running pexpect tests, but which has gotten orhpaned
in the mean time.

I've replaced the existing send methods with a "expect" method, which
I've tried to design so that it has a similar interface to the expect
method in regular non-pexpect dotest tests (as it essentially does
something very similar). I've kept the ability to dump the transcript of
the pexpect communication to stdout in the "trace" mode, as that is a
very handy way to figure out what the test is doing. I've also removed
the "expect_string" method used in the existing tests -- I've found this
to be unhelpful because it hides the message that would be normally
displayed by the EOF exception. Although vebose, this message includes
some important information, like what strings we were searching for,
what were the last bits of lldb output, etc. I've also beefed up the
class to automatically disable the debug info test duplication, and
auto-skip tests when the host platform does not support pexpect.

This patch ports TestMultilineCompletion and TestIOHandlerCompletion to
the new class. It also deletes TestFormats as it is not testing anything
(definitely not formats) -- it was committed with the test code
commented out (r228207), and then the testing code was deleted in
r356000.

Reviewers: teemperor, JDevlieghere, davide

Subscribers: aprantl, lldb-commits

Differential Revision: https://reviews.llvm.org/D66954

llvm-svn: 370449
2019-08-30 09:07:42 +00:00
Jonas Devlieghere
ff5982aa91 [test] Fix various module cache bugs and inconsistencies
Currently, lit tests don't set neither the module cache for building
inferiors nor the module cache used by lldb when running tests.
Furthermore, we have several places where we rely on the path to the
module cache being always the same, rather than passing the correct
value around. This makes it hard to specify a different module cache
path when debugging a a test.

This patch reworks how we determine and pass around the module cache
paths and fixes the omission on the lit side. It also adds a sanity
check to the lit and dotest suites.

Differential revision: https://reviews.llvm.org/D66966

llvm-svn: 370394
2019-08-29 18:37:05 +00:00
Jonas Devlieghere
e1327e696e [dotest] Remove deprecated loggin through env variables.
It used to be possible to enable logging through environment variables
read by dotest. This approach is deprecated, as stated in the dotest
help output. Instead --channel should be used.

Differential revision: https://reviews.llvm.org/D66920

llvm-svn: 370387
2019-08-29 17:19:00 +00:00
Jonas Devlieghere
16624b8ca6 [dotest] Remove the curses result formatter.
This removes the curses result formatter which appears to be broken.
Passing --curses to dotest.py screws up my terminal and doesn't run any
tests. It even crashes Python on occasion.

Differential revision: https://reviews.llvm.org/D66917

llvm-svn: 370386
2019-08-29 17:18:57 +00:00
Raphael Isemann
250cef2c7d [lldb][NFC] Try fixing TestCompletion.py on Windows
llvm-svn: 370316
2019-08-29 09:57:02 +00:00
Raphael Isemann
a884a06c92 [lldb][NFC] Also test operator new/new[]/delete/delete[]/comma/addr-of
llvm-svn: 370315
2019-08-29 09:39:33 +00:00
Davide Italiano
54b3aa91d0 [python] remove testsuite vestiges.
llvm-svn: 370287
2019-08-29 01:45:10 +00:00
Jonas Devlieghere
5c04497217 [dotest] Make dotest.py invocation repeatable
This removes support for reading the LLDB_TEST_ARGUMENTS environment
variable and instead requires all arguments to be specified as part of
the invocation. This ensures that dotest.py invocations are easily
repeatable.

Differential revision: https://reviews.llvm.org/D66912

llvm-svn: 370278
2019-08-28 23:54:23 +00:00
Jonas Devlieghere
311ae45228 [dotest] Remove --event-add-entries
This argument was used by dosep.py to pass information around from the
workers. With dosep.py gone, I'm fairly sure we don't need this any
longer.

llvm-svn: 370266
2019-08-28 21:31:53 +00:00
Jonas Devlieghere
5970076466 [dotest] Remove --rerun-max-file-threshold
This variable corresponding to this argument is set but never read.

llvm-svn: 370264
2019-08-28 21:24:41 +00:00
Jonas Devlieghere
3331fd8228 [dotest] Centralize and simplify session dir logic (NFC)
I was looking at the session directory logic for unrelated reasons and
noticed that the logic spread out across dotest. This simplifies things
a bit by moving the logic together.

llvm-svn: 370259
2019-08-28 20:54:17 +00:00
Jonas Devlieghere
ff2e965ad0 [test] Temporarily disable two tests on Windows
Disable the two failing tests until Raphael has a chance to investigate:

Failing Tests (2):
    lldb-Suite :: functionalities/completion/TestCompletion.py
    lldb-Suite :: functionalities/target_command/TestTargetCommand.py

llvm-svn: 370237
2019-08-28 18:04:14 +00:00
Jonas Devlieghere
b18f11eeea [dotest] Remove outdates TODO
The referenced function `find_test_files_in_dir_tree` no longer exists.

llvm-svn: 370235
2019-08-28 17:38:50 +00:00
Jonas Devlieghere
dfc34efa6b [dotest] Don't try to guess the lldb binary & python dir.
Now that all supported build systems create a valid dotest.py
invocation, we no longer need to guess the location of the lldb binary
and Python directory.

Differential revision: https://reviews.llvm.org/D66896

llvm-svn: 370234
2019-08-28 17:38:48 +00:00
Jonas Devlieghere
165d47969a [dotest] Don't try to guess the llvm binary dir.
Now that all supported build systems create a valid dotest.py
invocation, we no longer need to guess the directory where any of the
llvm tools live. Additionally, the current logic is incomplete: it
doesn't try to find any other tools than FileCheck, such as dsymutil for
example.

If no FileCheck is provided, we should print a warning and skip the
tests that need it, but that's not part of this patch.

Differential revision: https://reviews.llvm.org/D66893

llvm-svn: 370232
2019-08-28 17:06:28 +00:00
Jonas Devlieghere
0a114b3571 [dotest] Don't spend time replacing spaces in print output.
Replacing all spaces with dashes seems like a lot of needless work for a
string that's just printed.

llvm-svn: 370231
2019-08-28 17:06:26 +00:00
Jonas Devlieghere
f48ebacfcc [TestCppOperators] Enable TestCppOperators on Windows.
This test is passing on the Windows bot:

Unexpected Passing Tests (1):
    lldb-Suite :: lang/cpp/operators/TestCppOperators.py

llvm-svn: 370227
2019-08-28 16:29:00 +00:00
Jonas Devlieghere
b543c16869 [dotest] Remove -q (quiet) flag.
This patch removes the -q (quiet) flag and changing the default
behavior. Currently the flag serves two purposes that are somewhat
contradictory, as illustrated by the difference between the argument
name (quiet) and the configuration flag (parsable). On the one hand it
reduces output, but on the other hand it prints more output, like the
result of individual tests. My proposal is to guard the extra output
behind the verbose flag and always print the individual test results.

Differential revision: https://reviews.llvm.org/D66837

llvm-svn: 370226
2019-08-28 16:28:58 +00:00
Raphael Isemann
4046e1ee21 [lldb][NFC] Test named operators like new and function names that might confuse LLDB
llvm-svn: 370199
2019-08-28 13:33:52 +00:00
Raphael Isemann
95686fa898 [lldb][NFC] Actually run all expects in lang/cpp/operators
Apparently inline tests stop running anything after an empty line
behind an self.expect, which is a very good approach that could
never cause people to write tests that never run.

This patch removes all the empty lines so that all this test
is actually run. Also fixes the broken expects that only passed
because they weren't run before.

llvm-svn: 370195
2019-08-28 12:32:58 +00:00
Raphael Isemann
05e2e290c0 [lldb][NFC] Extend operator test case with conversion operators
llvm-svn: 370194
2019-08-28 12:14:39 +00:00
Raphael Isemann
f0ad3e4093 [lldb][NFC] Test custom C++ operators
llvm-svn: 370186
2019-08-28 11:18:47 +00:00
Raphael Isemann
efb8b7b1ec [lldb] Fix and test completion for ambiguous long options
The refactoring patch for the option completion broke the completion
for ambiguous long options. As this feature was also untested (as
testing ambiguous options with the current test methods is impossible),
I just noticed now. This patch restores the old behavior and adds a
test for this feature.

llvm-svn: 370185
2019-08-28 10:17:23 +00:00
Jonas Devlieghere
de37c444ef [test] Disable TestConcurrentManySignals on Darwin.
This test is flaky on GreenDragon. Disable it until we figure out why.

llvm-svn: 370136
2019-08-28 00:35:37 +00:00
Jonas Devlieghere
50c094a368 [dotest] Remove check for LLDB_TESTSUITE_FORCE_FINISH
llvm-svn: 370120
2019-08-27 21:59:24 +00:00
Jonas Devlieghere
2d247359cc [dotest] Remove results port
The results port was used by dosep.py to deal with test results coming
form different processes. With dosep.py gone, I don't think we need this
any longer.

Differential revision: https://reviews.llvm.org/D66811

llvm-svn: 370090
2019-08-27 18:18:46 +00:00
Raphael Isemann
eb5a8afbdd [lldb][NFC] Add missing invalid_core_file to TestTargetCommand test
llvm-svn: 370057
2019-08-27 13:34:15 +00:00
Pavel Labath
4f91faa965 Stabilize TestIOHandlerCompletion
pexpect gives as raw data going to a terminal. This means that if the
completed line does not fit the emulated line, the returned data will
contain line breaks. On my machine these line breaks happened to be
inside the "iohandler/completion" string that the test was searching
for.

Work around this by telling pexpect to emulate a very wide terminal.

llvm-svn: 370054
2019-08-27 13:09:40 +00:00
Raphael Isemann
2bdbb6a046 [lldb][NFC] Add some tests for the target subcommands
llvm-svn: 370050
2019-08-27 11:57:26 +00:00
Raphael Isemann
73f01068a7 [lldb][NFC] Give added test method a unique name
Otherwise dotest doesn't run the test and just lets it always pass.
Also update the comment to explain that we do directory and not
file completion.

llvm-svn: 370047
2019-08-27 11:43:54 +00:00
Raphael Isemann
5edee822d2 [lldb] Allow partial completions to fix directory completion.
On the command line we usually insert a space after a completion to indicate that
the completion was successful. After the completion API refactoring, this also
happens with directories which essentially breaks file path completion (as
adding a space terminates the path and starts a new arg). This patch restores the old
behavior by again allowing partial completions. Also extends the iohandler
and SB API tests as the implementation for this is different in Editline
and SB API.

llvm-svn: 370043
2019-08-27 11:32:22 +00:00
Pavel Labath
8a915f6b2e Fix TestStdCXXDisassembly.py
missing decorator import.

llvm-svn: 370020
2019-08-27 06:43:45 +00:00
Jonas Devlieghere
828a3a974f [test] Disable two of the recently (re)enabled tests on Windows.
This disables two tests on Windows that I re-enabled in r369995.

llvm-svn: 370003
2019-08-27 01:34:19 +00:00
Jonas Devlieghere
27cb29a596 [dotest] Remove long running test "decorator" and re-enable tests.
Today I discovered the skipLongRunningTest decorator and to my surprise
all the tests were passing without the decorator. They don't seem to be
that expensive either, they take a few seconds but we have tests that
take much longer than that. As such I propose to remove the decorator
and enable them by default.

Differential revision: https://reviews.llvm.org/D66774

llvm-svn: 369995
2019-08-27 00:18:22 +00:00
Frederic Riss
7305397a14 TestFunctionStarts.py: add synchronization
We have started to see the no_binary version of this test
fail. The reason is that the binary was being removed
before the spawn actually launched the inferior. Add a
simple filesystem based synchronization to avoid this race.

llvm-svn: 369930
2019-08-26 17:14:05 +00:00
Jonas Devlieghere
a69992c8cb [dotest] Print invocation when encountering an error.
With this patch dotest.py will print the full invocation whenever it
fails to parse its arguments. The dotest invocation is usually build up
with different inputs, potentially coming from CMake, lldb-dotest, lit
or passed directly. This can make debugging hard, especially on CI,
where there might be another layer of indirection. This aims to make
that a bit easier.

llvm-svn: 369922
2019-08-26 16:08:53 +00:00
Vedant Kumar
77017ad306 Skip tail call frame tests when dwarf_version < 4
rdar://problem/54656572

llvm-svn: 369821
2019-08-23 22:28:46 +00:00
Jonas Devlieghere
6c9dc12caa [LLDB] Address post-commit code review feedback.
This patch addresses Adrian McCarthy's code review feedback in
https://reviews.llvm.org/D66447

llvm-svn: 369731
2019-08-23 04:11:38 +00:00
Frederic Riss
f88dfd8309 TestAppleSimulatorOSType: Pass the --standalone argument to simctl
It looks like running without this argument was supported
for legacy reasons, but a Xcode 11 beta made the argument
mandatory for our usecase.

llvm-svn: 369709
2019-08-22 21:44:10 +00:00
Raphael Isemann
5215770e88 [lldb][NFC] Add test for target stop-hook disable/enable/delete
llvm-svn: 369646
2019-08-22 13:09:02 +00:00
Jonas Devlieghere
71dc97b5bf [test] Update test so it matches the Windows output
llvm-svn: 369595
2019-08-21 22:32:21 +00:00
Jason Molenda
f79f594bd2 When building file without debug info, include the architecture
setting in the cflags on Darwin systems.

llvm-svn: 369584
2019-08-21 21:34:17 +00:00
Jonas Devlieghere
c46d39b9e8 Add char8_t support (C++20)
This patch adds support for the char8_t type introduced in C++20
char8_t. The original patch was submitted by James Blachly  on the LLDB
mailing list [1]. I modified the patch a bit and added a test.

[1] http://lists.llvm.org/pipermail/lldb-dev/2019-August/015393.html

Differential revision: https://reviews.llvm.org/D66447

llvm-svn: 369582
2019-08-21 21:30:55 +00:00
Raphael Isemann
717717b1ff [lldb][NFC] Merge multiple TestApropos.py
That's cleaner and makes lldb-dotest no longer fail due to conflicting names.

llvm-svn: 369530
2019-08-21 14:22:59 +00:00
Raphael Isemann
34a04e703d [lldb] Add tests for 'settings remove' and fix error message typos
llvm-svn: 369524
2019-08-21 13:24:21 +00:00
Raphael Isemann
006d22de50 [lldb] Add tests for setting completions and enable 'settings remove' completion
llvm-svn: 369521
2019-08-21 12:57:06 +00:00
Raphael Isemann
68756a8c37 [lldb][NFC] Add tests for register command
llvm-svn: 369513
2019-08-21 10:40:05 +00:00
Raphael Isemann
4fc1eb55d1 [lldb][NFC] Add tests for invalid command invocations
llvm-svn: 369506
2019-08-21 09:15:44 +00:00
Jason Molenda
1ecc507e2a Update a few tests that may change the platform to save & restore
the platform in the setUp/tearDown methods.  I want to migrate the
re-instatement of the correct plaform to the setUp base method but
haven't had time to look at that yet, so I want to land this handful
of fixes until I get to it.

Differential revision: https://reviews.llvm.org/D66331

llvm-svn: 369484
2019-08-21 00:27:30 +00:00
Jonas Devlieghere
625ab43318 [dotest] Don't set the DWARF version override in CFLAGS_EXTRA.
We cannot override the DWARF version in the CFLAGS_EXTRA because they
are used by tests that explicitly build without debug info. Instead, we
pass them through the regular CFLAGS.

llvm-svn: 369477
2019-08-20 23:56:32 +00:00