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

[PATCH v2 1/3] t4020: test exit code with external diffs

From
René Scharfe <l.s.r@web.de>
Date
Jun 5, 2024, 08:35 UTC
Message-ID
<2a5167fc-871b-4968-bacb-eaff4d7a2630@web.de>
In-Reply-To
<6fa51a62-5dc1-4865-9f79-eaf7d65189ab@web.de>

Add tests to check the exit code of git diff with its options --quiet and --exit-code when using an external diff program. Currently we cannot tell whether it found significant changes or not.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 t/t4020-diff-external.sh | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
diff --git a/t/t4020-diff-external.sh b/t/t4020-diff-external.sh
index fdd865f7c3..bed640b2b1 100755
--- a/t/t4020-diff-external.sh
+++ b/t/t4020-diff-external.sh
@@ -172,6 +172,39 @@ test_expect_success 'no diff with -diff' '
 	grep Binary out
 '

+check_external_exit_code () {
+	expect_code=$1
+	command_code=$2
+	option=$3
+
+	command="exit $command_code;"
+	desc="external diff '$command'"
+
+	test_expect_success "$desc via attribute with $option" "
+		test_config diff.foo.command \"$command\" &&
+		echo \"file diff=foo\" >.gitattributes &&
+		test_expect_code $expect_code git diff $option
+	"
+
+	test_expect_success "$desc via diff.external with $option" "
+		test_config diff.external \"$command\" &&
+		>.gitattributes &&
+		test_expect_code $expect_code git diff $option
+	"
+
+	test_expect_success "$desc via GIT_EXTERNAL_DIFF with $option" "
+		>.gitattributes &&
+		test_expect_code $expect_code env \
+			GIT_EXTERNAL_DIFF=\"$command\" \
+			git diff $option
+	"
+}
+
+check_external_exit_code   1 0 --exit-code
+check_external_exit_code   1 0 --quiet
+check_external_exit_code 128 1 --exit-code
+check_external_exit_code   1 1 --quiet # we don't even call the program
+
 echo NULZbetweenZwords | perl -pe 'y/Z/\000/' > file

 test_expect_success 'force diff with "diff"' '
--
2.45.2
Previous: René ScharfeNext: René Scharfe
Message 18 of 32 in “Possible git-diff bug when using exit-code with diff filters”
  1. German LashevichApr 20, 2024
  2. René ScharfeApr 21, 2024
  3. Junio C HamanoApr 21, 2024
  4. rsbecker@nexbridge.comApr 21, 2024
  5. Junio C HamanoApr 21, 2024
  6. rsbecker@nexbridge.comApr 21, 2024
  7. René ScharfeMay 5, 2024
  8. Junio C HamanoMay 6, 2024
  9. 1/2 diff: report unmerged paths as changes in run_diff_cmd()René Scharfe, May 5, 2024
  10. 2/2 diff: fix --exit-code with external diffRené Scharfe, May 5, 2024
  11. Phillip WoodMay 5, 2024
  12. Junio C HamanoMay 6, 2024
  13. René ScharfeMay 6, 2024
  14. phillip.wood123@gmail.comMay 8, 2024
  15. René ScharfeMay 11, 2024
  16. René ScharfeMay 12, 2024
  17. 0/3 diff: fix --exit-code with external diffRené Scharfe, Jun 5, 2024
  18. 1/3 t4020: test exit code with external diffsRené Scharfe, Jun 5, 2024
  19. 2/3 userdiff: add and use struct external_diffRené Scharfe, Jun 5, 2024
  20. 3/3 diff: let external diffs report that changes are uninterestingRené Scharfe, Jun 5, 2024
  21. Johannes SixtJun 6, 2024
  22. René ScharfeJun 6, 2024
  23. Junio C HamanoJun 6, 2024
  24. Phillip WoodJun 6, 2024
  25. René ScharfeJun 7, 2024
  26. Junio C HamanoJun 5, 2024
  27. 0/3 diff: fix --exit-code with external diffRené Scharfe, Jun 9, 2024
  28. 1/3 t4020: test exit code with external diffsRené Scharfe, Jun 9, 2024
  29. Junio C HamanoJun 10, 2024
  30. 2/3 userdiff: add and use struct external_diffRené Scharfe, Jun 9, 2024
  31. 3/3 diff: let external diffs report that changes are uninterestingRené Scharfe, Jun 9, 2024
  32. phillip.wood123@gmail.comJun 10, 2024

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.