| #!/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" |