| #!/bin/bash |
| set -eu |
| THIS="$(readlink -f "$0")" |
| THISDIR="$(dirname "${THIS}")" |
| SUT="$(dirname "${THISDIR}")/makeself.sh" |
| temp="" |
| pushed=n |
| |
| setUp() { |
| temp=$(mktemp -d -t XXXXX) |
| pushd "${temp}" >/dev/null |
| pushed=y |
| mkdir src |
| echo "echo This is a test" > src/startup.sh |
| chmod a+x src/startup.sh |
| } |
| |
| tearDown() { |
| if test "${pushed}" = y; then |
| popd >/dev/null || true |
| fi |
| if test -n "${temp}"; then |
| rm -rf "${temp}" |
| fi |
| temp="" |
| pushed=n |
| } |
| |
| testPreextractOpts() { |
| echo 'echo A complex pre-extraction script. |
| sleep 99 & |
| cat a.txt 2>/dev/null || cat b.txt && cat c.txt |
| echo "$$ Some\toutput\n\a\b\0777 $var1 ${var2} `cat var3.txt` $(env)" > text.txt |
| ' > preextract.sh |
| |
| ${SUT} --nox11 --preextract preextract.sh src src.sh alabel ./startup.sh |
| assertEquals 0 $? |
| |
| ./src.sh --show-preextract > show-preextract.out |
| assertEquals 0 $? |
| |
| diff preextract.sh show-preextract.out |
| assertEquals 0 $? |
| } |
| |
| testWithNoPreextractOpts() { |
| ${SUT} src src.sh alabel ./startup.sh |
| assertEquals 0 $? |
| |
| ./src.sh --show-preextract |
| assertEquals 1 $? |
| } |
| |
| testPreextractRun() { |
| echo 'echo Validating provided options...' > preextract.sh |
| ${SUT} --nox11 --preextract preextract.sh src src.sh alabel ./startup.sh |
| assertEquals 0 $? |
| |
| ./src.sh |
| assertEquals 0 $? |
| |
| ./src.sh | grep -qF 'Validating provided options...' |
| assertEquals 0 $? |
| } |
| |
| testPreextractNoexec() { |
| echo 'exit 2' > preextract.sh |
| ${SUT} --preextract preextract.sh src src.sh alabel ./startup.sh |
| assertEquals 0 $? |
| |
| ./src.sh |
| assertEquals 1 $? |
| |
| ./src.sh --noexec |
| assertEquals 0 $? |
| } |
| |
| testPreextractArgs() { |
| echo 'echo $*' > preextract.sh |
| ${SUT} --nox11 --preextract preextract.sh src src.sh alabel ./startup.sh --logdir /var/log |
| assertEquals 0 $? |
| |
| test_cmd='./src.sh -- --env dev' |
| |
| eval "${test_cmd}" |
| assertEquals 0 $? |
| |
| eval "${test_cmd}" | grep -qF -- '--logdir /var/log --env dev' |
| assertEquals 0 $? |
| } |
| |
| testPreextractNotemp() { |
| echo 'echo Validating pre-extraction script execution.' > preextract.sh |
| ${SUT} --notemp --nox11 --preextract preextract.sh src src_notemp.sh alabel ./startup.sh |
| assertEquals 0 $? |
| |
| ./src_notemp.sh |
| assertEquals 0 $? |
| |
| ./src_notemp.sh | grep -qF 'Validating pre-extraction script execution.' |
| assertEquals 0 $? |
| } |
| |
| testPreextractEnvPassing() { |
| # imitate user input |
| echo 'echo "export INSTALLATION_DIR=/usr/bin" > preextract.env' > preextract.sh |
| echo '. ./preextract.env; echo $INSTALLATION_DIR' > src/startup.sh |
| ${SUT} --nox11 --preextract preextract.sh src src.sh alabel ./startup.sh |
| assertEquals 0 $? |
| |
| ./src.sh |
| assertEquals 0 $? |
| |
| ./src.sh | grep -qF '/usr/bin' |
| assertEquals 0 $? |
| } |
| |
| # Load and run shUnit2. |
| source "./shunit2/shunit2" |