#!/bin/sh set -u . tests/lib.sh TESTDIR="$(mkdtemp)" cp -R . "$TESTDIR" cd "$TESTDIR" || exit 1 TEST_PREFIX="$PWD/tests/prefix/$(uuid)" make clean >/dev/null make PREFIX="$TEST_PREFIX" install >/dev/null PATH="$TEST_PREFIX/bin:$PATH" test_langs() { testing 'langs' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=POSIX git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=C git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=en_US.UTF-8 git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=en_AU.UTF-8 git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=pt_BR.UTF-8 git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Uso' assert_fgrep_stdout 'Opções' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=pt_PT.UTF-8 git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Uso' assert_fgrep_stdout 'Opções' test_ok } test_help_flags() { testing 'help flags' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=en_US.UTF-8 git-permalink -h 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_fgrep_stdout 'Usage' assert_fgrep_stdout 'Options' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=en_US.UTF-8 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' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=en_US.UTF-8 sh git-permalink --something something -h \ 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 2 assert_usage "$ERR" N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" env LANG=en_US.UTF-8 sh 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-]+$' N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" git-permalink -V 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" git-permalink --version 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" git-permalink -V --abc xyz 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_grep_stdout "$REGEX" N="$LINENO" OUT="$(mkstemp)" ERR="$(mkstemp)" git-permalink --version things again 1>"$OUT" 2>"$ERR" STATUS=$? assert_status 0 assert_empty_stderr assert_grep_stdout "$REGEX" test_ok } test_langs test_help_flags test_version_flags