git-commit-vandalism/t/t3320-notes-merge-worktrees.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

73 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 2015 Twitter, Inc
#
test_description='Test merging of notes trees in multiple worktrees'
. ./test-lib.sh
test_expect_success 'setup commit' '
test_commit tantrum
'
commit_tantrum=$(git rev-parse tantrum^{commit})
test_expect_success 'setup notes ref (x)' '
git config core.notesRef refs/notes/x &&
git notes add -m "x notes on tantrum" tantrum
'
test_expect_success 'setup local branch (y)' '
git update-ref refs/notes/y refs/notes/x &&
git config core.notesRef refs/notes/y &&
git notes remove tantrum
'
test_expect_success 'setup remote branch (z)' '
git update-ref refs/notes/z refs/notes/x &&
git config core.notesRef refs/notes/z &&
git notes add -f -m "conflicting notes on tantrum" tantrum
'
test_expect_success 'modify notes ref ourselves (x)' '
git config core.notesRef refs/notes/x &&
git notes add -f -m "more conflicting notes on tantrum" tantrum
'
test_expect_success 'create some new worktrees' '
git worktree add -b newbranch worktree master &&
git worktree add -b newbranch2 worktree2 master
'
test_expect_success 'merge z into y fails and sets NOTES_MERGE_REF' '
git config core.notesRef refs/notes/y &&
test_must_fail git notes merge z &&
echo "ref: refs/notes/y" >expect &&
test_cmp .git/NOTES_MERGE_REF expect
'
test_expect_success 'merge z into y while mid-merge in another workdir fails' '
(
cd worktree &&
git config core.notesRef refs/notes/y &&
test_must_fail git notes merge z 2>err &&
test_i18ngrep "A notes merge into refs/notes/y is already in-progress at" err
) &&
test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF
'
test_expect_success 'merge z into x while mid-merge on y succeeds' '
(
cd worktree2 &&
git config core.notesRef refs/notes/x &&
test_must_fail git notes merge z 2>&1 >out &&
grep "Automatic notes merge failed" out &&
grep -v "A notes merge into refs/notes/x is already in-progress in" out
) &&
echo "ref: refs/notes/x" >expect &&
test_cmp .git/worktrees/worktree2/NOTES_MERGE_REF expect
'
test_done