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