| #!/bin/bash | |
| set -eu | |
| THIS="$(readlink -f "$0")" | |
| THISDIR="$(dirname "${THIS}")" | |
| SRCDIR="$(dirname "${THISDIR}")" | |
| SUT="${SRCDIR}/makeself.sh" | |
| temp="" | |
| orig_dir="" | |
| setUp() { | |
| temp="$(mktemp -dt datetest.XXXXX)" | |
| orig_dir="$(pwd)" | |
| pushd "${temp}" >/dev/null | |
| mkdir src | |
| echo "echo This is a test" > src/startup.sh | |
| } | |
| tearDown() { | |
| # Cleanup | |
| if test -n "${orig_dir}"; then | |
| popd >/dev/null || cd "${orig_dir}" | |
| fi | |
| if test -n "${temp}"; then | |
| rm -rf "${temp}" | |
| fi | |
| temp="" | |
| orig_dir="" | |
| } | |
| # Default behaviour is to insert the current date in the | |
| # generated file. | |
| testCurrentDate() { | |
| ${SUT} src src.sh alabel startup.sh | |
| # Validate | |
| actual=`strings src.sh | grep packaging` | |
| expected=`LC_ALL=C date +"%b"` | |
| if [[ ${actual} == *${expected}* ]] | |
| then | |
| found=0 | |
| else | |
| echo "Substring not found: ${expected} in ${actual}" | |
| found=1 | |
| fi | |
| assertEquals 0 ${found} | |
| } | |
| # A fixed packaging date can be inserted | |
| # into the generated package. This way | |
| # the package may be recreated from | |
| # source and remain byte-for-bye | |
| # identical. | |
| testDateSet() { | |
| expected='Sat Mar 5 19:35:21 EST 2016' | |
| # Exercise | |
| ${SUT} --packaging-date "${expected}" \ | |
| src src.sh alabel startup.sh | |
| # Validate | |
| actual=`strings src.sh | grep "Date of packaging"` | |
| echo "actual="${actual} | |
| if [[ ${actual} == *${expected}* ]] | |
| then | |
| echo date set found | |
| found=0 | |
| else | |
| echo "Substring not found: ${expected} in ${actual}" | |
| found=1 | |
| fi | |
| assertEquals 0 ${found} | |
| } | |
| # Error if --packaging-date is passed as | |
| # an argument but the date is missing | |
| testPackagingDateNeedsParameter() { | |
| # Exercise | |
| ${SUT} --packaging-date \ | |
| src src.sh alabel startup.sh || true | |
| actual=`test -f src.sh` | |
| # Validate | |
| echo "actual="${actual} | |
| assertNotEquals 0 "${actual}" | |
| } | |
| # With the dates set we can get a byte for | |
| # byte identical package. | |
| testByteforbyte() | |
| { | |
| date='Sat Mar 3 19:35:21 EST 2016' | |
| # GNU tar supports --tar-extra's --mtime option used below. | |
| # bsdtar (Mac/BSD) does not. | |
| tar --version 2>/dev/null | grep -q GNU || startSkipping | |
| # Exercise | |
| ${SUT} --packaging-date "${date}" --tar-extra "--mtime 20160303" \ | |
| src src.sh alabel startup.sh | |
| mv src.sh first | |
| ${SUT} --packaging-date "${date}" --tar-extra "--mtime 20160303" \ | |
| src src.sh alabel startup.sh | |
| mv src.sh second | |
| # Validate | |
| cmp first second | |
| assertEquals $? 0 | |
| } | |
| # Load and run shUnit2. | |
| source "./shunit2/shunit2" |