refactor handling of "other" files in ls-files and status
[gitweb.git] / t / t4018-diff-funcname.sh
index f9db81d3abae824f1f34faeeec537c5607e8ebad..398bf4b5d8e3d85562563059eaeb7bc8b8e4ce59 100755 (executable)
@@ -32,14 +32,25 @@ EOF
 
 sed 's/beer\\/beer,\\/' < Beer.java > Beer-correct.java
 
+builtin_patterns="bibtex java pascal 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' '
-       git diff Beer.java Beer-correct.java |
+       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 Beer.java Beer-correct.java |
+       git diff --no-index Beer.java Beer-correct.java |
        grep "^@@.*@@ public static void main("
 '
 
@@ -48,13 +59,26 @@ git config diff.java.funcname '!static
 [^     ].*s.*'
 
 test_expect_success 'custom pattern' '
-       git diff Beer.java Beer-correct.java |
+       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 Beer.java Beer-correct.java
+       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