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