diff options
author | EuAndreh <eu@euandre.org> | 2021-01-24 00:53:32 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-01-24 00:54:49 -0300 |
commit | f2f2713e6b9c746a3089f0e83e265b14f15917ac (patch) | |
tree | 681fa597fdc2163acec063392700a31e0ccff2d9 | |
parent | ~/.local/share/{remember => remembering} (diff) | |
download | remembering-f2f2713e6b9c746a3089f0e83e265b14f15917ac.tar.gz remembering-f2f2713e6b9c746a3089f0e83e265b14f15917ac.tar.xz |
Add tests/cli-opts.sh tests
Diffstat (limited to '')
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 1 | ||||
-rwxr-xr-x | remembering | 4 | ||||
-rwxr-xr-x | tests/cli-opts.sh | 104 |
4 files changed, 108 insertions, 2 deletions
@@ -1 +1,2 @@ /public/ +/tests/test-profiles/ @@ -28,6 +28,7 @@ uninstall: check: sh tests/all.sh + sh tests/cli-opts.sh if [ -d .git ]; then \ echo 'Assuming Git repository, running development checks.'; \ diff --git a/remembering b/remembering index 9210309..b31924e 100755 --- a/remembering +++ b/remembering @@ -2,11 +2,11 @@ set -eu usage() { - printf 'Usage: %s: -p PROFILE -c "COMMAND"\n' "$0" + printf 'Usage: %s: -p PROFILE -c "COMMAND"\n' "$0" >&2 } missing() { - printf 'Missing option: %s\n' "$1" + printf 'Missing option: %s\n' "$1" >&2 } COMMANDFLAG= 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 |