aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-01-24 00:53:32 -0300
committerEuAndreh <eu@euandre.org>2021-01-24 00:54:49 -0300
commitf2f2713e6b9c746a3089f0e83e265b14f15917ac (patch)
tree681fa597fdc2163acec063392700a31e0ccff2d9 /tests
parent~/.local/share/{remember => remembering} (diff)
downloadremembering-f2f2713e6b9c746a3089f0e83e265b14f15917ac.tar.gz
remembering-f2f2713e6b9c746a3089f0e83e265b14f15917ac.tar.xz
Add tests/cli-opts.sh tests
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