diff options
Diffstat (limited to 'tests/cli-opts.sh')
-rwxr-xr-x | tests/cli-opts.sh | 106 |
1 files changed, 105 insertions, 1 deletions
diff --git a/tests/cli-opts.sh b/tests/cli-opts.sh index 39f01f4..1d7cab8 100755 --- a/tests/cli-opts.sh +++ b/tests/cli-opts.sh @@ -4,6 +4,85 @@ set -eu . tests/lib.sh +test_unsupported_flags() { + testing 'unsupported flags' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR"' EXIT + STATUS=0 + ./uuid.bin -x 1>"$OUT" 2>"$ERR" || STATUS=$? + assert_status 2 + assert_empty_stdout + assert_grep_stderr '^Usage:$' + rm "$OUT" "$ERR" + + test_ok +} + +test_flag_without_required_arguments() { + testing 'flag without required arguments' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR"' EXIT + STATUS=0 + ./uuid.bin -v 1>"$OUT" 2>"$ERR" || STATUS=$? + assert_status 2 + assert_empty_stdout + assert_grep_stderr '^Usage:$' + rm "$OUT" "$ERR" + + test_ok +} + +test_flag_with_bad_argument_value() { + testing 'flag without required arguments' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR"' EXIT + STATUS=0 + ./uuid.bin -v 1 1>"$OUT" 2>"$ERR" || STATUS=$? + assert_status 2 + assert_empty_stdout + assert_grep_stderr '^Usage:$' + rm "$OUT" "$ERR" + + test_ok +} + +test_generates_uuid_with_custom_version() { + testing 'UUID with custom version' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR"' EXIT + STATUS=0 + ./uuid.bin -v 4 1>"$OUT" 2>"$ERR" || STATUS=$? + assert_status 0 + assert_grep_stdout '^.{,14}4' + assert_empty_stderr + rm "$OUT" "$ERR" + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR"' EXIT + STATUS=0 + ./uuid.bin -v 7 1>"$OUT" 2>"$ERR" || STATUS=$? + assert_status 0 + assert_grep_stdout '^.{,14}7' + assert_empty_stderr + rm "$OUT" "$ERR" + + test_ok +} + test_generates_uuid_with_0_args() { testing 'generates UUID with 0 arguments' @@ -28,7 +107,8 @@ test_checks_string_with_1_arg() { ERR="$(mkstemp)" trap 'rm -f "$OUT" "$ERR"' EXIT STATUS=0 - ./uuid.bin 'cac94e13-41fa-40c4-bd46-5b7b3b46c09e' 1>"$OUT" 2>"$ERR" || STATUS=$? + ID='cac94e13-41fa-40c4-bd46-5b7b3b46c09e' + ./uuid.bin "$ID" 1>"$OUT" 2>"$ERR" || STATUS=$? assert_status 0 assert_empty_stdout assert_empty_stderr @@ -48,7 +128,31 @@ test_checks_string_with_1_arg() { test_ok } +test_checks_string_with_1_arg_ignores_options() { + testing 'checks string with 1 arg ignores options' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR"' EXIT + STATUS=0 + ID='cac94e13-41fa-40c4-bd46-5b7b3b46c09e' + ID='76600ea2-0282-4b38-9bc9-dd69125445f3' + ./uuid.bin -v 4 "$ID" 1>"$OUT" 2>"$ERR" || STATUS=$? + assert_status 0 + assert_empty_stdout + assert_empty_stderr + rm "$OUT" "$ERR" + + test_ok +} + +test_unsupported_flags +test_flag_without_required_arguments test_generates_uuid_with_0_args +test_flag_with_bad_argument_value +test_generates_uuid_with_custom_version test_checks_string_with_1_arg +test_checks_string_with_1_arg_ignores_options |