Revision tags: llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3 |
|
#
3dc7039f |
| 03-Oct-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[lit] Fix shell commands with newlines (#67898)
In PR #65242 (landed as 9e739fdb85ac672f3e25e971d96e71823e07ebda), I
claimed that RUN lines cannot contain newlines. Actually, they can after
substi
[lit] Fix shell commands with newlines (#67898)
In PR #65242 (landed as 9e739fdb85ac672f3e25e971d96e71823e07ebda), I
claimed that RUN lines cannot contain newlines. Actually, they can after
substitution expansion. More generally, a lit config file can define
substitutions or preamble commands containing newlines. While both of
those cases seem unlikely in practice,
[D154987](https://reviews.llvm.org/D154987) proposes PYTHON directives
where it seems very likely.
Regardless of the use case, without this patch, such newlines break
expansion of `%dbg(RUN: at line N)`, and the fix is simple.
show more ...
|
Revision tags: llvmorg-17.0.2 |
|
#
f223022a |
| 19-Sep-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[lit] Improve test output from lit's internal shell
This patch and D154984 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
Motivation ----------
D154984 rem
[lit] Improve test output from lit's internal shell
This patch and D154984 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
Motivation ----------
D154984 removes the "Script:" section that lit prints along with a test's output, and it makes -v and -a imply -vv. For example, after D154984, the "Script:" section below is never shown, but -v is enough to produce the execution trace following it:
``` Script: -- : 'RUN: at line 1'; echo hello | FileCheck bogus.txt && echo success -- Exit Code: 2
Command Output (stdout): -- $ ":" "RUN: at line 1" $ "echo" "hello" # command output: hello
$ "FileCheck" "bogus.txt" # command stderr: Could not open check file 'bogus.txt': No such file or directory
error: command failed with exit status: 2
-- ```
In the D154984 review, some reviewers point out that they have been using the "Script:" section for copying and pasting a test's shell commands to a terminal window. The shell commands as printed in the execution trace can be harder to copy and paste for the following reasons:
- They drop redirections and break apart RUN lines at `&&`, `|`, etc. - They add `$` at the start of every command, which makes it hard to copy and paste multiple commands in bulk. - Command stdout, stderr, etc. are interleaved with the commands and are not clearly delineated. - They don't always use proper shell quoting. Instead, they blindly enclose all command-line arguments in double quotes.
Changes -------
D154984 plus this patch converts the above example into:
``` Exit Code: 2
Command Output (stdout): -- # RUN: at line 1 echo hello | FileCheck bogus-file.txt && echo success # executed command: echo hello # .---command stdout------------ # | hello # `----------------------------- # executed command: FileCheck bogus-file.txt # .---command stderr------------ # | Could not open check file 'bogus-file.txt': No such file or directory # `----------------------------- # error: command failed with exit status: 2
-- ```
Thus, this patch addresses the above issues as follows:
- The entire execution trace can be copied and pasted in bulk to a terminal for correct execution of the RUN lines, which are printed intact as they appeared in the original RUN lines except lit substitutions are expanded. Everything else in the execution trace appears in shell comments so it has no effect in a terminal. - Each of the RUN line's commands is repeated (in shell comments) as it executes to show (1) that the command actually executed (e.g., `echo success` above didn't) and (2) what stdout, stderr, non-zero exit status, and output files are associated with the command, if any. Shell quoting in the command is now correct and minimal but is not necessarily the original shell quoting from the RUN line. - The start and end of the contents of stdout, stderr, or an output file is now delineated clearly in the trace.
To help produce some of the above output, this patch extends lit's internal shell with a built-in `@echo` command. It's like `echo` except lit suppresses the normal execution trace for `@echo` and just prints its stdout directly. For now, `@echo` isn't documented for use in lit tests.
Without this patch, libcxx's custom lit test format tries to parse the stdout from `lit.TestRunner.executeScriptInternal` (which runs lit's internal shell) to extract the stdout and stderr produced by shell commands, and that parse no longer works after the above changes. This patch makes a small adjustment to `lit.TestRunner.executeScriptInternal` so libcxx can just request stdout and stderr without an execution trace.
(As a minor drive-by fix that came up in testing: lit's internal `not` command now always produces a numeric exit status and never `True`.)
Caveat ------
This patch only makes the above changes for lit's internal shell. In most cases, we do not know how to force external shells (e.g., bash, sh, window's `cmd`) to produce execution traces in the manner we want.
To configure a test suite to use lit's internal shell (which is usually better for test portability than external shells anyway), add this to the test suite's `lit.cfg` or other configuration file:
``` config.test_format = lit.formats.ShTest(execute_external=False) ```
Reviewed By: MaskRay, awarzynski
Differential Revision: https://reviews.llvm.org/D156954
show more ...
|
#
1495d51e |
| 19-Sep-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[lit] Drop "Script:", make -v and -a imply -vv
This patch and D156954 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
**Motivation**: -a shows output from al
[lit] Drop "Script:", make -v and -a imply -vv
This patch and D156954 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
**Motivation**: -a shows output from all tests, and -v shows output from just failed tests. Without this patch, that output from each test includes a section called "Script:", which includes all shell commands that lit has computed from RUN directives and will attempt to run for that test. The effect of -vv (which also implies -v if neither -a or -v is specified) is to extend that output with shell commands as they are executing so you can easily see which one failed.
For example, when using lit's internal shell and -vv:
``` Script: -- : 'RUN: at line 1'; echo hello world : 'RUN: at line 2'; 3c40 hello world : 'RUN: at line 3'; echo hello world -- Exit Code: 127
Command Output (stdout): -- $ ":" "RUN: at line 1" $ "echo" "hello" "world" hello world
$ ":" "RUN: at line 2" $ "3c40" "hello" "world" '3c40': command not found error: command failed with exit status: 127
-- ```
Notice that all shell commands that actually execute appear in the output twice, once for "Script:" and once for -vv. Especially for tests with many RUN directives, the result is noisy. When searching through the output for a particular shell command, it is easy to get lost and mistake shell commands under "Script:" for shell commands that actually executed.
**Change**: With this patch, a test's output changes in two ways. First, the "Script:" section is never shown. Second, omitting -vv no longer disables printing of shell commands as they execute. That is, -a and -v imply -vv, and so -vv is deprecated as it is just an alias for -v.
**Secondary motivation**: We are also working to introduce a PYTHON directive, which can appear between RUN directives. How should PYTHON directives be represented in the "Script:" section, which has previously been just a shell script? We could probably think of something, but adding info about PYTHON directive execution in the -vv trace seems more straight-forward and more useful.
(This patch also removes a confusing point in the -vv documentation: at least when using bash as an external shell, -vv echoes commands to the shell's stderr not stdout.)
Reviewed By: awarzynski, Endill, ldionne, MaskRay
Differential Revision: https://reviews.llvm.org/D154984
show more ...
|
Revision tags: llvmorg-17.0.1, llvmorg-17.0.0 |
|
#
9f111d99 |
| 07-Sep-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
Revert "[lit] Drop "Script:", make -v and -a imply -vv"
This reverts commit 09b6e457d91ce84088e6e21783913e5f1e5bd227.
The reason for the revert is discussed at: https://discourse.llvm.org/t/rfc-imp
Revert "[lit] Drop "Script:", make -v and -a imply -vv"
This reverts commit 09b6e457d91ce84088e6e21783913e5f1e5bd227.
The reason for the revert is discussed at: https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839/52
show more ...
|
#
bb6d5fc2 |
| 07-Sep-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
Revert "[lit] Improve test output from lit's internal shell"
This reverts commit c981c533055e14302e7bff5d6898c9308065f665.
The reason for the revert is discussed at: https://discourse.llvm.org/t/rf
Revert "[lit] Improve test output from lit's internal shell"
This reverts commit c981c533055e14302e7bff5d6898c9308065f665.
The reason for the revert is discussed at: https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839/52
show more ...
|
Revision tags: llvmorg-17.0.0-rc4 |
|
#
c981c533 |
| 29-Aug-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[lit] Improve test output from lit's internal shell
This patch and D154984 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
Motivation ----------
D154984 rem
[lit] Improve test output from lit's internal shell
This patch and D154984 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
Motivation ----------
D154984 removes the "Script:" section that lit prints along with a test's output, and it makes -v and -a imply -vv. For example, after D154984, the "Script:" section below is never shown, but -v is enough to produce the execution trace following it:
``` Script: -- : 'RUN: at line 1'; echo hello | FileCheck bogus.txt && echo success -- Exit Code: 2
Command Output (stdout): -- $ ":" "RUN: at line 1" $ "echo" "hello" # command output: hello
$ "FileCheck" "bogus.txt" # command stderr: Could not open check file 'bogus.txt': No such file or directory
error: command failed with exit status: 2
-- ```
In the D154984 review, some reviewers point out that they have been using the "Script:" section for copying and pasting a test's shell commands to a terminal window. The shell commands as printed in the execution trace can be harder to copy and paste for the following reasons:
- They drop redirections and break apart RUN lines at `&&`, `|`, etc. - They add `$` at the start of every command, which makes it hard to copy and paste multiple commands in bulk. - Command stdout, stderr, etc. are interleaved with the commands and are not clearly delineated. - They don't always use proper shell quoting. Instead, they blindly enclose all command-line arguments in double quotes.
Changes -------
D154984 plus this patch converts the above example into:
``` Exit Code: 2
Command Output (stdout): -- # RUN: at line 1 echo hello | FileCheck bogus-file.txt && echo success # executed command: echo hello # .---command stdout------------ # | hello # `----------------------------- # executed command: FileCheck bogus-file.txt # .---command stderr------------ # | Could not open check file 'bogus-file.txt': No such file or directory # `----------------------------- # error: command failed with exit status: 2
-- ```
Thus, this patch addresses the above issues as follows:
- The entire execution trace can be copied and pasted in bulk to a terminal for correct execution of the RUN lines, which are printed intact as they appeared in the original RUN lines except lit substitutions are expanded. Everything else in the execution trace appears in shell comments so it has no effect in a terminal. - Each of the RUN line's commands is repeated (in shell comments) as it executes to show (1) that the command actually executed (e.g., `echo success` above didn't) and (2) what stdout, stderr, non-zero exit status, and output files are associated with the command, if any. Shell quoting in the command is now correct and minimal but is not necessarily the original shell quoting from the RUN line. - The start and end of the contents of stdout, stderr, or an output file is now delineated clearly in the trace.
To help produce some of the above output, this patch extends lit's internal shell with a built-in `@echo` command. It's like `echo` except lit suppresses the normal execution trace for `@echo` and just prints its stdout directly. For now, `@echo` isn't documented for use in lit tests.
Without this patch, libcxx's custom lit test format tries to parse the stdout from `lit.TestRunner.executeScriptInternal` (which runs lit's internal shell) to extract the stdout and stderr produced by shell commands, and that parse no longer works after the above changes. This patch makes a small adjustment to `lit.TestRunner.executeScriptInternal` so libcxx can just request stdout and stderr without an execution trace.
(As a minor drive-by fix that came up in testing: lit's internal `not` command now always produces a numeric exit status and never `True`.)
Caveat ------
This patch only makes the above changes for lit's internal shell. In most cases, we do not know how to force external shells (e.g., bash, sh, window's `cmd`) to produce execution traces in the manner we want.
To configure a test suite to use lit's internal shell (which is usually better for test portability than external shells anyway), add this to the test suite's `lit.cfg` or other configuration file:
``` config.test_format = lit.formats.ShTest(execute_external=False) ```
Reviewed By: MaskRay, awarzynski
Differential Revision: https://reviews.llvm.org/D156954
show more ...
|
#
09b6e457 |
| 29-Aug-2023 |
Joel E. Denny <jdenny.ornl@gmail.com> |
[lit] Drop "Script:", make -v and -a imply -vv
This patch and D156954 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
**Motivation**: -a shows output from al
[lit] Drop "Script:", make -v and -a imply -vv
This patch and D156954 were discussed in <https://discourse.llvm.org/t/rfc-improving-lits-debug-output/72839>.
**Motivation**: -a shows output from all tests, and -v shows output from just failed tests. Without this patch, that output from each test includes a section called "Script:", which includes all shell commands that lit has computed from RUN directives and will attempt to run for that test. The effect of -vv (which also implies -v if neither -a or -v is specified) is to extend that output with shell commands as they are executing so you can easily see which one failed.
For example, when using lit's internal shell and -vv:
``` Script: -- : 'RUN: at line 1'; echo hello world : 'RUN: at line 2'; 3c40 hello world : 'RUN: at line 3'; echo hello world -- Exit Code: 127
Command Output (stdout): -- $ ":" "RUN: at line 1" $ "echo" "hello" "world" hello world
$ ":" "RUN: at line 2" $ "3c40" "hello" "world" '3c40': command not found error: command failed with exit status: 127
-- ```
Notice that all shell commands that actually execute appear in the output twice, once for "Script:" and once for -vv. Especially for tests with many RUN directives, the result is noisy. When searching through the output for a particular shell command, it is easy to get lost and mistake shell commands under "Script:" for shell commands that actually executed.
**Change**: With this patch, a test's output changes in two ways. First, the "Script:" section is never shown. Second, omitting -vv no longer disables printing of shell commands as they execute. That is, -a and -v imply -vv, and so -vv is deprecated as it is just an alias for -v.
**Secondary motivation**: We are also working to introduce a PYTHON directive, which can appear between RUN directives. How should PYTHON directives be represented in the "Script:" section, which has previously been just a shell script? We could probably think of something, but adding info about PYTHON directive execution in the -vv trace seems more straight-forward and more useful.
(This patch also removes a confusing point in the -vv documentation: at least when using bash as an external shell, -vv echoes commands to the shell's stderr not stdout.)
Reviewed By: awarzynski, Endill, ldionne, MaskRay
Differential Revision: https://reviews.llvm.org/D154984
show more ...
|
Revision tags: llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2 |
|
#
2f69c82c |
| 07-Aug-2021 |
Michał Górny <mgorny@moritz.systems> |
[llvm] [lit] Support forcing lexical test order
Add a new --order option to choose between available test orders: the default "smart" order, predictable "lexical" order or "random" order. Default t
[llvm] [lit] Support forcing lexical test order
Add a new --order option to choose between available test orders: the default "smart" order, predictable "lexical" order or "random" order. Default to using lexical order and one job in the lit test suite.
Differential Revision: https://reviews.llvm.org/D107695
show more ...
|
Revision tags: llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1 |
|
#
99d6e05e |
| 08-Apr-2020 |
Julian Lettner <julian.lettner@apple.com> |
[lit] Improve naming of test result categories
Improve consistency when printing test results: Previously we were using different labels for group names (the header for the list of, e.g., failing te
[lit] Improve naming of test result categories
Improve consistency when printing test results: Previously we were using different labels for group names (the header for the list of, e.g., failing tests) and summary count lines. For example, "Failing Tests"/"Unexpected Failures". This commit changes lit to label things consistently.
Improve wording of labels: When talking about individual test results, the first word in "Unexpected Failures", "Expected Passes", and "Individual Timeouts" is superfluous. Some labels contain the word "Tests" and some don't. Let's simplify the names.
Before: ``` Failing Tests (1): ...
Expected Passes : 3 Unexpected Failures: 1 ```
After: ``` Failed Tests (1): ...
Passed: 3 Failed: 1 ```
Reviewed By: ldionne
Differential Revision: https://reviews.llvm.org/D77708
show more ...
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1, llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3, llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1, llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4 |
|
#
41474502 |
| 28-Feb-2019 |
Julian Lettner <julian.lettner@gmail.com> |
[lit] Improve test summary output
This change aligns the test summary output along the longest category label. We also properly align test counts.
Before: ``` Testing Time: 10.30s Unsupported Te
[lit] Improve test summary output
This change aligns the test summary output along the longest category label. We also properly align test counts.
Before: ``` Testing Time: 10.30s Unsupported Tests : 1 Expected Passes : 30 ```
After: ``` Testing Time: 10.29s Unsupported Tests: 1 Expected Passes : 30 ```
show more ...
|
#
1e8900cc |
| 31-Mar-2020 |
Julian Lettner <julian.lettner@apple.com> |
[lit] Fix test that relied on "single process" mode
The shtest-inject test relied on being executed in "single process" mode and started to fail with a `PicklingError` after it was removed: ``` Ca
[lit] Fix test that relied on "single process" mode
The shtest-inject test relied on being executed in "single process" mode and started to fail with a `PicklingError` after it was removed: ``` Can't pickle <class 'lit.TestingConfig.CustomFormat'>: attribute lookup lit.TestingConfig.CustomFormat failed ```
This happened because the test config has to be serialized to the worker process, but apparently the `CustomFormat` class defined inline is not serializable.
This change allows passing the tested functionality (preamble_commands) directly to `lit.formats.ShTest` so we can use it directly in the test.
show more ...
|
#
8f64b02d |
| 19-Mar-2020 |
Louis Dionne <ldionne@apple.com> |
[lit] Allow passing extra commands to executeShTest
This allows creating custom test formats on top of `executeShTest` that inject commands at the beginning of the file being parsed, without requiri
[lit] Allow passing extra commands to executeShTest
This allows creating custom test formats on top of `executeShTest` that inject commands at the beginning of the file being parsed, without requiring these commands to physically appear in the test file itself.
For example, one could define a test format that prints out additional debug information at the beginning of each test. More realistically, this has been used to define custom test formats like one that supports compilation failure tests (e.g. with the extension `compile.fail.cpp`) by injecting a command that calls the compiler on the file itself and expects it to fail.
Without this change, the only alternative is to create a temporary file with the same content as the original test, then prepend the desired `// RUN:` lines to that file, and call `executeShTest` on that file instead. This is both slow and cumbersome to do.
Differential Revision: https://reviews.llvm.org/D76290
show more ...
|