All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
	"brian m . carlson" <sandals@crustytoothpaste.net>,
	"Eric Sunshine" <sunshine@sunshineco.com>,
	"Elijah Newren" <newren@gmail.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH 3/4] shortlog tests: rewrite to get rid of --abbrev=35 hardcoding
Date: Thu, 11 Mar 2021 01:14:46 +0100	[thread overview]
Message-ID: <20210311001447.28254-4-avarab@gmail.com> (raw)
In-Reply-To: <YEj82fOf+F4xJC8S@coredump.intra.peff.net>

Rewrite much of the test logic introduced in 600372497c (shortlog:
Document and test --format option, 2010-05-03), this allows us to get
rid of the now-unused $_x35 variable in test-lib.sh

There was a minimal migration of this test to SHA-256 in
2ece6ad281 (t: switch $_x40 to $OID_REGEX, 2018-05-13), but actually
we can just get rid of all the assumptions about hashing here, and
make this easier to understand and maintain while we're at it.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t4201-shortlog.sh | 92 +++++++++++++++++++++++++--------------------
 t/test-lib.sh       |  5 +--
 2 files changed, 54 insertions(+), 43 deletions(-)

diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh
index 3095b1b2ff..3ef17c06e4 100755
--- a/t/t4201-shortlog.sh
+++ b/t/t4201-shortlog.sh
@@ -19,82 +19,94 @@ test_expect_success 'setup' '
 	commit=$(printf "%s\n" "Test" "" | git commit-tree "$tree") &&
 	git update-ref HEAD "$commit" &&
 
+	echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" >message &&
+
+	sed "s/i/1234/g" <message >tmp &&
+	tr 1234 "\360\235\204\236" <tmp >message.2 &&
+
+	sed "s/i/1234/g" <message >tmp &&
+	tr 1234 "\370\235\204\236" <tmp >message.3 &&
+
+	echo "a								12	34	56	78" >message.4 &&
+	echo "Commit by someone else" >message.5 &&
+
 	echo 2 >a1 &&
-	git commit --quiet -m "This is a very, very long first line for the commit message to see if it is wrapped correctly" a1 &&
+	git commit --quiet -F message a1 &&
 
 	# test if the wrapping is still valid
 	# when replacing all is by treble clefs.
 	echo 3 >a1 &&
-	git commit --quiet -m "$(
-		echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |
-		sed "s/i/1234/g" |
-		tr 1234 "\360\235\204\236")" a1 &&
+	git commit --quiet -F message.2 a1 &&
 
 	# now fsck up the utf8
 	git config i18n.commitencoding non-utf-8 &&
 	echo 4 >a1 &&
-	git commit --quiet -m "$(
-		echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |
-		sed "s/i/1234/g" |
-		tr 1234 "\370\235\204\236")" a1 &&
+	git commit --quiet -F message.3 a1 &&
 
 	echo 5 >a1 &&
-	git commit --quiet -m "a								12	34	56	78" a1 &&
+	git commit --quiet -F message.4 a1 &&
 
 	echo 6 >a1 &&
-	git commit --quiet -m "Commit by someone else" \
+	git commit --quiet -F message.5  \
 		--author="Someone else <not!me>" a1 &&
 
-	cat >expect.template <<-\EOF
+	cat >expect.default <<-EOF
 	A U Thor (5):
-	      SUBJECT
-	      SUBJECT
-	      SUBJECT
-	      SUBJECT
-	      SUBJECT
+	      Test
+	      $(cat message)
+	      $(cat message.2)
+	      $(cat message.3)
+	      $(cat message.4)
 
 	Someone else (1):
-	      SUBJECT
+	      $(cat message.5)
 
 	EOF
 '
 
-fuzz() {
-	file=$1 &&
-	sed "
-			s/$OID_REGEX/OBJECT_NAME/g
-			s/$_x35/OBJID/g
-			s/^ \{6\}[CTa].*/      SUBJECT/g
-			s/^ \{8\}[^ ].*/        CONTINUATION/g
-		" <"$file" >"$file.fuzzy" &&
-	sed "/CONTINUATION/ d" <"$file.fuzzy"
-}
-
 test_expect_success 'default output format' '
 	git shortlog HEAD >log &&
-	fuzz log >log.predictable &&
-	test_cmp expect.template log.predictable
+	test_cmp expect.default log
 '
 
 test_expect_success 'pretty format' '
-	sed s/SUBJECT/OBJECT_NAME/ expect.template >expect &&
+	cat >expect <<-EOF &&
+	A U Thor (5):
+	      $(git rev-parse HEAD~5)
+	      $(git rev-parse HEAD~4)
+	      $(git rev-parse HEAD~3)
+	      $(git rev-parse HEAD~2)
+	      $(git rev-parse HEAD~1)
+
+	Someone else (1):
+	      $(git rev-parse HEAD~0)
+
+	EOF
 	git shortlog --format="%H" HEAD >log &&
