#!/bin/sh set -u . aux/tests-lib.sh export PATH="$PWD/tests:$PATH" test_help_flags() { testing 'help flags' OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --help 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_usage "$OUT" assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --something somethign -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_usage "$OUT" assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --help more things 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_usage "$OUT" assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' test_ok } test_version_flags() { testing 'version flags' REGEX='^git-permalink-[0-9\.]+ [0-9-]+$' OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink -V 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --version 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --abc xyz -V 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --version things again 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" test_ok } test_unsupported_flags_are_treated_as_arguments() { testing 'usupported flags are treated as arguments' OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink --first-flag --second-flag 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stdout assert_fgrep_stderr "--first-flag" assert_fgrep_stderr "--second-flag" OUT="$(mktemp)" ERR="$(mktemp)" ./git-permalink -p --first-flag --second-flag 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout "--first-flag" assert_fgrep_stdout "--second-flag" test_ok } test_help_flags test_version_flags test_unsupported_flags_are_treated_as_arguments