diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.cpp | 7 | ||||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.dwo | bin | 1056 -> 1056 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.o | bin | 3360 -> 2968 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.dwo | bin | 1168 -> 1040 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.o | bin | 3728 -> 2992 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu1.cpp | 2 | ||||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu2.cpp | 7 | ||||
-rwxr-xr-x | llvm/test/DebugInfo/Inputs/split-dwarf-test | bin | 9624 -> 9208 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo | bin | 1088 -> 1377 bytes | |||
-rw-r--r-- | llvm/test/DebugInfo/llvm-symbolizer.test | 8 | ||||
-rw-r--r-- | llvm/test/Other/lit-globbing.ll | 56 | ||||
-rw-r--r-- | llvm/test/Unit/lit.cfg | 8 | ||||
-rw-r--r-- | llvm/utils/lit/lit/Test.py | 16 | ||||
-rw-r--r-- | llvm/utils/lit/lit/TestRunner.py | 54 | ||||
-rw-r--r-- | llvm/utils/lit/lit/run.py | 20 |
15 files changed, 74 insertions, 104 deletions
diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.cpp b/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.cpp deleted file mode 100644 index d7361f475a2..00000000000 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.cpp +++ /dev/null @@ -1,7 +0,0 @@ -void f1(); -__attribute__((always_inline)) void f2() { - f1(); -} -void f3() { - f2(); -} diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.dwo b/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.dwo Binary files differindex 44bdaf4bffe..2a3bc57caa6 100644 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.dwo +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.dwo diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.o b/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.o Binary files differindex 540302785c2..b6993c6cae2 100644 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.o +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.o diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.dwo b/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.dwo Binary files differindex 94cc3e9d0f7..4df9894b089 100644 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.dwo +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.dwo diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.o b/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.o Binary files differindex dd0cda4a8ff..aa4ab4bc76f 100644 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.o +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu.o diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu1.cpp b/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu1.cpp deleted file mode 100644 index 9bed4bf8b5e..00000000000 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu1.cpp +++ /dev/null @@ -1,2 +0,0 @@ -extern int i; -int i; diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu2.cpp b/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu2.cpp deleted file mode 100644 index 1d17cf38037..00000000000 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-multiple-cu2.cpp +++ /dev/null @@ -1,7 +0,0 @@ -void f1(); -inline __attribute__((always_inline)) void f2() { - f1(); -} -void f3() { - f2(); -} diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-test b/llvm/test/DebugInfo/Inputs/split-dwarf-test Binary files differindex 0e9d4c880bb..4d6aa0cd98a 100755 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-test +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-test diff --git a/llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo b/llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo Binary files differindex fb5eb9c0ffa..588374d7d21 100644 --- a/llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo +++ b/llvm/test/DebugInfo/Inputs/split-dwarf-test.dwo diff --git a/llvm/test/DebugInfo/llvm-symbolizer.test b/llvm/test/DebugInfo/llvm-symbolizer.test index 49da075a451..2c64804659f 100644 --- a/llvm/test/DebugInfo/llvm-symbolizer.test +++ b/llvm/test/DebugInfo/llvm-symbolizer.test @@ -20,8 +20,8 @@ RUN: echo "%p/Inputs/llvm-symbolizer-dwo-test 0x400514" >> %t.input RUN: echo "%p/Inputs/fission-ranges.elf-x86_64 0x720" >> %t.input RUN: echo "%p/Inputs/arange-overlap.elf-x86_64 0x714" >> %t.input RUN: cp %p/Inputs/split-dwarf-test.dwo %T -RUN: echo "%p/Inputs/split-dwarf-test 0x400504" >> %t.input -RUN: echo "%p/Inputs/split-dwarf-test 0x4004f0" >> %t.input +RUN: echo "%p/Inputs/split-dwarf-test 0x4005d4" >> %t.input +RUN: echo "%p/Inputs/split-dwarf-test 0x4005c4" >> %t.input RUN: echo "%p/Inputs/cross-cu-inlining.x86_64-macho.o 0x17" >> %t.input RUN: cp %p/Inputs/split-dwarf-multiple-cu.dwo %T RUN: echo "%p/Inputs/split-dwarf-multiple-cu.o 0x4" >> %t.input @@ -141,9 +141,9 @@ CHECK-NEXT: main CHECK-NEXT: /tmp{{[/\\]}}cross-cu-inlining.c:11:0 CHECK: f2 -CHECK-NEXT: split-dwarf-multiple-cu2.cpp:3:3 +CHECK-NEXT: b.cpp:3:3 CHECK-NEXT: f3 -CHECK-NEXT: split-dwarf-multiple-cu2.cpp:6:0 +CHECK-NEXT: b.cpp:6:0 CHECK: f2 CHECK-NEXT: split-dwarf-addr-object-relocation.cpp:3:3 diff --git a/llvm/test/Other/lit-globbing.ll b/llvm/test/Other/lit-globbing.ll index b60510ab8b2..5a668a90a40 100644 --- a/llvm/test/Other/lit-globbing.ll +++ b/llvm/test/Other/lit-globbing.ll @@ -1,28 +1,28 @@ -RUN: echo XXA > %T/XXA.txt -RUN: echo XXB > %T/XXB.txt -RUN: echo XXAB > %T/XXAB.txt - -RUN: echo %T/XXA* | FileCheck -check-prefix=STAR %s -RUN: echo %T/'XXA'* | FileCheck -check-prefix=STAR %s -RUN: echo %T/XX'A'* | FileCheck -check-prefix=STAR %s - -RUN: echo %T/XX?.txt | FileCheck -check-prefix=QUESTION %s -RUN: echo %T/'XX'?.txt | FileCheck -check-prefix=QUESTION %s - -RUN: echo %T/XX??.txt | FileCheck -check-prefix=QUESTION2 %s -RUN: echo %T/'XX'??.txt | FileCheck -check-prefix=QUESTION2 %s - -RUN: echo 'XX*' 'XX?.txt' 'XX??.txt' | FileCheck -check-prefix=QUOTEDARGS %s - -STAR-NOT: XXB.txt -STAR: {{(XXA.txt.*XXAB.txt|XXAB.txt.*XXA.txt)}} - -QUESTION-NOT: XXAB.txt -QUESTION: {{(XXA.txt.*XXB.txt|XXB.txt.*XXA.txt)}} - -QUESTION2-NOT: XXA.txt -QUESTION2-NOT: XXB.txt -QUESTION2: XXAB.txt - -QUOTEDARGS-NOT: .txt -QUOTEDARGS: XX* XX?.txt XX??.txt +RUN: echo TA > %T/TA.txt
+RUN: echo TB > %T/TB.txt
+RUN: echo TAB > %T/TAB.txt
+
+RUN: echo %T/TA* | FileCheck -check-prefix=STAR %s
+RUN: echo %T/'TA'* | FileCheck -check-prefix=STAR %s
+RUN: echo %T/T'A'* | FileCheck -check-prefix=STAR %s
+
+RUN: echo %T/T?.txt | FileCheck -check-prefix=QUESTION %s
+RUN: echo %T/'T'?.txt | FileCheck -check-prefix=QUESTION %s
+
+RUN: echo %T/T??.txt | FileCheck -check-prefix=QUESTION2 %s
+RUN: echo %T/'T'??.txt | FileCheck -check-prefix=QUESTION2 %s
+
+RUN: echo 'T*' 'T?.txt' 'T??.txt' | FileCheck -check-prefix=QUOTEDARGS %s
+
+STAR-NOT: TB.txt
+STAR: {{(TA.txt.*TAB.txt|TAB.txt.*TA.txt)}}
+
+QUESTION-NOT: TAB.txt
+QUESTION: {{(TA.txt.*TB.txt|TB.txt.*TA.txt)}}
+
+QUESTION2-NOT: TA.txt
+QUESTION2-NOT: TB.txt
+QUESTION2: TAB.txt
+
+QUOTEDARGS-NOT: .txt
+QUOTEDARGS: T* T?.txt T??.txt
diff --git a/llvm/test/Unit/lit.cfg b/llvm/test/Unit/lit.cfg index a3c00d6d18c..dac0bf829ba 100644 --- a/llvm/test/Unit/lit.cfg +++ b/llvm/test/Unit/lit.cfg @@ -39,11 +39,9 @@ for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']: config.environment[symbolizer] = os.environ[symbolizer] # Win32 seeks DLLs along %PATH%. -if sys.platform in ['win32', 'cygwin']: - shlibdir = getattr(config, 'shlibdir', None) - if shlibdir is not None and os.path.isdir(shlibdir): - config.environment['PATH'] = os.path.pathsep.join(( - config.shlibdir, config.environment['PATH'])) +if sys.platform in ['win32', 'cygwin'] and os.path.isdir(config.shlibdir): + config.environment['PATH'] = os.path.pathsep.join(( + config.shlibdir, config.environment['PATH'])) # Win32 may use %SYSTEMDRIVE% during file system shell operations, so propogate. if sys.platform == 'win32' and 'SYSTEMDRIVE' in os.environ: diff --git a/llvm/utils/lit/lit/Test.py b/llvm/utils/lit/lit/Test.py index dc82670358a..1a9e3fe80fb 100644 --- a/llvm/utils/lit/lit/Test.py +++ b/llvm/utils/lit/lit/Test.py @@ -172,7 +172,7 @@ class TestSuite: return os.path.join(self.source_root, *components) def getExecPath(self, components): - return os.path.join(self.exec_root, "Output", *components) + return os.path.join(self.exec_root, *components) class Test: """Test - Information on a single test instance.""" @@ -222,13 +222,10 @@ class Test: # Syntax error in an XFAIL line. self.result.code = UNRESOLVED self.result.output = str(e) - + def getFullName(self): return self.suite.config.name + ' :: ' + '/'.join(self.path_in_suite) - def getTestBaseName(self): - return self.path_in_suite[-1] - def getFilePath(self): if self.file_path: return self.file_path @@ -237,11 +234,8 @@ class Test: def getSourcePath(self): return self.suite.getSourcePath(self.path_in_suite) - def getTempFilePrefix(self): - return self.suite.getExecPath(self.path_in_suite) + ".tmp" - - def getTempFileDir(self): - return os.path.dirname(self.getTempFilePrefix()) + def getExecPath(self): + return self.suite.getExecPath(self.path_in_suite) def isExpectedToFail(self): """ @@ -353,7 +347,7 @@ class Test: safe_name = self.suite.name.replace(".","-") if safe_test_path: - class_name = safe_name + "." + "/".join(safe_test_path) + class_name = safe_name + "." + "/".join(safe_test_path) else: class_name = safe_name + "." + safe_name diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index e72be025308..37b03cc19f8 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -123,7 +123,7 @@ class ShellCommandResult(object): self.exitCode = exitCode self.timeoutReached = timeoutReached self.outputFiles = list(outputFiles) - + def executeShCmd(cmd, shenv, results, timeout=0): """ Wrapper around _executeShCmd that handles @@ -501,7 +501,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper): data = None if data is not None: output_files.append((name, path, data)) - + results.append(ShellCommandResult( cmd.commands[i], out, err, res, timeoutHelper.timeoutReached(), output_files)) @@ -573,7 +573,7 @@ def executeScriptInternal(test, litConfig, tmpBase, commands, cwd): else: out += data out += "\n" - + if result.stdout.strip(): out += '# command output:\n%s\n' % (result.stdout,) if result.stderr.strip(): @@ -690,28 +690,37 @@ def parseIntegratedTestScriptCommands(source_path, keywords): finally: f.close() -def getDefaultSubstitutions(test, normalize_slashes=False): +def getTempPaths(test): + """Get the temporary location, this is always relative to the test suite + root, not test source root.""" + execpath = test.getExecPath() + execdir,execbase = os.path.split(execpath) + tmpDir = os.path.join(execdir, 'Output') + tmpBase = os.path.join(tmpDir, execbase) + return tmpDir, tmpBase + +def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False): sourcepath = test.getSourcePath() sourcedir = os.path.dirname(sourcepath) - tmpDir = test.getTempFileDir() - tmpPrefix = test.getTempFilePrefix() - baseName = test.getTestBaseName() # Normalize slashes, if requested. if normalize_slashes: sourcepath = sourcepath.replace('\\', '/') sourcedir = sourcedir.replace('\\', '/') tmpDir = tmpDir.replace('\\', '/') + tmpBase = tmpBase.replace('\\', '/') # We use #_MARKER_# to hide %% while we do the other substitutions. substitutions = [] substitutions.extend([('%%', '#_MARKER_#')]) substitutions.extend(test.config.substitutions) + tmpName = tmpBase + '.tmp' + baseName = os.path.basename(tmpBase) substitutions.extend([('%s', sourcepath), ('%S', sourcedir), ('%p', sourcedir), ('%{pathsep}', os.pathsep), - ('%t', tmpPrefix), + ('%t', tmpName), ('%basename_t', baseName), ('%T', tmpDir), ('#_MARKER_#', '%')]) @@ -721,7 +730,7 @@ def getDefaultSubstitutions(test, normalize_slashes=False): ('%/s', sourcepath.replace('\\', '/')), ('%/S', sourcedir.replace('\\', '/')), ('%/p', sourcedir.replace('\\', '/')), - ('%/t', tmpPrefix.replace('\\', '/')), + ('%/t', tmpBase.replace('\\', '/') + '.tmp'), ('%/T', tmpDir.replace('\\', '/')), ]) @@ -731,7 +740,7 @@ def getDefaultSubstitutions(test, normalize_slashes=False): ('%:s', re.sub(r'^(.):', r'\1', sourcepath)), ('%:S', re.sub(r'^(.):', r'\1', sourcedir)), ('%:p', re.sub(r'^(.):', r'\1', sourcedir)), - ('%:t', re.sub(r'^(.):', r'\1', tmpPrefix)), + ('%:t', re.sub(r'^(.):', r'\1', tmpBase) + '.tmp'), ('%:T', re.sub(r'^(.):', r'\1', tmpDir)), ]) else: @@ -739,7 +748,7 @@ def getDefaultSubstitutions(test, normalize_slashes=False): ('%:s', sourcepath), ('%:S', sourcedir), ('%:p', sourcedir), - ('%:t', tmpPrefix), + ('%:t', tmpBase + '.tmp'), ('%:T', tmpDir), ]) return substitutions @@ -770,7 +779,7 @@ class ParserKind(object): TAG: A keyword taking no value. Ex 'END.' COMMAND: A keyword taking a list of shell commands. Ex 'RUN:' LIST: A keyword taking a comma-separated list of values. - BOOLEAN_EXPR: A keyword taking a comma-separated list of + BOOLEAN_EXPR: A keyword taking a comma-separated list of boolean expressions. Ex 'XFAIL:' CUSTOM: A keyword with custom parsing semantics. """ @@ -942,14 +951,14 @@ def parseIntegratedTestScript(test, additional_parsers=[], IntegratedTestKeywordParser('REQUIRES:', ParserKind.BOOLEAN_EXPR, initial_value=test.requires), IntegratedTestKeywordParser('REQUIRES-ANY:', ParserKind.CUSTOM, - IntegratedTestKeywordParser._handleRequiresAny, - initial_value=test.requires), + IntegratedTestKeywordParser._handleRequiresAny, + initial_value=test.requires), IntegratedTestKeywordParser('UNSUPPORTED:', ParserKind.BOOLEAN_EXPR, initial_value=test.unsupported), IntegratedTestKeywordParser('END.', ParserKind.TAG) ] keyword_parsers = {p.keyword: p for p in builtin_parsers} - + # Install user-defined additional parsers. for parser in additional_parsers: if not isinstance(parser, IntegratedTestKeywordParser): @@ -959,7 +968,7 @@ def parseIntegratedTestScript(test, additional_parsers=[], raise ValueError("Parser for keyword '%s' already exists" % parser.keyword) keyword_parsers[parser.keyword] = parser - + # Collect the test lines from the script. sourcepath = test.getSourcePath() for line_number, command_type, ln in \ @@ -1005,8 +1014,12 @@ def parseIntegratedTestScript(test, additional_parsers=[], return script + def _runShTest(test, litConfig, useExternalSh, script, tmpBase): - execdir = os.path.dirname(test.getTempFileDir()) + # Create the output directory if it does not already exist. + lit.util.mkdir_p(os.path.dirname(tmpBase)) + + execdir = os.path.dirname(test.getExecPath()) if useExternalSh: res = executeScript(test, litConfig, tmpBase, script, execdir) else: @@ -1050,8 +1063,10 @@ def executeShTest(test, litConfig, useExternalSh, return script if litConfig.noExecute: return lit.Test.Result(Test.PASS) + + tmpDir, tmpBase = getTempPaths(test) substitutions = list(extra_substitutions) - substitutions += getDefaultSubstitutions(test, + substitutions += getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=useExternalSh) script = applySubstitutions(script, substitutions) @@ -1060,8 +1075,7 @@ def executeShTest(test, litConfig, useExternalSh, if hasattr(test.config, 'test_retry_attempts'): attempts += test.config.test_retry_attempts for i in range(attempts): - res = _runShTest(test, litConfig, useExternalSh, script, - test.getTempFilePrefix()) + res = _runShTest(test, litConfig, useExternalSh, script, tmpBase) if res.code != Test.FAIL: break # If we had to run the test more than once, count it as a flaky pass. These diff --git a/llvm/utils/lit/lit/run.py b/llvm/utils/lit/lit/run.py index bdaf1415a1c..1290c142c83 100644 --- a/llvm/utils/lit/lit/run.py +++ b/llvm/utils/lit/lit/run.py @@ -1,5 +1,4 @@ import os -import shutil import sys import threading import time @@ -75,25 +74,6 @@ class Run(object): if not self.tests or jobs == 0: return - # Create fresh output directories for each test we're going to run. - # This guarantees that test runs will not remnants of previous test - # runs' output. - clean_paths = set() - for test in self.tests: - clean_paths.add(os.path.normpath(test.getTempFileDir())) - clean_paths = list(clean_paths) - # Sort by number of path components, to ensure that parent directories - # get deleted and re-created before child directories. - clean_paths.sort(key=lambda x: len(x.split(os.sep))) - for base in clean_paths: - if os.path.exists(base): - if not os.path.islink(base) and os.path.isdir(base): - shutil.rmtree(base, True) - else: - os.unlink(os.path) - if not os.path.exists(base): - lit.util.mkdir_p(base) - # Set up semaphores to limit parallelism of certain classes of tests. # For example, some ASan tests require lots of virtual memory and run # faster with less parallelism on OS X. |