1#!/bin/sh
   2#
   3# Copyright (c) 2007 Johannes E. Schindelin
   4#
   5test_description='Test custom diff function name patterns'
   7. ./test-lib.sh
   9LF='
  11'
  12cat > Beer.java << EOF
  14public class Beer
  15{
  16        int special;
  17        public static void main(String args[])
  18        {
  19                String s=" ";
  20                for(int x = 99; x > 0; x--)
  21                {
  22                        System.out.print(x + " bottles of beer on the wall "
  23                                + x + " bottles of beer\n"
  24                                + "Take one down, pass it around, " + (x - 1)
  25                                + " bottles of beer on the wall.\n");
  26                }
  27                System.out.print("Go to the store, buy some more,\n"
  28                        + "99 bottles of beer on the wall.\n");
  29        }
  30}
  31EOF
  32sed 's/beer\\/beer,\\/' < Beer.java > Beer-correct.java
  34builtin_patterns="bibtex cpp html java objc pascal php python ruby tex"
  36for p in $builtin_patterns
  37do
  38        test_expect_success "builtin $p pattern compiles" '
  39                echo "*.java diff=$p" > .gitattributes &&
  40                ! ( git diff --no-index Beer.java Beer-correct.java 2>&1 |
  41                        grep "fatal" > /dev/null )
  42        '
  43done
  44test_expect_success 'default behaviour' '
  46        rm -f .gitattributes &&
  47        git diff --no-index Beer.java Beer-correct.java |
  48        grep "^@@.*@@ public class Beer"
  49'
  50test_expect_success 'preset java pattern' '
  52        echo "*.java diff=java" >.gitattributes &&
  53        git diff --no-index Beer.java Beer-correct.java |
  54        grep "^@@.*@@ public static void main("
  55'
  56git config diff.java.funcname '!static
  58!String
  59[^      ].*s.*'
  60test_expect_success 'custom pattern' '
  62        git diff --no-index Beer.java Beer-correct.java |
  63        grep "^@@.*@@ int special;$"
  64'
  65test_expect_success 'last regexp must not be negated' '
  67        git config diff.java.funcname "!static" &&
  68        git diff --no-index Beer.java Beer-correct.java 2>&1 |
  69        grep "fatal: Last expression must not be negated:"
  70'
  71test_expect_success 'pattern which matches to end of line' '
  73        git config diff.java.funcname "Beer$" &&
  74        git diff --no-index Beer.java Beer-correct.java |
  75        grep "^@@.*@@ Beer"
  76'
  77test_expect_success 'alternation in pattern' '
  79        git config diff.java.xfuncname "^[      ]*((public|static).*)$" &&
  80        git diff --no-index Beer.java Beer-correct.java |
  81        grep "^@@.*@@ public static void main("
  82'
  83test_done