t4018 (funcname patterns): make configuration easier to track
authorJonathan Nieder <jrnieder@gmail.com>
Sat, 21 May 2011 19:22:28 +0000 (14:22 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sun, 22 May 2011 05:29:30 +0000 (22:29 -0700)
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>
t/t4018-diff-funcname.sh
index 24eb1a35d63bfe38aff06740f7f4b3131e06c227..ce0a0e32e1116c6374743d285a2c3d967d730146 100755 (executable)
@@ -32,6 +32,11 @@ 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
@@ -63,29 +68,29 @@ test_expect_success 'preset java pattern' '
        grep "^@@.*@@ public static void main("
 '
 
-git config diff.java.funcname '!static
-!String
-[^     ].*s.*'
-
 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' '
-       git config diff.java.funcname "!static" &&
+       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' '
-       git config diff.java.funcname "Beer$" &&
+       test_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).*)$" &&
+       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("
 '