aboutsummaryrefslogtreecommitdiff
path: root/tests/cli-opts.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cli-opts.sh')
-rwxr-xr-x[-rw-r--r--]tests/cli-opts.sh108
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/cli-opts.sh b/tests/cli-opts.sh
index e69de29..f1a89c3 100644..100755
--- a/tests/cli-opts.sh
+++ b/tests/cli-opts.sh
@@ -0,0 +1,108 @@
+#!/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_fgrep_stdout "--first-flag"
+ assert_fgrep_stderr "--first-flag"
+ assert_fgrep_stdout "--second-flag"
+ assert_fgrep_stderr "--second-flag"
+ test_ok
+}
+
+test_help_flags
+test_version_flags
+test_unsupported_flags_are_treated_as_arguments