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