On Tue, Oct 15, 2019 at 11:47:53PM +0000, James Coglan via GitGitGadget wrote: > diff --git a/t/t4215-log-skewed-merges.sh b/t/t4215-log-skewed-merges.sh > new file mode 100755 > index 0000000000..4582ba066a > --- /dev/null > +++ b/t/t4215-log-skewed-merges.sh > @@ -0,0 +1,43 @@ > +#!/bin/sh > + > +test_description='git log --graph of skewed merges' > + > +. ./test-lib.sh > + > +test_expect_success 'log --graph with merge fusing with its left and right neighbors' ' > + cat >expect <<-\EOF && > + * H > + |\ > + | * G > + | |\ > + | | * F > + | | | > + | | \ > + | *-. \ E > + | |\ \ \ > + |/ / / / > + | | | / > + | | |/ > + | | * D > + | * | C > + | |/ > + * | B > + |/ > + * A > + EOF > + > + git checkout --orphan _p && > + test_commit A && > + test_commit B && > + git checkout -b _q @^ && test_commit C && > + git checkout -b _r @^ && test_commit D && > + git checkout _p && git merge --no-ff _q _r -m E && > + git checkout _r && test_commit F && > + git checkout _p && git merge --no-ff _r -m G && > + git checkout @^^ && git merge --no-ff _p -m H && > + > + git log --graph --pretty=tformat:%s | sed "s/ *$//" >actual && Please don't pipe 'git log --graph's output, but use an intermediate file instead: git log --graph ... >out && sed s/// out >actual && test_cmp expect actual The exit code of a pipeline is the exit code of the last process in the pipeline, and the exit codes of processes upstream of a pipe are ignored. Consequently, if 'git log --graph' produced the expected output but were to fail during housekeeping before exiting (segfault, double free(), whatever), then that failure would go unnoticed. This applies to several (all?) new tests added in this patch series as well. I'd like to join the praises from others: this is one excellent first-time submission, thanks.