Subject: [PATCH v3 3/3] log, show: add tests for messages containing CRLF

From: "Philippe Blain via GitGitGadget" <[email-masked]>
Date: Mon, 12 Oct 2020 18:09:29 +0000

From: Philippe Blain <[email-masked]>

A previous commit fixed a bug in ref-filter.c causing messages
containing CRLF to be incorrectly parsed and displayed.

Add tests to also check that `git log` and `git show` correctly handle
such messages, to prevent futur regressions if these commands are
refactored to use the ref-filter API.

To prevent having to modify expected output in further tests, use
'test_cleanup_crlf_refs' in t4202 to clean-up after the added tests.

Signed-off-by: Philippe Blain <[email-masked]>
---
 t/t4202-log.sh  | 18 ++++++++++++++++++
 t/t7007-show.sh |  5 +++++
 2 files changed, 23 insertions(+)

diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 56d34ed465..d4942a6f92 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -6,6 +6,7 @@ test_description='git log'
 . "$TEST_DIRECTORY/lib-gpg.sh"
 . "$TEST_DIRECTORY/lib-terminal.sh"
 . "$TEST_DIRECTORY/lib-log-graph.sh"
+. "$TEST_DIRECTORY/lib-crlf-messages.sh"
 
 test_cmp_graph () {
 	lib_test_cmp_graph --format=%s "$@"
@@ -105,6 +106,23 @@ test_expect_success 'oneline' '
 	test_cmp expect actual
 '
 
+test_create_crlf_refs
+
+test_expect_success 'oneline with CRLF messages' '
+	for branch in $LIB_CLRF_BRANCHES; do
+		cat .crlf-subject-${branch}.txt >expect &&
+		git log --oneline -1 ${branch} >tmp-branch &&
+		git log --oneline -1 tag-${branch} >tmp-tag &&
+		awk "{print \$NF}" <tmp-branch >actual-branch &&
+		awk "{print \$NF}" <tmp-tag >actual-tag &&
+		test_cmp expect actual-branch &&
+		test_cmp expect actual-tag
+	done
+'
+test_crlf_subject_body_and_contents log --all --reverse --grep Subject
+
+test_cleanup_crlf_refs
+
 test_expect_success 'diff-filter=A' '
 
 	git log --no-renames --pretty="format:%s" --diff-filter=A HEAD > actual &&
diff --git a/t/t7007-show.sh b/t/t7007-show.sh
index 42d3db6246..5ffe852829 100755
--- a/t/t7007-show.sh
+++ b/t/t7007-show.sh
@@ -3,6 +3,7 @@
 test_description='git show'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY/lib-crlf-messages.sh"
 
 test_expect_success setup '
 	echo hello world >foo &&
@@ -128,4 +129,8 @@ test_expect_success 'show --graph is forbidden' '
   test_must_fail git show --graph HEAD
 '
 
+test_create_crlf_refs
+
+test_crlf_subject_body_and_contents show $LIB_CRLF_BRANCHES
+
 test_done
-- 
gitgitgadget