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