git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 03/10] t4018: an infrastructure to test hunk headers

From
Johannes Sixt <j6t@kdbg.org>
Date
Mar 21, 2014, 21:07 UTC
Message-ID
<52505977c20a480941ae1f85f50ffb7a0bbffedb.1395433874.git.j6t@kdbg.org>
In-Reply-To
<cover.1395433874.git.j6t@kdbg.org>

Add an infrastructure that simplifies adding new tests of the hunk header regular expressions.

To add new tests, a file with the syntax to test can be dropped in the directory t4018. The README file explains how a test file must contain; the README itself tests the default behavior.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
 t/t4018-diff-funcname.sh | 60 +++++++++++++++++++++++++++++++++++++++++++-----
 t/t4018/README           | 18 +++++++++++++++
 2 files changed, 72 insertions(+), 6 deletions(-)
 create mode 100644 t/t4018/README
diff --git a/t/t4018-diff-funcname.sh b/t/t4018-diff-funcname.sh
index 38a092a..b467d9e 100755
--- a/t/t4018-diff-funcname.sh
+++ b/t/t4018-diff-funcname.sh
@@ -100,7 +100,25 @@ test_expect_funcname () {
 	grep "^@@.*@@ $1" diff
 }
 
-for p in ada bibtex cpp csharp fortran html java matlab objc pascal perl php python ruby tex
+diffpatterns="
+	ada
+	bibtex
+	cpp
+	csharp
+	fortran
+	html
+	java
+	matlab
+	objc
+	pascal
+	perl
+	php
+	python
+	ruby
+	tex
+"
+
+for p in $diffpatterns
 do
 	test_expect_success "builtin $p pattern compiles" '
 		echo "*.java diff=$p" >.gitattributes &&
@@ -118,11 +136,6 @@ do
 	'
 done
 
-test_expect_success 'default behaviour' '
-	rm -f .gitattributes &&
-	test_expect_funcname "public class Beer\$"
-'
-
 test_expect_success 'set up .gitattributes declaring drivers to test' '
 	cat >.gitattributes <<-\EOF
 	*.java diff=java
@@ -182,4 +195,39 @@ test_expect_success 'alternation in pattern' '
 	test_expect_funcname "public static void main("
 '
 
+test_expect_success 'setup hunk header tests' '
+	for i in $diffpatterns
+	do
+		echo "$i-* diff=$i"
+	done > .gitattributes &&
+
+	# add all test files to the index
+	(
+		cd "$TEST_DIRECTORY"/t4018 &&
+		git --git-dir="$TRASH_DIRECTORY/.git" add .
+	) &&
+
+	# place modified files in the worktree
+	for i in $(git ls-files)
+	do
+		sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
+	done
+'
+
+# check each individual file
+for i in $(git ls-files)
+do
+	if grep broken "$i" >/dev/null 2>&1
+	then
+		result=failure
+	else
+		result=success
+	fi
+	test_expect_$result "hunk header: $i" "
+		test_when_finished 'cat actual' &&	# for debugging only
+		git diff -U1 $i >actual &&
+		grep '@@ .* @@.*RIGHT' actual
+	"
+done
+
 test_done
diff --git a/t/t4018/README b/t/t4018/README
new file mode 100644
index 0000000..283e01cc
--- /dev/null
+++ b/t/t4018/README
@@ -0,0 +1,18 @@
+How to write RIGHT test cases
+=============================
+
+Insert the word "ChangeMe" (exactly this form) at a distance of
+at least two lines from the line that must appear in the hunk header.
+
+The text that must appear in the hunk header must contain the word
+"right", but in all upper-case, like in the title above.
+
+To mark a test case that highlights a malfunction, insert the word
+BROKEN in all lower-case somewhere in the file.
+
+This text is a bit twisted and out of order, but it is itself a
+test case for the default hunk header pattern. Know what you are doing
+if you change it.
+
+BTW, this tests that the head line goes to the hunk header, not the line
+of equal signs.
-- 
1.8.5.2.244.g9fb3fb1
Previous: Johannes SixtNext: Junio C Hamano
Message 13 of 30 in “diff: simplify cpp funcname regex”
  1. diff: simplify cpp funcname regexJeff King, Mar 5, 2014
  2. Johannes SixtMar 5, 2014
  3. Jeff KingMar 6, 2014
  4. Johannes SixtMar 7, 2014
  5. Jeff KingMar 14, 2014
  6. Johannes SixtMar 14, 2014
  7. Jeff KingMar 18, 2014
  8. Johannes SixtMar 18, 2014
  9. René ScharfeMar 18, 2014
  10. 00/10 userdiff: cpp pattern simplification and test frameworkJohannes Sixt, Mar 21, 2014
  11. 01/10 userdiff: support C++ ->* and .* operators in the word regexpJohannes Sixt, Mar 21, 2014
  12. 02/10 userdiff: support unsigned and long long suffixes of integer constantsJohannes Sixt, Mar 21, 2014
  13. 03/10 t4018: an infrastructure to test hunk headersJohannes Sixt, Mar 21, 2014
  14. Junio C HamanoMar 21, 2014
  15. Johannes SixtMar 22, 2014
  16. Junio C HamanoMar 23, 2014
  17. Jeff KingMar 24, 2014
  18. Jeff KingMar 24, 2014
  19. Johannes SixtMar 25, 2014
  20. Jeff KingMar 25, 2014
  21. 04/10 t4018: convert perl pattern tests to the new infrastructureJohannes Sixt, Mar 21, 2014
  22. 05/10 t4018: convert java pattern test to the new infrastructureJohannes Sixt, Mar 21, 2014
  23. 06/10 t4018: convert custom pattern test to the new infrastructureJohannes Sixt, Mar 21, 2014
  24. 07/10 t4018: reduce test files for pattern compilation testsJohannes Sixt, Mar 21, 2014
  25. 08/10 t4018: test cases for the built-in cpp patternJohannes Sixt, Mar 21, 2014
  26. 09/10 t4018: test cases showing that the cpp pattern misses many anchor pointsJohannes Sixt, Mar 21, 2014
  27. 10/10 userdiff: have 'cpp' hunk header pattern catch more C++ anchor pointsJohannes Sixt, Mar 21, 2014
  28. Junio C HamanoMar 21, 2014
  29. Jeff KingMar 24, 2014
  30. Junio C HamanoMar 5, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.