-	fuzz log >log.predictable &&
-	test_cmp expect log.predictable
+	test_cmp expect log
 '
 
 test_expect_success '--abbrev' '
-	sed s/SUBJECT/OBJID/ expect.template >expect &&
+	cut -c 1-41 <expect >expect.abbrev &&
 	git shortlog --format="%h" --abbrev=35 HEAD >log &&
-	fuzz log >log.predictable &&
-	test_cmp expect log.predictable
+	test_cmp expect.abbrev log
 '
 
 test_expect_success 'output from user-defined format is re-wrapped' '
-	sed "s/SUBJECT/two lines/" expect.template >expect &&
+	cat >expect <<-EOF &&
+	A U Thor (5):
+	      two lines
+	      two lines
+	      two lines
+	      two lines
+	      two lines
+
+	Someone else (1):
+	      two lines
+
+	EOF
 	git shortlog --format="two%nlines" HEAD >log &&
-	fuzz log >log.predictable &&
-	test_cmp expect log.predictable
+	test_cmp expect log
 '
 
 test_expect_success !MINGW 'shortlog wrapping' '
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 5f2ad2fd81..4d5ba558d3 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -511,7 +511,7 @@ SQ=\'
 # when case-folding filenames
 u200c=$(printf '\342\200\214')
 
-export _x05 _x35 LF u200c EMPTY_TREE EMPTY_BLOB ZERO_OID OID_REGEX
+export _x05 LF u200c EMPTY_TREE EMPTY_BLOB ZERO_OID OID_REGEX
 
 # Each test should start with something like this, after copyright notices:
 #
@@ -1381,9 +1381,8 @@ then
 fi
 
 # Convenience
-# A regexp to match 5 and 35 hexdigits
+# A regexp to match 5 hexdigits
 _x05='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
-_x35="$_x05$_x05$_x05$_x05$_x05$_x05$_x05"
 
 test_oid_init
 
