Most, but not all, tests in this script rely on attributes declaring that files with a .java extension should use the "java" driver: *.java diff=java Split out a "set up" test to put such a .gitattributes in place after the tests that do not want it have run, to make it more likely that individual tests other than this setup test can be safely modified, rearranged, or skipped. Presumably this setup code will learn to request other drivers for other extensions in the same place when the test suite learns to exercise other diff drivers. Similarly, make sure that early test assertions that do not use these default attributes set up .gitattributes appropriately for themselves, so tests that run before can be modified with less risk of breaking something. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
94 lines
2.3 KiB
Bash
Executable File
94 lines
2.3 KiB
Bash
Executable File
#!/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 csharp fortran html java objc pascal perl 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; }
|
|
'
|
|
test_expect_success "builtin $p wordRegex pattern compiles" '
|
|
echo "*.java diff=$p" >.gitattributes &&
|
|
! { git diff --no-index --word-diff \
|
|
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 'set up .gitattributes declaring drivers to test' '
|
|
echo "*.java diff=java" >.gitattributes
|
|
'
|
|
|
|
test_expect_success 'preset java pattern' '
|
|
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
|