Re: [PATCH 09/10] t4213: test --function-name option
Am 3/27/2014 19:50, schrieb David A. Dalrymple (and Bhushan G. Lodha): From: Bhushan G. Lodha David A. Dalrymple dad-...@mit.edu 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) davi...@alum.mit.edu --- 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 000..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 + + 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 09/10] t4213: test --function-name option
On Fri, Mar 28, 2014 at 3:25 AM, Johannes Sixt j.s...@viscovery.net wrote: Am 3/27/2014 19:50, schrieb David A. Dalrymple (and Bhushan G. Lodha): From: Bhushan G. Lodha David A. Dalrymple dad-...@mit.edu 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) davi...@alum.mit.edu --- 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 000..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 majord...@vger.kernel.org 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 09/10] t4213: test --function-name option
From: Bhushan G. Lodha David A. Dalrymple dad-...@mit.edu This test builds a sample C file, adding and removing functions, and checks that the right commits are filtered by --function-name matching. Signed-off-by: David Dalrymple (on zayin) davi...@alum.mit.edu --- 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 000..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 + + 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 + + printf void newfunc(){\n\treturn;\n}\n file + test_tick + git commit -am third + + printf void newfunc2(){\n\treturn;\n}\n | cat - file temp + mv temp file + test_tick + git commit -am fourth + + 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' ' + git log --function-name=main actual + git log --grep=second expect + test_cmp expect actual +' + +test_expect_success 'log --function-name newfunc\W' ' + 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 -- 1.7.12.4 (Apple Git-37) -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html