# source-p.sh: test of the dot built-in for any POSIX-compliant shell posix="true" cat <<\__END__ >file1 echo $? (exit 3) __END__ cat <<\__END__ >file2 echo in . ./file1 echo out __END__ cat <<\__END__ >file3 exit 11 __END__ test_OE -e 0 'empty dot script' (exit 1) . /dev/null __IN__ test_oE -e 3 'non-empty dot script' (exit 5) . ./file1 __IN__ 5 __OUT__ test_oE -e 0 'recursive dot script' . ./file2 __IN__ in 0 out __OUT__ test_e 'with verbose option' -v . ./file3 __IN__ . ./file3 exit 11 __ERR__ ( # Ensure $PWD is safe to assign to $PATH case $PWD in (*[:%]*) skip="true" esac setup 'savepath=$PATH; PATH=$PWD' test_OE -e 11 'dot script in $PATH' . file3 __IN__ test_O -d -e n 'dot script not found, in $PATH, non-interactive shell' . _no_such_file_ PATH=$savepath echo not reached __IN__ test_o -d 'dot script not found, in $PATH, subshell, exiting' (. _no_such_file_) PATH=$savepath echo reached __IN__ reached __OUT__ test_O -d -e n 'dot script not found, in $PATH, subshell, exit status' (. _no_such_file_) __IN__ : TODO interactive shell behavior not implemented <<\__OUT__ test_o -d 'dot script not found, in $PATH, interactive shell, no exiting' -i +m . _no_such_file_ PATH=$savepath echo reached __IN__ reached __OUT__ test_O -d -e n 'dot script not found, in $PATH, interactive shell, exit status' -i +m . _no_such_file_ __IN__ ) test_O -d -e n 'dot script not found, relative, non-interactive shell' . ./_no_such_file_ echo not reached __IN__ test_o -d 'dot script not found, relative, subshell, exiting' (. ./_no_such_file_) echo reached __IN__ reached __OUT__ test_O -d -e n 'dot script not found, relative, subshell, exit status' (. ./_no_such_file_) __IN__ : TODO interactive shell behavior not implemented <<\__OUT__ test_o -d 'dot script not found, relative, interactive shell, no exiting' -i +m . ./_no_such_file_ echo reached __IN__ reached __OUT__ test_O -d -e n 'dot script not found, relative, interactive shell, exit status' -i +m . ./_no_such_file_ __IN__