#!/bin/dash # Test startup, create a temporary directory and cd into it with files. tmp_dir=$(mktemp --directory --quiet --tmpdir=./) if [ "$(find tigger-* | wc -l)" -le 0 ]; then printf "error: no tigger commands found, cannot run tests\n" >&2 exit 1 fi cp tigger-* "$tmp_dir"/ cd "$tmp_dir" || exit # Functions to test if the return value was 0 or non-zero. assert_good_exec () { printf "%s: " "$1" if $1; then return fi printf "test failed, previous command expected zero output code\n" >&2 rm -rf ../"$tmp_dir" exit 1 } # Functions to test if the return value was 0 or non-zero. assert_bad_exec () { printf "%s: " "$1" if ! $1; then return fi printf "test failed, previous command expected non-zero output code\n" >&2 rm -rf ../"$tmp_dir" exit 1 } printf "starting tests: output and order will be printed\n\n" # End of test startup # The purpose of this test is to ensure that removing the expected .tigger # folder does reset the state of tigger. In addition, there should be NO extra # files at the end of this operation, even if it fails. We are only allowed to # edit/create .tigger and what is inside .tigger! num_files_before=$(find ./ | wc -l) assert_good_exec "./tigger-init" num_files_after=$(find ./ | wc -l) assert_bad_exec "./tigger-init" # should make no more files if [ "$(find ./ | wc -l)" -ne "$num_files_after" ]; then printf "the amount of files should be equal to before when tigger-init was called previously!\n" >&2 exit 1 fi rm -rf ./.tigger if [ "$(find ./ | wc -l)" -ne "$num_files_before" ]; then printf "there should be the same amount as files as before any commands were run!\n" >&2 exit 1 fi assert_good_exec "./tigger-init" # Test teardown/cleanup printf "\ntest completed successfully\n" rm -rf ../"$tmp_dir" exit 0