|  | #!/bin/sh | 
|  | # | 
|  | # Copyright (c) 2007 Johannes E. Schindelin | 
|  | # | 
|  |  | 
|  | test_description='Test custom diff function name patterns' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  | LF=' | 
|  | ' | 
|  |  | 
|  | cat > Beer.java << EOF | 
|  | public class Beer | 
|  | { | 
|  | int special; | 
|  | public static void main(String args[]) | 
|  | { | 
|  | String s=" "; | 
|  | for(int x = 99; x > 0; x--) | 
|  | { | 
|  | System.out.print(x + " bottles of beer on the wall " | 
|  | + x + " bottles of beer\n" | 
|  | + "Take one down, pass it around, " + (x - 1) | 
|  | + " bottles of beer on the wall.\n"); | 
|  | } | 
|  | System.out.print("Go to the store, buy some more,\n" | 
|  | + "99 bottles of beer on the wall.\n"); | 
|  | } | 
|  | } | 
|  | EOF | 
|  |  | 
|  | sed 's/beer\\/beer,\\/' < Beer.java > Beer-correct.java | 
|  |  | 
|  | builtin_patterns="bibtex cpp html java objc pascal php python ruby tex" | 
|  | for p in $builtin_patterns | 
|  | do | 
|  | test_expect_success "builtin $p pattern compiles" ' | 
|  | echo "*.java diff=$p" > .gitattributes && | 
|  | ! ( git diff --no-index Beer.java Beer-correct.java 2>&1 | | 
|  | grep "fatal" > /dev/null ) | 
|  | ' | 
|  | done | 
|  |  | 
|  | test_expect_success 'default behaviour' ' | 
|  | rm -f .gitattributes && | 
|  | git diff --no-index Beer.java Beer-correct.java | | 
|  | grep "^@@.*@@ public class Beer" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'preset java pattern' ' | 
|  | echo "*.java diff=java" >.gitattributes && | 
|  | git diff --no-index Beer.java Beer-correct.java | | 
|  | grep "^@@.*@@ public static void main(" | 
|  | ' | 
|  |  | 
|  | git config diff.java.funcname '!static | 
|  | !String | 
|  | [^ 	].*s.*' | 
|  |  | 
|  | test_expect_success 'custom pattern' ' | 
|  | git diff --no-index Beer.java Beer-correct.java | | 
|  | grep "^@@.*@@ int special;$" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'last regexp must not be negated' ' | 
|  | git config diff.java.funcname "!static" && | 
|  | git diff --no-index Beer.java Beer-correct.java 2>&1 | | 
|  | grep "fatal: Last expression must not be negated:" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'pattern which matches to end of line' ' | 
|  | git config diff.java.funcname "Beer$" && | 
|  | git diff --no-index Beer.java Beer-correct.java | | 
|  | grep "^@@.*@@ Beer" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'alternation in pattern' ' | 
|  | git config diff.java.xfuncname "^[ 	]*((public|static).*)$" && | 
|  | git diff --no-index Beer.java Beer-correct.java | | 
|  | grep "^@@.*@@ public static void main(" | 
|  | ' | 
|  |  | 
|  | test_done |