git/t/t5536-fetch-conflicts.sh
Vasco Almeida 1edbaac3bb tests: use test_i18n* functions to suppress false positives
The test functions test_i18ncmp and test_i18ngrep pretend success if run
under GETTEXT_POISON. By using those functions to test output which is
correctly marked as translatable, enables one to detect if the strings
newly marked for translation are from plumbing output. If they are
indeed from plumbing, the test would fail, and the string should be
unmarked, since it is not seen by users.

Thus, it is productive to not have false positives when running the test
under GETTEXT_POISON. This commit replaces normal test functions by
their i18n aware variants in use-cases know to be correctly marked for
translation, suppressing false positives.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-06-17 15:45:48 -07:00

101 lines
2.5 KiB
Bash
Executable file

#!/bin/sh
test_description='fetch handles conflicting refspecs correctly'
. ./test-lib.sh
D=$(pwd)
setup_repository () {
git init "$1" && (
cd "$1" &&
git config remote.origin.url "$D" &&
shift &&
for refspec in "$@"
do
git config --add remote.origin.fetch "$refspec"
done
)
}
verify_stderr () {
cat >expected &&
# We're not interested in the error
# "fatal: The remote end hung up unexpectedly":
test_i18ngrep -E '^(fatal|warning):' <error | grep -v 'hung up' >actual | sort &&
test_i18ncmp expected actual
}
test_expect_success 'setup' '
git commit --allow-empty -m "Initial" &&
git branch branch1 &&
git tag tag1 &&
git commit --allow-empty -m "First" &&
git branch branch2 &&
git tag tag2
'
test_expect_success 'fetch with no conflict' '
setup_repository ok "+refs/heads/*:refs/remotes/origin/*" && (
cd ok &&
git fetch origin
)
'
test_expect_success 'fetch conflict: config vs. config' '
setup_repository ccc \
"+refs/heads/branch1:refs/remotes/origin/branch1" \
"+refs/heads/branch2:refs/remotes/origin/branch1" && (
cd ccc &&
test_must_fail git fetch origin 2>error &&
verify_stderr <<-\EOF
fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1
EOF
)
'
test_expect_success 'fetch duplicate: config vs. config' '
setup_repository dcc \
"+refs/heads/*:refs/remotes/origin/*" \
"+refs/heads/branch1:refs/remotes/origin/branch1" && (
cd dcc &&
git fetch origin
)
'
test_expect_success 'fetch conflict: arg overrides config' '
setup_repository aoc \
"+refs/heads/*:refs/remotes/origin/*" && (
cd aoc &&
git fetch origin refs/heads/branch2:refs/remotes/origin/branch1
)
'
test_expect_success 'fetch conflict: arg vs. arg' '
setup_repository caa && (
cd caa &&
test_must_fail git fetch origin \
refs/heads/*:refs/remotes/origin/* \
refs/heads/branch2:refs/remotes/origin/branch1 2>error &&
verify_stderr <<-\EOF
fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1
EOF
)
'
test_expect_success 'fetch conflict: criss-cross args' '
setup_repository xaa \
"+refs/heads/*:refs/remotes/origin/*" && (
cd xaa &&
git fetch origin \
refs/heads/branch1:refs/remotes/origin/branch2 \
refs/heads/branch2:refs/remotes/origin/branch1 2>error &&
verify_stderr <<-\EOF
warning: refs/remotes/origin/branch1 usually tracks refs/heads/branch1, not refs/heads/branch2
warning: refs/remotes/origin/branch2 usually tracks refs/heads/branch2, not refs/heads/branch1
EOF
)
'
test_done