Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/cd =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/cd +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/cd @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +import fake_external + +fake_external.execute(__file__) Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/diff =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/diff +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/diff @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +import fake_external + +fake_external.execute(__file__) Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/env =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/env +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/env @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +import fake_external + +fake_external.execute(__file__) Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/export =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/export +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/export @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +import fake_external + +fake_external.execute(__file__) Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/fake_external.py =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/fake_external.py +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/fake_external.py @@ -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) Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/mkdir =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/mkdir +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/mkdir @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +import fake_external + +fake_external.execute(__file__) Index: llvm/trunk/utils/lit/tests/Inputs/fake-externals/rm =================================================================== --- llvm/trunk/utils/lit/tests/Inputs/fake-externals/rm +++ llvm/trunk/utils/lit/tests/Inputs/fake-externals/rm @@ -0,0 +1,5 @@ +#!/usr/bin/env python + +import fake_external + +fake_external.execute(__file__) Index: llvm/trunk/utils/lit/tests/lit.cfg =================================================================== --- llvm/trunk/utils/lit/tests/lit.cfg +++ llvm/trunk/utils/lit/tests/lit.cfg @@ -75,3 +75,14 @@ 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']))