#!/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