blob: f8e0f7c2df6a0ea38b3635642a665bff59249d41 [file] [log] [blame] [edit]
#!/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"