#!/bin/sh 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' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" trap 'rm -f "$OUT" "$ERR"' EXIT STATUS=0 ./uuid.bin 1>"$OUT" 2>"$ERR" || STATUS=$? assert_status 0 assert_empty_stderr rm "$OUT" "$ERR" test_ok } test_checks_string_with_1_arg() { testing 'checks string with 1 arg' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" trap 'rm -f "$OUT" "$ERR"' EXIT STATUS=0 ID='cac94e13-41fa-40c4-bd46-5b7b3b46c09e' ./uuid.bin "$ID" 1>"$OUT" 2>"$ERR" || STATUS=$? assert_status 0 assert_empty_stdout assert_empty_stderr rm "$OUT" "$ERR" N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" trap 'rm -f "$OUT" "$ERR"' EXIT STATUS=0 ./uuid.bin 'bad-uuid-string' 1>"$OUT" 2>"$ERR" || STATUS=$? assert_status 3 assert_empty_stdout assert_stderr "uuid: str isn't of the correct length" rm "$OUT" "$ERR" 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