aboutsummaryrefslogtreecommitdiff
#!/bin/sh
set -u

. aux/tests-lib.sh

export PATH="$PWD/tests:$PATH"

test_langs() {
	testing 'langs'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=POSIX sh src/git-permalink.sh -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_fgrep_stdout 'Usage'
	assert_fgrep_stdout 'Options'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=C sh src/git-permalink.sh -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_fgrep_stdout 'Usage'
	assert_fgrep_stdout 'Options'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=en_US.UTF-8 sh src/git-permalink.sh -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_fgrep_stdout 'Usage'
	assert_fgrep_stdout 'Options'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=en_AU.UTF-8 sh src/git-permalink.sh -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_fgrep_stdout 'Usage'
	assert_fgrep_stdout 'Options'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=pt_BR.UTF-8 sh src/git-permalink.sh -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_fgrep_stdout 'Uso'
	assert_fgrep_stdout 'Opções'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=pt_PT.UTF-8 sh src/git-permalink.sh -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'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=en_US.UTF-8 sh src/git-permalink.sh -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_fgrep_stdout 'Usage'
	assert_fgrep_stdout 'Options'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=en_US.UTF-8 sh src/git-permalink.sh --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)"
	LANG=en_US.UTF-8 sh src/git-permalink.sh --something something -h 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_usage "$OUT"
	assert_fgrep_stdout 'Usage'
	assert_fgrep_stdout 'Options'

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	LANG=en_US.UTF-8 sh src/git-permalink.sh --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)"
	sh src/git-permalink.sh -V 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_grep_stdout "$REGEX"

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	sh src/git-permalink.sh --version 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_empty_stderr
	assert_grep_stdout "$REGEX"

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	sh src/git-permalink.sh -V --abc xyz 1>"$OUT" 2>"$ERR"
	STATUS=$?
	assert_status 0
	assert_grep_stdout "$REGEX"

	OUT="$(mktemp)"
	ERR="$(mktemp)"
	sh src/git-permalink.sh --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