]> git.ipfire.org Git - thirdparty/git.git/blame - t/t4018-diff-funcname.sh
Git 2.5.0-rc0
[thirdparty/git.git] / t / t4018-diff-funcname.sh
CommitLineData
f258475a
JH
1#!/bin/sh
2#
3# Copyright (c) 2007 Johannes E. Schindelin
4#
5
6test_description='Test custom diff function name patterns'
7
8. ./test-lib.sh
9
f1b75fba
JS
10test_expect_success 'setup' '
11 # a non-trivial custom pattern
12 git config diff.custom1.funcname "!static
13!String
14[^ ].*s.*" &&
15
16 # a custom pattern which matches to end of line
17 git config diff.custom2.funcname "......Beer\$" &&
18
19 # alternation in pattern
20 git config diff.custom3.funcname "Beer$" &&
ad5070fb
JS
21 git config diff.custom3.xfuncname "^[ ]*((public|static).*)$" &&
22
23 # for regexp compilation tests
24 echo A >A.java &&
25 echo B >B.java
f1b75fba 26'
d64d6cdc 27
bfa7d014
JS
28diffpatterns="
29 ada
30 bibtex
31 cpp
32 csharp
33 fortran
34 html
35 java
36 matlab
37 objc
38 pascal
39 perl
40 php
41 python
42 ruby
43 tex
f1b75fba
JS
44 custom1
45 custom2
46 custom3
bfa7d014
JS
47"
48
49for p in $diffpatterns
e3bf5e43
BC
50do
51 test_expect_success "builtin $p pattern compiles" '
5b5e4594 52 echo "*.java diff=$p" >.gitattributes &&
d64d6cdc 53 test_expect_code 1 git diff --no-index \
ad5070fb 54 A.java B.java 2>msg &&
41ca19b6
JS
55 test_i18ngrep ! fatal msg &&
56 test_i18ngrep ! error msg
e3bf5e43 57 '
bff42061 58 test_expect_success "builtin $p wordRegex pattern compiles" '
5b5e4594 59 echo "*.java diff=$p" >.gitattributes &&
d64d6cdc 60 test_expect_code 1 git diff --no-index --word-diff \
ad5070fb 61 A.java B.java 2>msg &&
41ca19b6
JS
62 test_i18ngrep ! fatal msg &&
63 test_i18ngrep ! error msg
bff42061 64 '
e3bf5e43
BC
65done
66
f258475a 67test_expect_success 'last regexp must not be negated' '
ad5070fb 68 echo "*.java diff=java" >.gitattributes &&
f792a0b8 69 test_config diff.java.funcname "!static" &&
ad5070fb
JS
70 test_expect_code 128 git diff --no-index A.java B.java 2>msg &&
71 test_i18ngrep ": Last expression must not be negated:" msg
f258475a
JH
72'
73
bfa7d014
JS
74test_expect_success 'setup hunk header tests' '
75 for i in $diffpatterns
76 do
77 echo "$i-* diff=$i"
78 done > .gitattributes &&
79
80 # add all test files to the index
81 (
82 cd "$TEST_DIRECTORY"/t4018 &&
83 git --git-dir="$TRASH_DIRECTORY/.git" add .
84 ) &&
85
86 # place modified files in the worktree
87 for i in $(git ls-files)
88 do
89 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
90 done
91'
92
93# check each individual file
94for i in $(git ls-files)
95do
96 if grep broken "$i" >/dev/null 2>&1
97 then
98 result=failure
99 else
100 result=success
101 fi
102 test_expect_$result "hunk header: $i" "
103 test_when_finished 'cat actual' && # for debugging only
104 git diff -U1 $i >actual &&
105 grep '@@ .* @@.*RIGHT' actual
106 "
107done
108
f258475a 109test_done