-- 
2.31.0.rc1.213.gbfdb770ff55


  parent reply	other threads:[~2021-03-11  0:16 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-28 23:34 [PATCH v5 00/39] SHA-256, part 3/3 brian m. carlson
2020-07-28 23:34 ` [PATCH v5 01/39] t: make test-bloom initialize repository brian m. carlson
2020-07-28 23:34 ` [PATCH v5 02/39] t1001: use $ZERO_OID brian m. carlson
2020-07-28 23:34 ` [PATCH v5 03/39] t3305: make hash agnostic brian m. carlson
2020-07-28 23:34 ` [PATCH v5 04/39] t3404: prepare 'short SHA-1 collision' tests for SHA-256 brian m. carlson
2020-07-28 23:34 ` [PATCH v5 05/39] t6100: make hash size independent brian m. carlson
2020-07-28 23:34 ` [PATCH v5 06/39] t6101: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 07/39] t6301: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 08/39] t6500: specify test values for SHA-256 brian m. carlson
2020-07-28 23:34 ` [PATCH v5 09/39] t6501: avoid hard-coded objects brian m. carlson
2020-07-28 23:34 ` [PATCH v5 10/39] t7003: compute appropriate length constant brian m. carlson
2020-07-28 23:34 ` [PATCH v5 11/39] t7063: make hash size independent brian m. carlson
2020-07-28 23:34 ` [PATCH v5 12/39] t7201: abstract away SHA-1-specific constants brian m. carlson
2020-07-28 23:34 ` [PATCH v5 13/39] t7102: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 14/39] t7400: make hash size independent brian m. carlson
2020-07-28 23:34 ` [PATCH v5 15/39] t7405: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 16/39] t7506: avoid checking for SHA-1-specific constants brian m. carlson
2020-07-28 23:34 ` [PATCH v5 17/39] t7508: use $ZERO_OID instead of hard-coded constant brian m. carlson
2020-07-28 23:34 ` [PATCH v5 18/39] t8002: make hash size independent brian m. carlson
2020-07-29  2:24   ` Eric Sunshine
2020-07-29 22:31     ` brian m. carlson
2020-07-28 23:34 ` [PATCH v5 19/39] t8003: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 20/39] t8011: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 21/39] t9300: abstract away SHA-1-specific constants brian m. carlson
2020-07-28 23:34 ` [PATCH v5 22/39] t9300: use $ZERO_OID instead of hard-coded object ID brian m. carlson
2020-07-28 23:34 ` [PATCH v5 23/39] t9301: make hash size independent brian m. carlson
2020-07-28 23:34 ` [PATCH v5 24/39] t9350: " brian m. carlson
2020-07-28 23:34 ` [PATCH v5 25/39] t9500: ensure that algorithm info is preserved in config brian m. carlson
2020-07-28 23:34 ` [PATCH v5 26/39] t9700: make hash size independent brian m. carlson
2020-07-28 23:34 ` [PATCH v5 27/39] t5308: make test work with SHA-256 brian m. carlson
2020-07-28 23:34 ` [PATCH v5 28/39] t0410: mark test with SHA1 prerequisite brian m. carlson
2020-07-28 23:34 ` [PATCH v5 29/39] http-fetch: set up git directory before parsing pack hashes brian m. carlson
2020-07-29  2:36   ` Eric Sunshine
2020-07-28 23:34 ` [PATCH v5 30/39] builtin/verify-pack: implement an --object-format option brian m. carlson
2020-07-28 23:34 ` [PATCH v5 31/39] bundle: add new version for use with SHA-256 brian m. carlson
2020-07-29  2:53   ` Eric Sunshine
2020-07-29 22:28     ` brian m. carlson
2020-07-28 23:34 ` [PATCH v5 32/39] setup: add support for reading extensions.objectformat brian m. carlson
2020-07-28 23:34 ` [PATCH v5 33/39] Enable SHA-256 support by default brian m. carlson
2020-07-29  2:57   ` Eric Sunshine
2020-07-28 23:34 ` [PATCH v5 34/39] t: add test_oid option to select hash algorithm brian m. carlson
2020-07-28 23:34 ` [PATCH v5 35/39] t: allow testing different hash algorithms via environment brian m. carlson
2020-07-28 23:34 ` [PATCH v5 36/39] t: make SHA1 prerequisite depend on default hash brian m. carlson
2020-07-29  3:01   ` Eric Sunshine
2020-07-28 23:34 ` [PATCH v5 37/39] ci: run tests with SHA-256 brian m. carlson
2020-07-28 23:34 ` [PATCH v5 38/39] docs: add documentation for extensions.objectFormat brian m. carlson
2020-07-28 23:34 ` [PATCH v5 39/39] t: remove test_oid_init in tests brian m. carlson
2020-07-29 23:13 ` [PATCH v6 00/39] SHA-256, part 3/3 brian m. carlson
2020-07-29 23:13   ` [PATCH v6 01/39] t: make test-bloom initialize repository brian m. carlson
2020-07-29 23:13   ` [PATCH v6 02/39] t1001: use $ZERO_OID brian m. carlson
2020-07-29 23:13   ` [PATCH v6 03/39] t3305: make hash agnostic brian m. carlson
2020-07-29 23:13   ` [PATCH v6 04/39] t3404: prepare 'short SHA-1 collision' tests for SHA-256 brian m. carlson
2020-07-29 23:13   ` [PATCH v6 05/39] t6100: make hash size independent brian m. carlson
2020-07-29 23:13   ` [PATCH v6 06/39] t6101: " brian m. carlson
2020-07-29 23:13   ` [PATCH v6 07/39] t6301: " brian m. carlson
2020-07-29 23:13   ` [PATCH v6 08/39] t6500: specify test values for SHA-256 brian m. carlson
2020-07-29 23:13   ` [PATCH v6 09/39] t6501: avoid hard-coded objects brian m. carlson
2020-07-29 23:13   ` [PATCH v6 10/39] t7003: compute appropriate length constant brian m. carlson
2020-07-29 23:14   ` [PATCH v6 11/39] t7063: make hash size independent brian m. carlson
2020-07-29 23:14   ` [PATCH v6 12/39] t7201: abstract away SHA-1-specific constants brian m. carlson
2020-07-29 23:14   ` [PATCH v6 13/39] t7102: " brian m. carlson
2020-07-29 23:14   ` [PATCH v6 14/39] t7400: make hash size independent brian m. carlson
2020-07-29 23:14   ` [PATCH v6 15/39] t7405: " brian m. carlson
2020-07-29 23:14   ` [PATCH v6 16/39] t7506: avoid checking for SHA-1-specific constants brian m. carlson
2020-07-29 23:14   ` [PATCH v6 17/39] t7508: use $ZERO_OID instead of hard-coded constant brian m. carlson
2020-07-29 23:14   ` [PATCH v6 18/39] t8002: make hash size independent brian m. carlson
2020-07-29 23:14   ` [PATCH v6 19/39] t8003: " brian m. carlson
2020-07-29 23:14   ` [PATCH v6 20/39] t8011: " brian m. carlson
2020-07-29 23:14   ` [PATCH v6 21/39] t9300: abstract away SHA-1-specific constants brian m. carlson
2020-07-29 23:14   ` [PATCH v6 22/39] t9300: use $ZERO_OID instead of hard-coded object ID brian m. carlson
2020-07-29 23:14   ` [PATCH v6 23/39] t9301: make hash size independent brian m. carlson
2020-07-29 23:14   ` [PATCH v6 24/39] t9350: " brian m. carlson
2020-07-29 23:14   ` [PATCH v6 25/39] t9500: ensure that algorithm info is preserved in config brian m. carlson
2020-07-29 23:14   ` [PATCH v6 26/39] t9700: make hash size independent brian m. carlson
2020-07-29 23:14   ` [PATCH v6 27/39] t5308: make test work with SHA-256 brian m. carlson
2020-07-29 23:14   ` [PATCH v6 28/39] t0410: mark test with SHA1 prerequisite brian m. carlson
2020-07-29 23:14   ` [PATCH v6 29/39] http-fetch: set up git directory before parsing pack hashes brian m. carlson
2020-07-29 23:14   ` [PATCH v6 30/39] builtin/verify-pack: implement an --object-format option brian m. carlson
2020-07-29 23:14   ` [PATCH v6 31/39] bundle: add new version for use with SHA-256 brian m. carlson
2020-07-29 23:14   ` [PATCH v6 32/39] setup: add support for reading extensions.objectformat brian m. carlson
2020-07-29 23:14   ` [PATCH v6 33/39] repository: enable SHA-256 support by default brian m. carlson
2020-07-29 23:14   ` [PATCH v6 34/39] t: add test_oid option to select hash algorithm brian m. carlson
2020-07-29 23:14   ` [PATCH v6 35/39] t: allow testing different hash algorithms via environment brian m. carlson
2020-07-29 23:14   ` [PATCH v6 36/39] t: make SHA1 prerequisite depend on default hash brian m. carlson
2020-07-29 23:14   ` [PATCH v6 37/39] ci: run tests with SHA-256 brian m. carlson
2020-07-29 23:14   ` [PATCH v6 38/39] docs: add documentation for extensions.objectFormat brian m. carlson
2020-07-29 23:14   ` [PATCH v6 39/39] t: remove test_oid_init in tests brian m. carlson
2020-07-30  2:48   ` [PATCH v6 00/39] SHA-256, part 3/3 Eric Sunshine
2020-07-30 16:18     ` Junio C Hamano
2021-03-10 12:04   ` Ævar Arnfjörð Bjarmason
2021-03-10 16:36     ` Elijah Newren
2021-03-10 17:08       ` Jeff King
2021-03-10 17:06     ` [PATCH 0/3] sha256 fixes for filter-branch Jeff King
2021-03-10 17:07       ` [PATCH 1/3] t7003: test ref rewriting explicitly Jeff King
2021-03-11  0:10         ` Ævar Arnfjörð Bjarmason
2021-03-11  1:55           ` brian m. carlson
2021-03-11  2:24             ` Jeff King
2021-03-11  2:49               ` brian m. carlson
2021-03-10 17:07       ` [PATCH 2/3] filter-branch: drop multiple-ancestor warning Jeff King
2021-03-10 22:16         ` Junio C Hamano
2021-03-10 17:07       ` [PATCH 3/3] filter-branch: drop $_x40 glob Jeff King
2021-03-10 22:23         ` Junio C Hamano
2021-03-11  0:14         ` [PATCH 0/4] bisect + tests: remove old $_x05, $_x35 and $_x40 variables Ævar Arnfjörð Bjarmason
2021-03-11  0:14         ` [PATCH 1/4] git-bisect: remove unused SHA-1 $x40 shell variable Ævar Arnfjörð Bjarmason
2021-03-11  0:14         ` [PATCH 2/4] test-lib: remove unused $_x40 and $_z40 variables Ævar Arnfjörð Bjarmason
2021-03-11  1:02           ` Junio C Hamano
2021-03-11  0:14         ` Ævar Arnfjörð Bjarmason [this message]
2021-03-11  1:18           ` [PATCH 3/4] shortlog tests: rewrite to get rid of --abbrev=35 hardcoding Junio C Hamano
2021-03-11 19:15           ` Jeff King
2021-03-11  0:14         ` [PATCH 4/4] tests: get rid of $_x05 from the test suite Ævar Arnfjörð Bjarmason
2021-03-11  1:23           ` Junio C Hamano
2021-03-11 10:29             ` Ævar Arnfjörð Bjarmason
2021-03-11 17:40               ` Junio C Hamano
2021-03-10 17:54       ` [PATCH 0/3] sha256 fixes for filter-branch Elijah Newren
2021-03-10 22:24         ` Junio C Hamano
2021-03-10 23:32       ` brian m. carlson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210311001447.28254-4-avarab@gmail.com \
    --to=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=sandals@crustytoothpaste.net \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.