diff --git a/shpy b/shpy index bceaf4e..76c2d4a 100644 --- a/shpy +++ b/shpy @@ -29,7 +29,7 @@ createSpy() { echo "$OPTARG" > "$errors_dir/$error_num" error_num=$((error_num + 1)) ;; - r) val="$val $OPTARG" ;; + r) val="${val:-} $OPTARG" ;; *) shpy_die "Error: Unknown option -$OPTARG" ;; esac done @@ -37,7 +37,7 @@ createSpy() { shift $(( OPTIND - 1 )) OPTIND=1 - [ -n "$1" ] || shpy_die "Error: Missing spy name" + [ $# -eq 0 ] && shpy_die "Error: Missing spy name" _shpyResetSpy "$1" _shpySpySetReturnValue "$1" "${val:-0}" @@ -144,7 +144,7 @@ examineNextSpyCall() { } cleanupSpies() { - if [ -n "$_shpy_spies_dir" ]; then + if [ -n "${_shpy_spies_dir+is_set}" ]; then shpy_remove_dir_tree "$_shpy_spies_dir" || shpy_die "Error: \`shpy_remove_dir_tree '$_shpy_spies_dir'\` failed" fi } diff --git a/t/test_cleanupSpies b/t/test_cleanupSpies new file mode 100755 index 0000000..21f521e --- /dev/null +++ b/t/test_cleanupSpies @@ -0,0 +1,48 @@ +#!/bin/sh + +readonly TEST_DIR="$(dirname "$0")" + +# shellcheck source=/dev/null +. "$TEST_DIR/../shpy" +# shellcheck source=/dev/null +. "$TEST_DIR/../shpy-shunit2" + +testCleanupSpies_RemovesTmpDirectory() { + createSpy foo + + # shellcheck disable=SC2154 + assertNotNull "${_shpy_spies_dir}" + [ -d "${_shpy_spies_dir}" ] || fail "Temporary directory does not exist" + + cleanupSpies + + [ ! -d "${_shpy_spies_dir}" ] || fail "Temporary directory should have been removed" +} + +testWorksUnderNoUnsetOption() { + [ -d "${_shpy_spies_dir}" ] && shpy_remove_dir_tree "${_shpy_spies_dir}" + + unset -v _shpy_spies_dir + unset -v _shpy_inited + + set -o nounset + + createSpy foo + + cleanupSpies || fail "Should exit cleanly" +} + +testDoesNotFailIfNoSpiesCreated() { + [ -d "${_shpy_spies_dir}" ] && shpy_remove_dir_tree "${_shpy_spies_dir}" + + unset -v _shpy_spies_dir + unset -v _shpy_inited + + set -o nounset + + cleanupSpies || fail "Should exit cleanly" +} + + +# shellcheck source=/dev/null +. "$TEST_DIR/shunit2" diff --git a/t/test_createSpy b/t/test_createSpy index ee10664..e172de3 100755 --- a/t/test_createSpy +++ b/t/test_createSpy @@ -2,6 +2,8 @@ readonly TEST_DIR="$(dirname "$0")" +set -o nounset + # shellcheck source=/dev/null . "$TEST_DIR/../shpy"