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