| #!/bin/bash |
| # FIXME: These tests need to check that the concatenation of archives works |
| |
| set -eu |
| |
| THIS="$(realpath "$0")" |
| WHAT="$(basename "${THIS}")" |
| HERE="$(dirname "${THIS}")" |
| SRCDIR="$(dirname "${HERE}")" |
| SUT="${SRCDIR}/makeself.sh" |
| |
| 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 "$@" |
| assertEqual "$?" "0" |
| } |
| |
| # $1 : file_name |
| doInfoListCheckExec() { |
| evalAssert "$1" --info |
| evalAssert "$1" --list |
| evalAssert "$1" --check |
| evalAssert "$1" |
| } |
| |
| # $1 : file_name |
| # rest : content basenames |
| assertContains() { |
| local file_name="" |
| file_name="$(realpath "$1")" |
| shift |
| local target="${file_name}.d" |
| rm -rf "${target}" |
| mkdir -p "${target}" |
| evalAssert "${file_name}" --target "${target}" |
| assertEqual \ |
| "$(find "${target}" -type f -exec basename -a {} + | sort)" \ |
| "$(echo "$@" | 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="$(realpath ${file_name})" |
| doInfoListCheckExec "${file_name}" |
| assertContains "${file_name}" "fee" "fie" |
| |
| evalAssert "${SUT}" "$@" --sha256 \ |
| --append "${archive_dir_append}" \ |
| "${file_name}" |
| doInfoListCheckExec "${file_name}" |
| assertContains "${file_name}" "fee" "fie" "foe" "fum" |
| |
| 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; } |
| |
| source bashunit/bashunit.bash |
| |
| rm -rf "${archive_dir_create}" "${archive_dir_append}" |