mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
lit.py: Add new %{shared_output(LABEL)} substitution
This refers to a temporary path that can be shared across all tests, identified by a particular label. This can be used for things like caches. At the moment, the character set for the LABEL is limited to C identifier characters, plus '-', '+', '=', and '.'. This is the same set of characters currently allowed in REQUIRES clause identifiers. llvm-svn: 315697
This commit is contained in:
parent
5091f34953
commit
7f1314f8d8
@ -395,17 +395,18 @@ PRE-DEFINED SUBSTITUTIONS
|
||||
:program:`lit` provides various patterns that can be used with the RUN command.
|
||||
These are defined in TestRunner.py. The base set of substitutions are:
|
||||
|
||||
========== ==============
|
||||
Macro Substitution
|
||||
========== ==============
|
||||
%s source path (path to the file currently being run)
|
||||
%S source dir (directory of the file currently being run)
|
||||
%p same as %S
|
||||
%{pathsep} path separator
|
||||
%t temporary file name unique to the test
|
||||
%T temporary directory unique to the test
|
||||
%% %
|
||||
========== ==============
|
||||
======================= ==============
|
||||
Macro Substitution
|
||||
======================= ==============
|
||||
%s source path (path to the file currently being run)
|
||||
%S source dir (directory of the file currently being run)
|
||||
%p same as %S
|
||||
%{pathsep} path separator
|
||||
%t temporary file name unique to the test
|
||||
%T temporary directory unique to the test
|
||||
%{shared_output(LABEL)} temporary file name, identified by "LABEL", shared across all tests
|
||||
%% %
|
||||
======================= ==============
|
||||
|
||||
Other substitutions are provided that are variations on this base set and
|
||||
further substitution patterns can be defined by each test module. See the
|
||||
|
@ -464,6 +464,12 @@ RUN lines:
|
||||
|
||||
Example: ``/home/user/llvm.build/test/MC/ELF/Output``
|
||||
|
||||
``%{shared_output(LABEL)}``
|
||||
File path to a temporary file name shared across all tests, identified by
|
||||
LABEL. This is useful as a cache for generated resources.
|
||||
|
||||
Example: ``/home/user/llvm.build/test/Output/Shared/LABEL.tmp``
|
||||
|
||||
``%{pathsep}``
|
||||
|
||||
Expands to the path separator, i.e. ``:`` (or ``;`` on Windows).
|
||||
|
@ -829,6 +829,9 @@ def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False):
|
||||
sourcepath = test.getSourcePath()
|
||||
sourcedir = os.path.dirname(sourcepath)
|
||||
|
||||
sharedOutputDir = os.path.join(test.suite.exec_root, 'Output', 'Shared')
|
||||
sharedOutputDir += os.path.sep
|
||||
|
||||
# Normalize slashes, if requested.
|
||||
if normalize_slashes:
|
||||
sourcepath = sourcepath.replace('\\', '/')
|
||||
@ -849,6 +852,8 @@ def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False):
|
||||
('%t', tmpName),
|
||||
('%basename_t', baseName),
|
||||
('%T', tmpDir),
|
||||
('%{shared_output\(([-+=._a-zA-Z0-9]+)\)}',
|
||||
'%s\\1.tmp' % (sharedOutputDir,)),
|
||||
('#_MARKER_#', '%')])
|
||||
|
||||
# "%/[STpst]" should be normalized.
|
||||
|
@ -1,4 +1,5 @@
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
@ -136,6 +137,13 @@ class Run(object):
|
||||
return True
|
||||
win32api.SetConsoleCtrlHandler(console_ctrl_handler, True)
|
||||
|
||||
# Make fresh shared output directories.
|
||||
suites = set(test.suite for test in self.tests)
|
||||
for suite in suites:
|
||||
shared_dir = os.path.join(suite.exec_root, 'Output', 'Shared')
|
||||
shutil.rmtree(shared_dir, ignore_errors=True)
|
||||
lit.util.mkdir_p(shared_dir)
|
||||
|
||||
# Save the display object on the runner so that we can update it from
|
||||
# our task completion callback.
|
||||
self.display = display
|
||||
|
5
utils/lit/tests/Inputs/shared-output/lit.cfg
Normal file
5
utils/lit/tests/Inputs/shared-output/lit.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
import lit.formats
|
||||
config.name = 'shared-output'
|
||||
config.suffixes = ['.txt']
|
||||
config.test_format = lit.formats.ShTest()
|
||||
config.test_source_root = os.path.dirname(os.path.realpath(__file__))
|
2
utils/lit/tests/Inputs/shared-output/primary.txt
Normal file
2
utils/lit/tests/Inputs/shared-output/primary.txt
Normal file
@ -0,0 +1,2 @@
|
||||
RUN: echo "primary" >> %{shared_output(SHARED)}
|
||||
RUN: echo "other" >> %{shared_output(OTHER)}
|
1
utils/lit/tests/Inputs/shared-output/secondary.txt
Normal file
1
utils/lit/tests/Inputs/shared-output/secondary.txt
Normal file
@ -0,0 +1 @@
|
||||
RUN: echo "secondary" >> %{shared_output(SHARED)}
|
1
utils/lit/tests/Inputs/shared-output/sub/sub.txt
Normal file
1
utils/lit/tests/Inputs/shared-output/sub/sub.txt
Normal file
@ -0,0 +1 @@
|
||||
RUN: echo "sub" >> %{shared_output(SHARED)}
|
13
utils/lit/tests/shared-output.py
Normal file
13
utils/lit/tests/shared-output.py
Normal file
@ -0,0 +1,13 @@
|
||||
# RUN: rm -rf %t && mkdir -p %t
|
||||
# RUN: echo 'lit_config.load_config(config, "%{inputs}/shared-output/lit.cfg")' > %t/lit.site.cfg
|
||||
# RUN: %{lit} %t
|
||||
# RUN: FileCheck %s < %t/Output/Shared/SHARED.tmp
|
||||
# RUN: FileCheck -check-prefix=NEGATIVE %s < %t/Output/Shared/SHARED.tmp
|
||||
# RUN: FileCheck -check-prefix=OTHER %s < %t/Output/Shared/OTHER.tmp
|
||||
|
||||
# CHECK-DAG: primary
|
||||
# CHECK-DAG: secondary
|
||||
# CHECK-DAG: sub
|
||||
|
||||
# NEGATIVE-NOT: other
|
||||
# OTHER: other
|
Loading…
Reference in New Issue
Block a user