On Fri, Mar 28, 2014 at 3:25 AM, Johannes Sixt <j.sixt@xxxxxxxxxxxxx> wrote: > Am 3/27/2014 19:50, schrieb David A. Dalrymple (and Bhushan G. Lodha): >> From: "Bhushan G. Lodha & David A. Dalrymple" <dad-bgl@xxxxxxx> >> >> This test builds a sample C file, adding and removing functions, and >> checks that the right commits are filtered by --function-name matching. > > This is probably the most important patch in your series as it documents > the expected behavior. Unfortunately, I find its clarity very lacking. :( > > This new feature uses the userdiff driver, IIUC. Does it do so in all > respects? In particular, does it also evaluate the negative patterns? For > example, when there is a label in the code, is it not mistaken as the > beginning of a function? A test for this case would be very instructive. > > Furthermore, consider a patch for a change at the very beginning of a > function. Then the function name would appear in the pre-context of the > hunk, but the hunk header would show the function before the one with the > change. Would such a change confuse your implementation? I guess not. > Again, a test case would remove any doubts. > > Is it possible to search for a change that is before any functions? It > would be useful to enumerate commits that change #include lines. > >> >> Signed-off-by: David Dalrymple (on zayin) <davidad@xxxxxxxxxxxx> >> --- >> t/t4213-log-function-name.sh | 73 ++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 73 insertions(+) >> create mode 100755 t/t4213-log-function-name.sh >> >> diff --git a/t/t4213-log-function-name.sh b/t/t4213-log-function-name.sh >> new file mode 100755 >> index 0000000..1243ce5 >> --- /dev/null >> +++ b/t/t4213-log-function-name.sh >> @@ -0,0 +1,73 @@ >> +#!/bin/sh >> + >> +test_description='log --function-name' >> +. ./test-lib.sh >> + >> +test_expect_success setup ' >> + echo "* diff=cpp" > .gitattributes Broken &&-chain here, as well. >> + >> + >file && >> + git add file && >> + test_tick && >> + git commit -m initial && >> + >> + printf "int main(){\n\treturn 0;\n}\n" >> file && >> + test_tick && >> + git commit -am second > > Broken && chain here and later as well. Please be careful. > >> + >> + printf "void newfunc(){\n\treturn;\n}\n" >> file && >> + test_tick && >> + git commit -am third > > git commit -am "append a function" && > >> + >> + printf "void newfunc2(){\n\treturn;\n}\n" | cat - file > temp && >> + mv temp file && >> + test_tick && >> + git commit -am fourth > > git commit -am "prepend a function" && > > etc. You get the picture. > >> + >> + printf "void newfunc3(){\n\treturn;\n}\n" | cat - file > temp && >> + mv temp file && >> + test_tick && >> + git commit -am fifth >> + >> + sed -i -e "s/void newfunc2/void newfunc4/" file && >> + test_tick && >> + git commit -am sixth >> +' >> + >> +test_expect_success 'log --function-name=main' ' > > test_expect_success 'log --function-name finds a function with a change' ' > >> + git log --function-name=main >actual && >> + git log --grep=second >expect && >> + test_cmp expect actual >> +' >> + >> +test_expect_success 'log --function-name "newfunc\W"' ' > > test_expect_success 'log --function-name with extended regexp' ' > > etc. You get the picture. > >> + git log --function-name "newfunc\W" >actual && >> + git log --grep=third >expect && >> + test_cmp expect actual >> +' >> + >> +test_expect_success 'log --function-name "newfunc2"' ' >> + git log --function-name newfunc2 >actual && >> + git log -E --grep "sixth|fourth" >expect && >> + test_cmp expect actual >> +' >> + >> +test_expect_success 'log --function-name "newfunc3"' ' >> + git log --function-name newfunc3 >actual && >> + git log --grep=fifth >expect && >> + test_cmp expect actual >> +' >> + >> +test_expect_success 'log --function-name "newfunc4"' ' >> + git log --function-name newfunc4 >actual && >> + git log --grep=sixth >expect && >> + test_cmp expect actual >> +' >> + >> +test_expect_success 'log --function-name "newfunc"' ' >> + git log --function-name newfunc >actual && >> + git log -E --grep "third|fourth|fifth|sixth" >expect && >> + test_cmp expect actual >> +' >> + >> +test_done >> > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html