Documentation: mention more worktree-specific exceptions
[git/debian.git] / t / t4018-diff-funcname.sh
blob9261d6d3a0000e9891e1af58265349522ca40b84
1 #!/bin/sh
3 # Copyright (c) 2007 Johannes E. Schindelin
6 test_description='Test custom diff function name patterns'
8 . ./test-lib.sh
10 test_expect_success 'setup' '
11 # a non-trivial custom pattern
12 git config diff.custom1.funcname "!static
13 !String
14 [^ ].*s.*" &&
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
24 echo A >A.java &&
25 echo B >B.java
28 diffpatterns="
29 ada
30 bibtex
31 cpp
32 csharp
33 css
34 fortran
35 fountain
36 golang
37 html
38 java
39 matlab
40 objc
41 pascal
42 perl
43 php
44 python
45 ruby
46 rust
47 tex
48 custom1
49 custom2
50 custom3
53 for p in $diffpatterns
55 test_expect_success "builtin $p pattern compiles" '
56 echo "*.java diff=$p" >.gitattributes &&
57 test_expect_code 1 git diff --no-index \
58 A.java B.java 2>msg &&
59 test_i18ngrep ! fatal msg &&
60 test_i18ngrep ! error msg
62 test_expect_success "builtin $p wordRegex pattern compiles" '
63 echo "*.java diff=$p" >.gitattributes &&
64 test_expect_code 1 git diff --no-index --word-diff \
65 A.java B.java 2>msg &&
66 test_i18ngrep ! fatal msg &&
67 test_i18ngrep ! error msg
69 done
71 test_expect_success 'last regexp must not be negated' '
72 echo "*.java diff=java" >.gitattributes &&
73 test_config diff.java.funcname "!static" &&
74 test_expect_code 128 git diff --no-index A.java B.java 2>msg &&
75 test_i18ngrep ": Last expression must not be negated:" msg
78 test_expect_success 'setup hunk header tests' '
79 for i in $diffpatterns
81 echo "$i-* diff=$i"
82 done > .gitattributes &&
84 # add all test files to the index
86 cd "$TEST_DIRECTORY"/t4018 &&
87 git --git-dir="$TRASH_DIRECTORY/.git" add .
88 ) &&
90 # place modified files in the worktree
91 for i in $(git ls-files)
93 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
94 done
97 # check each individual file
98 for i in $(git ls-files)
100 if grep broken "$i" >/dev/null 2>&1
101 then
102 result=failure
103 else
104 result=success
106 test_expect_$result "hunk header: $i" "
107 test_when_finished 'cat actual' && # for debugging only
108 git diff -U1 $i >actual &&
109 grep '@@ .* @@.*RIGHT' actual
111 done
113 test_done