mirror of
https://github.com/git/git
synced 2024-07-07 19:39:27 +00:00
Introduce a "test_config" function to set a configuration variable for use by a single test (automatically unsetting it when the assertion finishes). If this function is used consistently, the configuration used in a test_expect_success block can be read at the beginning of that block instead of requiring reading all the tests that come before. So it becomes a little easier to add new tests or rearrange existing ones without fear of breaking configuration. In particular, the test of alternation in xfuncname patterns also checks that xfuncname takes precedence over funcname variable as a sort of side-effect, since the latter leaks in from previous tests. In the new syntax, the test has to say explicitly what variables it is using, making the test clearer and a future regression in coverage from carelessly editing the script less likely. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
99 lines
2.5 KiB
Bash
Executable File
99 lines
2.5 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
|
|
|
|
test_config () {
|
|
git config "$1" "$2" &&
|
|
test_when_finished "git config --unset $1"
|
|
}
|
|
|
|
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("
|
|
'
|
|
|
|
test_expect_success 'custom pattern' '
|
|
test_config diff.java.funcname "!static
|
|
!String
|
|
[^ ].*s.*" &&
|
|
git diff --no-index Beer.java Beer-correct.java |
|
|
grep "^@@.*@@ int special;$"
|
|
'
|
|
|
|
test_expect_success 'last regexp must not be negated' '
|
|
test_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' '
|
|
test_config diff.java.funcname "Beer$" &&
|
|
git diff --no-index Beer.java Beer-correct.java |
|
|
grep "^@@.*@@ Beer"
|
|
'
|
|
|
|
test_expect_success 'alternation in pattern' '
|
|
test_config diff.java.funcname "Beer$" &&
|
|
test_config diff.java.xfuncname "^[ ]*((public|static).*)$" &&
|
|
git diff --no-index Beer.java Beer-correct.java |
|
|
grep "^@@.*@@ public static void main("
|
|
'
|
|
|
|
test_done
|