]> git.ipfire.org Git - thirdparty/git.git/blame - t/t4018-diff-funcname.sh
Merge branch 'bw/format-patch-o-create-leading-dirs'
[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
0719f3ee 33 css
3c81760b 34 dts
bfa7d014 35 fortran
69f9c87d 36 fountain
1dbf0c0a 37 golang
bfa7d014
JS
38 html
39 java
40 matlab
41 objc
42 pascal
43 perl
44 php
45 python
46 ruby
d74e7860 47 rust
bfa7d014 48 tex
f1b75fba
JS
49 custom1
50 custom2
51 custom3
bfa7d014
JS
52"
53
54for p in $diffpatterns
e3bf5e43
BC
55do
56 test_expect_success "builtin $p pattern compiles" '
5b5e4594 57 echo "*.java diff=$p" >.gitattributes &&
d64d6cdc 58 test_expect_code 1 git diff --no-index \
ad5070fb 59 A.java B.java 2>msg &&
41ca19b6
JS
60 test_i18ngrep ! fatal msg &&
61 test_i18ngrep ! error msg
e3bf5e43 62 '
bff42061 63 test_expect_success "builtin $p wordRegex pattern compiles" '
5b5e4594 64 echo "*.java diff=$p" >.gitattributes &&
d64d6cdc 65 test_expect_code 1 git diff --no-index --word-diff \
ad5070fb 66 A.java B.java 2>msg &&
41ca19b6
JS
67 test_i18ngrep ! fatal msg &&
68 test_i18ngrep ! error msg
bff42061 69 '
e3bf5e43
BC
70done
71
f258475a 72test_expect_success 'last regexp must not be negated' '
ad5070fb 73 echo "*.java diff=java" >.gitattributes &&
f792a0b8 74 test_config diff.java.funcname "!static" &&
ad5070fb
JS
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
f258475a
JH
77'
78
bfa7d014
JS
79test_expect_success 'setup hunk header tests' '
80 for i in $diffpatterns
81 do
82 echo "$i-* diff=$i"
83 done > .gitattributes &&
84
85 # add all test files to the index
86 (
87 cd "$TEST_DIRECTORY"/t4018 &&
88 git --git-dir="$TRASH_DIRECTORY/.git" add .
89 ) &&
90
91 # place modified files in the worktree
92 for i in $(git ls-files)
93 do
94 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
95 done
96'
97
98# check each individual file
99for i in $(git ls-files)
100do
101 if grep broken "$i" >/dev/null 2>&1
102 then
103 result=failure
104 else
105 result=success
106 fi
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
111 "
112done
113
f258475a 114test_done