diff --git a/test/Other/Inputs/TestProg/TestProg b/test/Other/Inputs/TestProg/TestProg new file mode 100755 index 00000000000..1c4efba60d0 --- /dev/null +++ b/test/Other/Inputs/TestProg/TestProg @@ -0,0 +1,3 @@ +#!/bin/sh + +false diff --git a/test/Other/can-execute.txt b/test/Other/can-execute.txt new file mode 100644 index 00000000000..c7d08f6d8b1 --- /dev/null +++ b/test/Other/can-execute.txt @@ -0,0 +1,20 @@ +REQUIRES: shell + +This tests that we abstract two peculiarities of unix in can_execute: + +* Directories are executable, but we don't want to try to execute them. +* For shell scripts, we also need to be able to read them. + +The PATH is constructed such that 'not' will first find a directory named +TestProg, then a file with executable bit but not readable and finally a +shell script which always returns false, which is what it actually tries to +execute. + +If we want, it is probably OK to change the semantics of can_execute and this +test, but for now this test serves as a reminder to audit all the callers if +we do that. + +RUN: cp -f %S/Inputs/TestProg/TestProg %T/TestProg +RUN: chmod 111 %T/TestProg +RUN: export PATH=%S/Inputs:%T:%S/Inputs/TestProg:$PATH +RUN: not TestProg