3 # Copyright (c) 2007 Johannes E. Schindelin
6 test_description
='Test custom diff function name patterns'
10 test_expect_success
'setup' '
11 # a non-trivial custom pattern
12 git config diff.custom1.funcname "!static
16 # a custom pattern which matches to end of line
17 git config diff.custom2.funcname "......Beer\$" &&
19 # alternation in pattern
20 git config diff.custom3.funcname "Beer$" &&
21 git config diff.custom3.xfuncname "^[ ]*((public|static).*)$" &&
23 # for regexp compilation tests
54 for p
in $diffpatterns
56 test_expect_success
"builtin $p pattern compiles" '
57 echo "*.java diff=$p" >.gitattributes &&
58 test_expect_code 1 git diff --no-index \
59 A.java B.java 2>msg &&
60 test_i18ngrep ! fatal msg &&
61 test_i18ngrep ! error msg
63 test_expect_success
"builtin $p wordRegex pattern compiles" '
64 echo "*.java diff=$p" >.gitattributes &&
65 test_expect_code 1 git diff --no-index --word-diff \
66 A.java B.java 2>msg &&
67 test_i18ngrep ! fatal msg &&
68 test_i18ngrep ! error msg
72 test_expect_success
'last regexp must not be negated' '
73 echo "*.java diff=java" >.gitattributes &&
74 test_config diff.java.funcname "!static" &&
75 test_expect_code 128 git diff --no-index A.java B.java 2>msg &&
76 test_i18ngrep ": Last expression must not be negated:" msg
79 test_expect_success
'setup hunk header tests' '
80 for i in $diffpatterns
83 done > .gitattributes &&
85 # add all test files to the index
87 cd "$TEST_DIRECTORY"/t4018 &&
88 git --git-dir="$TRASH_DIRECTORY/.git" add .
91 # place modified files in the worktree
92 for i in $(git ls-files)
94 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
98 # check each individual file
99 for i
in $
(git ls-files
)
101 if grep broken
"$i" >/dev
/null
2>&1
107 test_expect_
$result "hunk header: $i" "
108 test_when_finished 'cat actual' && # for debugging only
109 git diff -U1 $i >actual &&
110 grep '@@ .* @@.*RIGHT' actual