t4018: convert perl pattern tests to the new infrastructure
[alt-git.git] / t / t4018-diff-funcname.sh
blobc94a5f49d2211cb2b26521e6b83a4d944f77b71f
1 #!/bin/sh
3 # Copyright (c) 2007 Johannes E. Schindelin
6 test_description='Test custom diff function name patterns'
8 . ./test-lib.sh
10 LF='
12 cat >Beer.java <<\EOF
13 public class Beer
15 int special;
16 public static void main(String args[])
18 String s=" ";
19 for(int x = 99; x > 0; x--)
21 System.out.print(x + " bottles of beer on the wall "
22 + x + " bottles of beer\n"
23 + "Take one down, pass it around, " + (x - 1)
24 + " bottles of beer on the wall.\n");
26 System.out.print("Go to the store, buy some more,\n"
27 + "99 bottles of beer on the wall.\n");
30 EOF
31 sed 's/beer\\/beer,\\/' <Beer.java >Beer-correct.java
33 test_expect_funcname () {
34 lang=${2-java}
35 test_expect_code 1 git diff --no-index -U1 \
36 "Beer.$lang" "Beer-correct.$lang" >diff &&
37 grep "^@@.*@@ $1" diff
40 diffpatterns="
41 ada
42 bibtex
43 cpp
44 csharp
45 fortran
46 html
47 java
48 matlab
49 objc
50 pascal
51 perl
52 php
53 python
54 ruby
55 tex
58 for p in $diffpatterns
60 test_expect_success "builtin $p pattern compiles" '
61 echo "*.java diff=$p" >.gitattributes &&
62 test_expect_code 1 git diff --no-index \
63 Beer.java Beer-correct.java 2>msg &&
64 ! grep fatal msg &&
65 ! grep error msg
67 test_expect_success "builtin $p wordRegex pattern compiles" '
68 echo "*.java diff=$p" >.gitattributes &&
69 test_expect_code 1 git diff --no-index --word-diff \
70 Beer.java Beer-correct.java 2>msg &&
71 ! grep fatal msg &&
72 ! grep error msg
74 done
76 test_expect_success 'set up .gitattributes declaring drivers to test' '
77 cat >.gitattributes <<-\EOF
78 *.java diff=java
79 EOF
82 test_expect_success 'preset java pattern' '
83 test_expect_funcname "public static void main("
86 test_expect_success 'custom pattern' '
87 test_config diff.java.funcname "!static
88 !String
89 [^ ].*s.*" &&
90 test_expect_funcname "int special;\$"
93 test_expect_success 'last regexp must not be negated' '
94 test_config diff.java.funcname "!static" &&
95 test_expect_code 128 git diff --no-index Beer.java Beer-correct.java 2>msg &&
96 grep ": Last expression must not be negated:" msg
99 test_expect_success 'pattern which matches to end of line' '
100 test_config diff.java.funcname "Beer\$" &&
101 test_expect_funcname "Beer\$"
104 test_expect_success 'alternation in pattern' '
105 test_config diff.java.funcname "Beer$" &&
106 test_config diff.java.xfuncname "^[ ]*((public|static).*)$" &&
107 test_expect_funcname "public static void main("
110 test_expect_success 'setup hunk header tests' '
111 for i in $diffpatterns
113 echo "$i-* diff=$i"
114 done > .gitattributes &&
116 # add all test files to the index
118 cd "$TEST_DIRECTORY"/t4018 &&
119 git --git-dir="$TRASH_DIRECTORY/.git" add .
120 ) &&
122 # place modified files in the worktree
123 for i in $(git ls-files)
125 sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
126 done
129 # check each individual file
130 for i in $(git ls-files)
132 if grep broken "$i" >/dev/null 2>&1
133 then
134 result=failure
135 else
136 result=success
138 test_expect_$result "hunk header: $i" "
139 test_when_finished 'cat actual' && # for debugging only
140 git diff -U1 $i >actual &&
141 grep '@@ .* @@.*RIGHT' actual
143 done
145 test_done