[llvm] r365313 - [lit] Parse command-line options from LIT_OPTS
Joel E. Denny via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 8 05:18:40 PDT 2019
Author: jdenny
Date: Mon Jul 8 05:18:40 2019
New Revision: 365313
URL: http://llvm.org/viewvc/llvm-project?rev=365313&view=rev
Log:
[lit] Parse command-line options from LIT_OPTS
Similar to `FILECHECK_OPTS` for FileCheck, `LIT_OPTS` makes it easy to
adjust lit behavior when running the test suite via ninja. For
example:
```
$ LIT_OPTS='--time-tests -vv --filter=threadprivate' \
ninja check-clang-openmp
```
Reviewed By: probinson
Differential Revision: https://reviews.llvm.org/D64135
Added:
llvm/trunk/utils/lit/tests/Inputs/lit-opts/
llvm/trunk/utils/lit/tests/Inputs/lit-opts/lit.cfg
llvm/trunk/utils/lit/tests/Inputs/lit-opts/test.txt
llvm/trunk/utils/lit/tests/lit-opts.py
Modified:
llvm/trunk/docs/CommandGuide/lit.rst
llvm/trunk/utils/lit/lit/main.py
Modified: llvm/trunk/docs/CommandGuide/lit.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/lit.rst?rev=365313&r1=365312&r2=365313&view=diff
==============================================================================
--- llvm/trunk/docs/CommandGuide/lit.rst (original)
+++ llvm/trunk/docs/CommandGuide/lit.rst Mon Jul 8 05:18:40 2019
@@ -38,6 +38,11 @@ Finally, :program:`lit` also supports ad
subset of the options specified on the command line, see
:ref:`selection-options` for more information.
+:program:`lit` parses options from the environment variable ``LIT_OPTS`` after
+parsing options from the command line. ``LIT_OPTS`` is primarily useful for
+supplementing or overriding the command-line options supplied to :program:`lit`
+by ``check`` targets defined by a project's build system.
+
Users interested in the :program:`lit` architecture or designing a
:program:`lit` testing implementation should see :ref:`lit-infrastructure`.
Modified: llvm/trunk/utils/lit/lit/main.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/main.py?rev=365313&r1=365312&r2=365313&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/main.py (original)
+++ llvm/trunk/utils/lit/lit/main.py Mon Jul 8 05:18:40 2019
@@ -11,6 +11,7 @@ import os
import platform
import random
import re
+import shlex
import sys
import time
import argparse
@@ -322,7 +323,8 @@ def main_with_tmp(builtinParameters):
help="Show all discovered tests",
action="store_true", default=False)
- opts = parser.parse_args()
+ opts = parser.parse_args(sys.argv[1:] +
+ shlex.split(os.environ.get("LIT_OPTS", "")))
args = opts.test_paths
if opts.show_version:
Added: llvm/trunk/utils/lit/tests/Inputs/lit-opts/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/lit-opts/lit.cfg?rev=365313&view=auto
==============================================================================
--- llvm/trunk/utils/lit/tests/Inputs/lit-opts/lit.cfg (added)
+++ llvm/trunk/utils/lit/tests/Inputs/lit-opts/lit.cfg Mon Jul 8 05:18:40 2019
@@ -0,0 +1,7 @@
+import lit.formats
+config.name = 'lit-opts'
+config.suffixes = ['.txt']
+config.test_format = lit.formats.ShTest()
+config.test_source_root = None
+config.test_exec_root = None
+config.substitutions.append(('%var', lit_config.params.get('var', '')))
Added: llvm/trunk/utils/lit/tests/Inputs/lit-opts/test.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/lit-opts/test.txt?rev=365313&view=auto
==============================================================================
--- llvm/trunk/utils/lit/tests/Inputs/lit-opts/test.txt (added)
+++ llvm/trunk/utils/lit/tests/Inputs/lit-opts/test.txt Mon Jul 8 05:18:40 2019
@@ -0,0 +1 @@
+# RUN: echo %var
Added: llvm/trunk/utils/lit/tests/lit-opts.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/lit-opts.py?rev=365313&view=auto
==============================================================================
--- llvm/trunk/utils/lit/tests/lit-opts.py (added)
+++ llvm/trunk/utils/lit/tests/lit-opts.py Mon Jul 8 05:18:40 2019
@@ -0,0 +1,33 @@
+# Check cases where LIT_OPTS has no effect.
+#
+# RUN: %{lit} -j 1 -s %{inputs}/lit-opts | FileCheck %s
+# RUN: env LIT_OPTS= %{lit} -j 1 -s %{inputs}/lit-opts | FileCheck %s
+# RUN: env LIT_OPTS=-s %{lit} -j 1 -s %{inputs}/lit-opts | FileCheck %s
+
+# Check that LIT_OPTS can override command-line options.
+#
+# RUN: env LIT_OPTS=-a \
+# RUN: %{lit} -j 1 -s %{inputs}/lit-opts \
+# RUN: | FileCheck -check-prefix=SHOW-ALL -DVAR= %s
+
+# Check that LIT_OPTS understands multiple options with arbitrary spacing.
+#
+# RUN: env LIT_OPTS='-a -v -Dvar=foobar' \
+# RUN: %{lit} -j 1 -s %{inputs}/lit-opts \
+# RUN: | FileCheck -check-prefix=SHOW-ALL -DVAR=foobar %s
+
+# Check that LIT_OPTS parses shell-like quotes and escapes.
+#
+# RUN: env LIT_OPTS='-a -v -Dvar="foo bar"\ baz' \
+# RUN: %{lit} -j 1 -s %{inputs}/lit-opts \
+# RUN: | FileCheck -check-prefix=SHOW-ALL -DVAR="foo bar baz" %s
+
+# CHECK: Testing: 1 tests
+# CHECK-NOT: PASS
+# CHECK: Expected Passes : 1
+
+# SHOW-ALL: Testing: 1 tests
+# SHOW-ALL: PASS: lit-opts :: test.txt (1 of 1)
+# SHOW-ALL: {{^}}[[VAR]]
+# SHOW-ALL-NOT: PASS
+# SHOW-ALL: Expected Passes : 1
More information about the llvm-commits
mailing list