mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[lit] Check for accidental external command calls
This patch extends lit's test suite to check that lit's internal shell doesn't accidentally execute internal commands as external commands. It does so by putting fake failing versions of those commands in `PATH` while the entire lit test suite is running. Without the fixes in D65697 but with its tests, this approach catches accidental external `env` calls. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D66293 llvm-svn: 369309
This commit is contained in:
parent
a8dfb73265
commit
eaf7cad4eb
5
utils/lit/tests/Inputs/fake-externals/cd
Executable file
5
utils/lit/tests/Inputs/fake-externals/cd
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import fake_external
|
||||
|
||||
fake_external.execute(__file__)
|
5
utils/lit/tests/Inputs/fake-externals/diff
Executable file
5
utils/lit/tests/Inputs/fake-externals/diff
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import fake_external
|
||||
|
||||
fake_external.execute(__file__)
|
5
utils/lit/tests/Inputs/fake-externals/env
Executable file
5
utils/lit/tests/Inputs/fake-externals/env
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import fake_external
|
||||
|
||||
fake_external.execute(__file__)
|
5
utils/lit/tests/Inputs/fake-externals/export
Executable file
5
utils/lit/tests/Inputs/fake-externals/export
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import fake_external
|
||||
|
||||
fake_external.execute(__file__)
|
7
utils/lit/tests/Inputs/fake-externals/fake_external.py
Normal file
7
utils/lit/tests/Inputs/fake-externals/fake_external.py
Normal file
@ -0,0 +1,7 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
def execute(fileName):
|
||||
sys.stderr.write("error: external '{}' command called unexpectedly\n"
|
||||
.format(os.path.basename(fileName)));
|
||||
sys.exit(1)
|
5
utils/lit/tests/Inputs/fake-externals/mkdir
Executable file
5
utils/lit/tests/Inputs/fake-externals/mkdir
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import fake_external
|
||||
|
||||
fake_external.execute(__file__)
|
5
utils/lit/tests/Inputs/fake-externals/rm
Executable file
5
utils/lit/tests/Inputs/fake-externals/rm
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import fake_external
|
||||
|
||||
fake_external.execute(__file__)
|
@ -75,3 +75,14 @@ else:
|
||||
if not llvm_config:
|
||||
if sys.platform.startswith('win') or sys.platform.startswith('cygwin'):
|
||||
config.available_features.add('system-windows')
|
||||
|
||||
# For each of lit's internal shell commands ('env', 'cd', 'diff', etc.), put
|
||||
# a fake command that always fails at the start of PATH. This helps us check
|
||||
# that we always use lit's internal version rather than some external version
|
||||
# that might not be present or behave correctly on all platforms. Don't do
|
||||
# this for 'echo' because an external version is used when it appears in a
|
||||
# pipeline. Don't do this for ':' because it doesn't appear to be a valid file
|
||||
# name under Windows.
|
||||
test_bin = os.path.join(os.path.dirname(__file__), 'Inputs', 'fake-externals')
|
||||
config.environment['PATH'] = os.path.pathsep.join((test_bin,
|
||||
config.environment['PATH']))
|
||||
|
Loading…
x
Reference in New Issue
Block a user