Re: [PATCH 09/10] t4213: test --function-name option

2014-03-28 Thread Johannes Sixt
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

2014-03-28 Thread Eric Sunshine
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