Am 05.04.19 um 19:25 schrieb Denton Liu: > On Fri, Apr 05, 2019 at 04:55:37PM +0200, Johannes Schindelin wrote: >> On Mon, 1 Apr 2019, Denton Liu wrote: >>> +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 $@ && >> >> I think we need this patch, to make the macOS build happy: > > Thanks for digging into this, both. > > Out of curiosity, t3432 is written similarly: > > test_rebase_same_head() { > status="$1" && > shift && > test_expect_$status "git rebase $@ with $changes is no-op" " > oldhead=\$(git rev-parse HEAD) && > test_when_finished 'git reset --hard \$oldhead' && > git rebase $@ && > newhead=\$(git rev-parse HEAD) && > test_cmp_rev \$oldhead \$newhead > " > } Using $@ in these expansions is wrong. You do not want to forward an argument list, but you want to construct a command line. $* is correct here. Then you can remove the single-quotes at the invocation, like so: test_rebase_same_head success test_rebase_same_head success --onto B B Function test_rebase() could be done in the same way, but the first argument, expected, still needs quotes at the call site, of course. -- Hannes