lib-log-graph: consolidate test_cmp_graph logic

Log graph comparision logic is duplicated many times in:

- t3430-rebase-merges.sh
- t4202-log.sh
- t4214-log-graph-octopus.sh
- t4215-log-skewed-merges.sh

Consolidate the core of the comparision and sanitization logic in
lib-log-graph, and use it to replace the existing tests.

While at it, lose the singular/plural transition magic from the
sanitize_output helper, which was necessary around 7f814632 ("Use
correct grammar in diffstat summary line", 2012-02-01), that has
long outlived its usefulness.

Signed-off-by: Abhishek Kumar <abhishekkumar8222@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Abhishek Kumar 2020-02-24 19:08:13 +05:30 коммит произвёл Junio C Hamano
Родитель 51ebf55b93
Коммит 989eea958b
5 изменённых файлов: 54 добавлений и 77 удалений

22
t/lib-log-graph.sh Executable file
Просмотреть файл

@ -0,0 +1,22 @@
# Helps shared by the test scripts for comparing log graphs.
sanitize_log_output () {
sed -e 's/ *$//' \
-e 's/commit [0-9a-f]*$/commit COMMIT_OBJECT_NAME/' \
-e 's/Merge: [ 0-9a-f]*$/Merge: MERGE_PARENTS/' \
-e 's/Merge tag.*/Merge HEADS DESCRIPTION/' \
-e 's/Merge commit.*/Merge HEADS DESCRIPTION/' \
-e 's/index [0-9a-f]*\.\.[0-9a-f]*/index BEFORE..AFTER/'
}
lib_test_cmp_graph () {
git log --graph "$@" >output &&
sed 's/ *$//' >output.sanitized <output &&
test_i18ncmp expect output.sanitized
}
lib_test_cmp_short_graph () {
git log --graph --pretty=short "$@" >output &&
sanitize_log_output >output.sanitized <output &&
test_i18ncmp expect output.sanitized
}

Просмотреть файл

@ -20,12 +20,11 @@ Initial setup:
'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-rebase.sh
. "$TEST_DIRECTORY"/lib-log-graph.sh
test_cmp_graph () {
cat >expect &&
git log --graph --boundary --format=%s "$@" >output &&
sed "s/ *$//" <output >output.trimmed &&
test_cmp expect output.trimmed
lib_test_cmp_graph --boundary --format=%s "$@"
}
test_expect_success 'setup' '

Просмотреть файл

@ -5,6 +5,11 @@ test_description='git log'
. ./test-lib.sh
. "$TEST_DIRECTORY/lib-gpg.sh"
. "$TEST_DIRECTORY/lib-terminal.sh"
. "$TEST_DIRECTORY/lib-log-graph.sh"
test_cmp_graph () {
lib_test_cmp_graph --format=%s "$@"
}
test_expect_success setup '
@ -452,8 +457,7 @@ cat > expect <<EOF
EOF
test_expect_success 'simple log --graph' '
git log --graph --pretty=tformat:%s >actual &&
test_cmp expect actual
test_cmp_graph
'
cat > expect <<EOF
@ -467,8 +471,7 @@ cat > expect <<EOF
EOF
test_expect_success 'simple log --graph --line-prefix="123 "' '
git log --graph --line-prefix="123 " --pretty=tformat:%s >actual &&
test_cmp expect actual
test_cmp_graph --line-prefix="123 "
'
test_expect_success 'set up merge history' '
@ -495,9 +498,7 @@ cat > expect <<\EOF
EOF
test_expect_success 'log --graph with merge' '
git log --graph --date-order --pretty=tformat:%s |
sed "s/ *\$//" >actual &&
test_cmp expect actual
test_cmp_graph --date-order
'
cat > expect <<\EOF
@ -516,9 +517,7 @@ cat > expect <<\EOF
EOF
test_expect_success 'log --graph --line-prefix="| | | " with merge' '
git log --line-prefix="| | | " --graph --date-order --pretty=tformat:%s |
sed "s/ *\$//" >actual &&
test_cmp expect actual
test_cmp_graph --line-prefix="| | | " --date-order
'
cat > expect.colors <<\EOF
@ -676,9 +675,7 @@ cat > expect <<\EOF
EOF
test_expect_success 'log --graph with merge' '
git log --graph --date-order --pretty=tformat:%s |
sed "s/ *\$//" >actual &&
test_cmp expect actual
test_cmp_graph --date-order
'
test_expect_success 'log.decorate configuration' '
@ -1213,24 +1210,8 @@ cat >expect <<\EOF
+one
EOF
sanitize_output () {
sed -e 's/ *$//' \
-e 's/commit [0-9a-f]*$/commit COMMIT_OBJECT_NAME/' \
-e 's/Merge: [ 0-9a-f]*$/Merge: MERGE_PARENTS/' \
-e 's/Merge tag.*/Merge HEADS DESCRIPTION/' \
-e 's/Merge commit.*/Merge HEADS DESCRIPTION/' \
-e 's/, 0 deletions(-)//' \
-e 's/, 0 insertions(+)//' \
-e 's/ 1 files changed, / 1 file changed, /' \
-e 's/, 1 deletions(-)/, 1 deletion(-)/' \
-e 's/, 1 insertions(+)/, 1 insertion(+)/' \
-e 's/index [0-9a-f]*\.\.[0-9a-f]*/index BEFORE..AFTER/'
}
test_expect_success 'log --graph with diff and stats' '
git log --no-renames --graph --pretty=short --stat -p >actual &&
sanitize_output >actual.sanitized <actual &&
test_i18ncmp expect actual.sanitized
lib_test_cmp_short_graph --no-renames --stat -p
'
cat >expect <<\EOF
@ -1505,9 +1486,7 @@ cat >expect <<\EOF
EOF
test_expect_success 'log --line-prefix="*** " --graph with diff and stats' '
git log --line-prefix="*** " --no-renames --graph --pretty=short --stat -p >actual &&
sanitize_output >actual.sanitized <actual &&
test_i18ncmp expect actual.sanitized
lib_test_cmp_short_graph --line-prefix="*** " --no-renames --stat -p
'
cat >expect <<-\EOF
@ -1529,9 +1508,7 @@ cat >expect <<-\EOF
EOF
test_expect_success 'log --graph with --name-status' '
git log --graph --format=%s --name-status tangle..reach >actual &&
sanitize_output <actual >actual.sanitized &&
test_cmp expect actual.sanitized
test_cmp_graph --name-status tangle..reach
'
cat >expect <<-\EOF
@ -1553,9 +1530,7 @@ cat >expect <<-\EOF
EOF
test_expect_success 'log --graph with --name-only' '
git log --graph --format=%s --name-only tangle..reach >actual &&
sanitize_output <actual >actual.sanitized &&
test_cmp expect actual.sanitized
test_cmp_graph --name-only tangle..reach
'
test_expect_success 'dotdot is a parent directory' '

Просмотреть файл

@ -3,6 +3,12 @@
test_description='git log --graph of skewed left octopus merge.'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-log-graph.sh
test_cmp_graph () {
cat >expect &&
lib_test_cmp_graph --color=never --date-order --format=%s "$@"
}
test_expect_success 'set up merge history' '
test_commit initial &&
@ -24,7 +30,7 @@ test_expect_success 'set up merge history' '
'
test_expect_success 'log --graph with tricky octopus merge, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph left octopus-merge <<-\EOF
* left
| *-. octopus-merge
|/|\ \
@ -37,9 +43,6 @@ test_expect_success 'log --graph with tricky octopus merge, no color' '
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s left octopus-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with tricky octopus merge with colors' '
@ -66,7 +69,7 @@ test_expect_success 'log --graph with tricky octopus merge with colors' '
# without the first parent skewing to the "left" branch column).
test_expect_success 'log --graph with normal octopus merge, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph octopus-merge <<-\EOF
*---. octopus-merge
|\ \ \
| | | * 4
@ -78,9 +81,6 @@ test_expect_success 'log --graph with normal octopus merge, no color' '
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s octopus-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with normal octopus merge with colors' '
@ -103,7 +103,7 @@ test_expect_success 'log --graph with normal octopus merge with colors' '
'
test_expect_success 'log --graph with normal octopus merge and child, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph after-merge <<-\EOF
* after-merge
*---. octopus-merge
|\ \ \
@ -116,9 +116,6 @@ test_expect_success 'log --graph with normal octopus merge and child, no color'
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s after-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with normal octopus and child merge with colors' '
@ -142,7 +139,7 @@ test_expect_success 'log --graph with normal octopus and child merge with colors
'
test_expect_success 'log --graph with tricky octopus merge and its child, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph left after-merge <<-\EOF
* left
| * after-merge
| *-. octopus-merge
@ -156,9 +153,6 @@ test_expect_success 'log --graph with tricky octopus merge and its child, no col
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s left after-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with tricky octopus merge and its child with colors' '
@ -183,7 +177,7 @@ test_expect_success 'log --graph with tricky octopus merge and its child with co
'
test_expect_success 'log --graph with crossover in octopus merge, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph after-4 octopus-merge <<-\EOF
* after-4
| *---. octopus-merge
| |\ \ \
@ -200,9 +194,6 @@ test_expect_success 'log --graph with crossover in octopus merge, no color' '
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s after-4 octopus-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with crossover in octopus merge with colors' '
@ -230,7 +221,7 @@ test_expect_success 'log --graph with crossover in octopus merge with colors' '
'
test_expect_success 'log --graph with crossover in octopus merge and its child, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph after-4 after-merge <<-\EOF
* after-4
| * after-merge
| *---. octopus-merge
@ -248,9 +239,6 @@ test_expect_success 'log --graph with crossover in octopus merge and its child,
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s after-4 after-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with crossover in octopus merge and its child with colors' '
@ -279,7 +267,7 @@ test_expect_success 'log --graph with crossover in octopus merge and its child w
'
test_expect_success 'log --graph with unrelated commit and octopus tip, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph after-initial octopus-merge <<-\EOF
* after-initial
| *---. octopus-merge
| |\ \ \
@ -296,9 +284,6 @@ test_expect_success 'log --graph with unrelated commit and octopus tip, no color
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s after-initial octopus-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with unrelated commit and octopus tip with colors' '
@ -326,7 +311,7 @@ test_expect_success 'log --graph with unrelated commit and octopus tip with colo
'
test_expect_success 'log --graph with unrelated commit and octopus child, no color' '
cat >expect.uncolored <<-\EOF &&
test_cmp_graph after-initial after-merge <<-\EOF
* after-initial
| * after-merge
| *---. octopus-merge
@ -344,9 +329,6 @@ test_expect_success 'log --graph with unrelated commit and octopus child, no col
|/
* initial
EOF
git log --color=never --graph --date-order --pretty=tformat:%s after-initial after-merge >actual.raw &&
sed "s/ *\$//" actual.raw >actual &&
test_cmp expect.uncolored actual
'
test_expect_success 'log --graph with unrelated commit and octopus child with colors' '

Просмотреть файл

@ -3,12 +3,11 @@
test_description='git log --graph of skewed merges'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-log-graph.sh
check_graph () {
cat >expect &&
git log --graph --pretty=tformat:%s "$@" >actual.raw &&
sed "s/ *$//" actual.raw >actual &&
test_cmp expect actual
lib_test_cmp_graph --format=%s "$@"
}
test_expect_success 'log --graph with merge fusing with its left and right neighbors' '