diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/cli-opts.sh | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/cli-opts.sh b/tests/cli-opts.sh new file mode 100755 index 0000000..a6be446 --- /dev/null +++ b/tests/cli-opts.sh @@ -0,0 +1,104 @@ +#!/bin/sh +set -u + +export XDG_DATA_HOME="$PWD/tests/test-profiles" +OUT= +ERR= +STATUS= + +assert_status() { + if [ "$STATUS" != "$1" ]; then + echo "Unexpected status: $STATUS, expected: $1" + exit 1 + fi +} + +assert_usage() { + if ! grep -Fq 'Usage' "$ERR"; then + echo 'Expected to find "Usage" text, it was missing. STDERR was:' + cat "$ERR" + exit 1 + fi +} + +test_unsupported_long_flags() { + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering --unknown-long-flag 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage +} + +test_missing_required_flags() { + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering -a something -b else 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage +} + +test_single_required_flag() { + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering -p valid-test-profile 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage + + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering -c 'head -n' 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage +} + +test_flags_without_required_argument() { + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering -pc 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage + + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering -cp 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage + + OUT="$(mktemp)" + ERR="$(mktemp)" + sh remembering -p -c 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 2 + assert_usage +} + +test_valid_options() { + OUT="$(mktemp)" + ERR="$(mktemp)" + printf 'a\nb\nc\n' | sh remembering -p "always-unique-$(uuidgen)" -c 'head -n1' 1>"$OUT" 2>"$ERR" + STATUS=$? + assert_status 0 + if [ "$(cat "$OUT")" != 'a' ]; then + echo "Expected STDOUT ($OUT) to be 'a', but was:" + cat "$OUT" + exit 1 + fi + if [ "$(cat "$ERR")" != '' ]; then + echo "Expected STDERR ($ERR) to be empty, but has content:" + cat "$ERR" + exit 1 + fi +} + +test_unsupported_long_flags +test_missing_required_flags +test_missing_required_flags +test_single_required_flag +test_flags_without_required_argument +test_valid_options |