t4018-diff-funcname: demonstrate end of line funcname matching flaw
authorBrandon Casey <drafnel@gmail.com>
Thu, 16 Oct 2008 00:58:50 +0000 (19:58 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Oct 2008 15:31:56 +0000 (08:31 -0700)
Since the newline is not removed from lines before pattern matching, a
pattern cannot match to the end of the line using the '$' operator without
using an additional operator which will indirectly match the '\n' character.

Introduce a test which should pass, but which does not due to this flaw.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4018-diff-funcname.sh

index 72076eca80e4fcf018841ffce4346f17bbb47055..40a805a8661d9a8bcd4802c88d33e8106034a452 100755 (executable)
@@ -69,6 +69,12 @@ test_expect_success 'last regexp must not be negated' '
        grep "fatal: Last expression must not be negated:"
 '
 
+test_expect_failure '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 |