You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.2 KiB
115 lines
2.2 KiB
#!/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 |
|
css |
|
dts |
|
elixir |
|
fortran |
|
fountain |
|
golang |
|
html |
|
java |
|
markdown |
|
matlab |
|
objc |
|
pascal |
|
perl |
|
php |
|
python |
|
ruby |
|
rust |
|
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" " |
|
git diff -U1 $i >actual && |
|
grep '@@ .* @@.*RIGHT' actual |
|
" |
|
done |
|
|
|
test_done
|
|
|