Re: [PATCH v3 1/4] t3431: add rebase --fork-point tests
- From
SZEDER Gábor <szeder.dev@gmail.com>
- Date
- Apr 5, 2019, 11:15 UTC
- Message-ID
- <20190405111513.GU32732@szeder.dev>
- In-Reply-To
- <234ac9f024bf4e6b4944fd8f3912cf6367cf828b.1554151449.git.liu.denton@gmail.com>
On Mon, Apr 01, 2019 at 01:51:57PM -0700, Denton Liu wrote:
Show 56 quoted lines
> Signed-off-by: Denton Liu <liu.denton@gmail.com>
> ---
> t/t3431-rebase-fork-point.sh | 53 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 53 insertions(+)
> create mode 100755 t/t3431-rebase-fork-point.sh
>
> diff --git a/t/t3431-rebase-fork-point.sh b/t/t3431-rebase-fork-point.sh
> new file mode 100755
> index 0000000000..8e2483b73e
> --- /dev/null
> +++ b/t/t3431-rebase-fork-point.sh
> @@ -0,0 +1,53 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2019 Denton Liu
> +#
> +
> +test_description='git rebase --fork-point test'
> +
> +. ./test-lib.sh
> +
> +# A---B---D---E (master)
> +# \
> +# C*---F---G (side)
> +#
> +# C was formerly part of master but is side out
> +#
> +test_expect_success setup '
> + test_commit A &&
> + test_commit B &&
> + test_commit C &&
> + git branch -t side &&
> + git reset --hard HEAD^ &&
> + test_commit D &&
> + test_commit E &&
> + git checkout side &&
> + test_commit F &&
> + test_commit G
> +'
> +
> +test_rebase() {
> + expected="$1" &&
> + shift &&
> + test_expect_success "git rebase $@" "
> + git checkout master &&
> + git reset --hard E &&
> + git checkout side &&
> + git reset --hard G &&
> + git rebase $@ &&
> + test_write_lines $expected >expect &&
> + git log --pretty=%s >actual &&
> + test_cmp expect actual
> + "
> +}
> +
> +test_rebase 'G F E D B A' ''It appears that this last empty argument triggers some bug in Bash v4.2 and older (and on macOS such an old Bash is the default /bin/sh), as it turns that empty argument into something else, which in turn fails the test with:
<...> ++ git rebase $'\177' fatal: invalid upstream '?' error: last command exited with $?=128 not ok 2 - git rebase
https://travis-ci.org/git/git/jobs/516070862#L2276
Omitting that empty argument avoids this issue, and the test still checks what it was supposed to.
Show 12 quoted lines
> +test_rebase 'G F D B A' '--onto D' > +test_rebase 'G F C E D B A' '--no-fork-point' > +test_rebase 'G F C D B A' '--no-fork-point --onto D' > +test_rebase 'G F E D B A' '--fork-point refs/heads/master' > +test_rebase 'G F D B A' '--fork-point --onto D refs/heads/master' > +test_rebase 'G F C E D B A' 'refs/heads/master' > +test_rebase 'G F C D B A' '--onto D refs/heads/master' > + > +test_done > -- > 2.21.0.695.gaf8658f249 >