[PATCH] Add some basic tests of rev-list --pretty=format

Subsystems: the rest

STALE3706d

4 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] Add some basic tests of rev-list --pretty=format

From: Jeff King <hidden>
Date: 2016-06-15 22:43:01

These could stand to be a little more complex, but it should
at least catch obvious problems (like the recently fixed %ct
bug).

Signed-off-by: Jeff King <redacted>
---

Junio: warning, there is (intentional) trailing whitespace in one of the
test results.

 t/t6006-rev-list-format.sh |  108 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 108 insertions(+), 0 deletions(-)
 create mode 100644 t/t6006-rev-list-format.sh
diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
new file mode 100644
index 0000000..cf096c3
--- /dev/null
+++ b/t/t6006-rev-list-format.sh
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+test_description='git-rev-list --pretty=format test'
+
+. ./test-lib.sh
+
+test_tick
+test_expect_success 'setup' '
+touch foo && git-add foo && git-commit -m "added foo" &&
+  echo changed >foo && git-commit -a -m "changed foo"
+'
+
+# usage: test_format name format_string <expected_output
+test_format() {
+	cat >expect.$1
+	test_expect_success "format $1" "
+git-rev-list --pretty=format:$2 master >output.$1 &&
+git-diff expect.$1 output.$1
+"
+}
+
+test_format hash %H%n%h <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+131a310eb913d107dd3c09a65d1651175898735d
+131a310
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+86c75cf
+EOF
+
+test_format tree %T%n%t <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+fe722612f26da5064c32ca3843aa154bdb0b08a0
+fe72261
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+4d5fcadc293a348e88f777dc0920f11e7d71441c
+4d5fcad
+EOF
+
+test_format parents %P%n%p <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+86c75cfd708a0e5868dc876ed5b8bb66c80b4873 
+86c75cf 
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+86c75cf 
+86c75cf 
+EOF
+
+# we don't test relative here
+test_format author %an%n%ae%n%ad%n%aD%n%at <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+A U Thor
+author@example.com
+Thu Apr 7 15:13:13 2005 -0700
+Thu, 7 Apr 2005 15:13:13 -0700
+1112911993
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+A U Thor
+author@example.com
+Thu Apr 7 15:13:13 2005 -0700
+Thu, 7 Apr 2005 15:13:13 -0700
+1112911993
+EOF
+
+test_format committer %cn%n%ce%n%cd%n%cD%n%ct <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+C O Mitter
+committer@example.com
+Thu Apr 7 15:13:13 2005 -0700
+Thu, 7 Apr 2005 15:13:13 -0700
+1112911993
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+C O Mitter
+committer@example.com
+Thu Apr 7 15:13:13 2005 -0700
+Thu, 7 Apr 2005 15:13:13 -0700
+1112911993
+EOF
+
+test_format encoding %e <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+<unknown>
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+<unknown>
+EOF
+
+test_format subject %s <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+changed foo
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+added foo
+EOF
+
+test_format body %b <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+<unknown>
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+<unknown>
+EOF
+
+test_format colors %Credfoo%Cgreenbar%Cbluebaz%Cresetxyzzy <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+foobarbazxyzzy
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+foobarbazxyzzy
+EOF
+
+test_done
-- 
1.5.1.rc2.619.g9dd2d

Re: [PATCH] Add some basic tests of rev-list --pretty=format

From: Alex Riesen <hidden>
Date: 2016-06-15 22:43:02

Jeff King, Wed, Mar 28, 2007 02:08:28 +0200:
+test_format parents %P%n%p <<'EOF'
+commit 131a310eb913d107dd3c09a65d1651175898735d
+86c75cfd708a0e5868dc876ed5b8bb66c80b4873 
+86c75cf 
+commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+86c75cf 
+86c75cf 
+EOF
Isn't this a bit wrong for initial commit?

[PATCH] Improve output of %p and %P format in git-rev-list --pretty=format:

From: Alex Riesen <hidden>
Date: 2016-06-15 22:43:02

Remove the terminating space from the space-separated list of parents.
Also fix the test t6006: it wrongly assumed that the initial commit
has a parent and was not executable.

Signed-off-by: Alex Riesen <redacted>
---

The test even hardcoded parents of the initial commit to the
initial commit itself, which does not make any sense at all.

 commit.c                   |    5 +++--
 t/t6006-rev-list-format.sh |    8 ++++----
 2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/commit.c b/commit.c
index a92958c..94b3713 100644
--- a/commit.c
+++ b/commit.c
@@ -852,13 +852,14 @@ static long format_commit_message(const struct commit *commit,
 	for (i = 0, p = commit->parents;
 			p && i < sizeof(parents) - 1;
 			p = p->next)
-		i += snprintf(parents + i, sizeof(parents) - i - 1, "%s ",
+		i += snprintf(parents + i, sizeof(parents) - i - 1, " %s" + !i,
 			sha1_to_hex(p->item->object.sha1));
 	interp_set_entry(table, IPARENTS, parents);
+	*parents = '\0';
 	for (i = 0, p = commit->parents;
 			p && i < sizeof(parents) - 1;
 			p = p->next)
-		i += snprintf(parents + i, sizeof(parents) - i - 1, "%s ",
+		i += snprintf(parents + i, sizeof(parents) - i - 1, " %s" + !i,
 			find_unique_abbrev(p->item->object.sha1,
 				DEFAULT_ABBREV));
 	interp_set_entry(table, IPARENTS_ABBREV, parents);
diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
index cf096c3..ce9c7dc 100644
--- a/t/t6006-rev-list-format.sh
+++ b/t/t6006-rev-list-format.sh
@@ -39,11 +39,11 @@ EOF
 
 test_format parents %P%n%p <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-86c75cfd708a0e5868dc876ed5b8bb66c80b4873 
-86c75cf 
+86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+86c75cf
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-86c75cf 
-86c75cf 
+
+
 EOF
 
 # we don't test relative here
-- 
1.5.1.rc2.18.g157b4

Re: [PATCH] Improve output of %p and %P format in git-rev-list --pretty=format:

From: Jeff King <hidden>
Date: 2016-06-15 22:43:02

On Wed, Mar 28, 2007 at 10:11:23PM +0200, Alex Riesen wrote:
Remove the terminating space from the space-separated list of parents.
Also fix the test t6006: it wrongly assumed that the initial commit
has a parent and was not executable.
Argh, yes. As is probably obvious, I moved the actual output to be
'expected' after giving it a cursory check, but I was more focused on
the author/committer information, since that's where I was fixing bugs.
Good catch.

This is obviously fairly untested code.  I will follow up with a few
more tests for encoding/body to help make it more complete.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help