aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xtests/cli-opts.sh104
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