Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
git/t/t4018-diff-funcname.sh
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
110 lines (96 sloc)
2.19 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# Copyright (c) 2007 Johannes E. Schindelin | |
# | |
test_description='Test custom diff function name patterns' | |
. ./test-lib.sh | |
test_expect_success 'setup' ' | |
# a non-trivial custom pattern | |
git config diff.custom1.funcname "!static | |
!String | |
[^ ].*s.*" && | |
# a custom pattern which matches to end of line | |
git config diff.custom2.funcname "......Beer\$" && | |
# alternation in pattern | |
git config diff.custom3.funcname "Beer$" && | |
git config diff.custom3.xfuncname "^[ ]*((public|static).*)$" && | |
# for regexp compilation tests | |
echo A >A.java && | |
echo B >B.java | |
' | |
diffpatterns=" | |
ada | |
bibtex | |
cpp | |
csharp | |
fortran | |
fountain | |
html | |
java | |
matlab | |
objc | |
pascal | |
perl | |
php | |
python | |
ruby | |
tex | |
custom1 | |
custom2 | |
custom3 | |
" | |
for p in $diffpatterns | |
do | |
test_expect_success "builtin $p pattern compiles" ' | |
echo "*.java diff=$p" >.gitattributes && | |
test_expect_code 1 git diff --no-index \ | |
A.java B.java 2>msg && | |
test_i18ngrep ! fatal msg && | |
test_i18ngrep ! error msg | |
' | |
test_expect_success "builtin $p wordRegex pattern compiles" ' | |
echo "*.java diff=$p" >.gitattributes && | |
test_expect_code 1 git diff --no-index --word-diff \ | |
A.java B.java 2>msg && | |
test_i18ngrep ! fatal msg && | |
test_i18ngrep ! error msg | |
' | |
done | |
test_expect_success 'last regexp must not be negated' ' | |
echo "*.java diff=java" >.gitattributes && | |
test_config diff.java.funcname "!static" && | |
test_expect_code 128 git diff --no-index A.java B.java 2>msg && | |
test_i18ngrep ": Last expression must not be negated:" msg | |
' | |
test_expect_success 'setup hunk header tests' ' | |
for i in $diffpatterns | |
do | |
echo "$i-* diff=$i" | |
done > .gitattributes && | |
# add all test files to the index | |
( | |
cd "$TEST_DIRECTORY"/t4018 && | |
git --git-dir="$TRASH_DIRECTORY/.git" add . | |
) && | |
# place modified files in the worktree | |
for i in $(git ls-files) | |
do | |
sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1 | |
done | |
' | |
# check each individual file | |
for i in $(git ls-files) | |
do | |
if grep broken "$i" >/dev/null 2>&1 | |
then | |
result=failure | |
else | |
result=success | |
fi | |
test_expect_$result "hunk header: $i" " | |
test_when_finished 'cat actual' && # for debugging only | |
git diff -U1 $i >actual && | |
grep '@@ .* @@.*RIGHT' actual | |
" | |
done | |
test_done |