Files
makeself/test/appendtest

98 lines
2.5 KiB
Bash

#!/bin/bash
set -eu
THIS="$(readlink -f "$0")"
THISDIR="$(dirname "${THIS}")"
SRCDIR="$(dirname "${THISDIR}")"
SUT="${SRCDIR}/makeself.sh"
WHAT="$(basename "${THIS}")"
# FIXME: These tests need to check that the concatenation of archives works
readonly archive_dir_create="$(mktemp -dt archive_dir_create.XXXXXX)"
readonly archive_dir_append="$(mktemp -dt archive_dir_append.XXXXXX)"
touch "${archive_dir_create}/fee"
touch "${archive_dir_create}/fie"
touch "${archive_dir_append}/foe"
touch "${archive_dir_append}/fum"
evalAssert() {
eval "$@"
assertEquals "$?" "0"
}
# $1 : file_name
doInfoListCheckExec() {
evalAssert "$1" --info
evalAssert "$1" --list
evalAssert "$1" --check
evalAssert "$1"
}
# $1 : file_name
# rest : content basenames
assertFileContains() {
local file_name=""
file_name="$(readlink -f "$1")"
shift
local target="${file_name}.d"
rm -rf "${target}"
mkdir -p "${target}"
evalAssert "${file_name}" --target "${target}"
assertEquals "$(find "${target}" -type f -exec basename -a {} + | sort)" "$(echo -e "$@" | sort)"
rm -rf "${target}"
}
# $@ : makeself options
doTestOpts() {
local stem=""
stem="$(printf '%s' "${WHAT}" "$@" | tr -sc '[:alnum:]_.-' '_')"
local file_name=""
file_name="${stem}.run"
evalAssert "${SUT}" "$@" --sha256 \
"${archive_dir_create}" \
"${file_name}" \
"${stem}" \
"echo ${stem}"
file_name="$(readlink -f ${file_name})"
doInfoListCheckExec "${file_name}"
assertFileContains "${file_name}" "fee\nfie"
evalAssert "${SUT}" "$@" --sha256 \
--append "${archive_dir_append}" \
"${file_name}"
doInfoListCheckExec "${file_name}"
assertFileContains "${file_name}" "fee\nfie\nfoe\nfum"
rm -f "${file_name}"
}
# $1 : compression option
doTestComp() {
if ! command -v "${1#--*}" >/dev/null 2>&1; then
echo "WARNING: missing command: ${1#--*}" >&2
return 0
fi
doTestOpts "$1"
}
################################################################################
testDefault() { doTestOpts; }
testNocomp() { doTestOpts --nocomp; }
testBase64() { doTestComp --base64; }
testBzip2() { doTestComp --bzip2; }
testCompress() { doTestComp --compress; }
testGzip() { doTestComp --gzip; }
testLz4() { doTestComp --lz4; }
testLzo() { doTestComp --lzo; }
testPbzip2() { doTestComp --pbzip2; }
testPigz() { doTestComp --pigz; }
testXz() { doTestComp --xz; }
testZstd() { doTestComp --zstd; }
# Load and run shUnit2.
source "./shunit2/shunit2"