Re: [PATCH v2 04/12] fetch tests: double quote a variable for interpolation
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 22, 2018, 19:52 UTC
- Message-ID
- <xmqqbmhln01n.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20180121000304.32323-5-avarab@gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
> If the $cmdline variable contains multiple arguments they won't be > interpolated correctly since the body of the test is single quoted. I > don't know what part of test-lib.sh is expanding variables within > single-quoted strings,...
dothis='echo whatever $IFS separated strings'
test_expect_success label '
$dothis
'works because test_expect_success ends up beint a glorified 'eval' and it sees the value of $dothis.
> but interpolating this inline is the desired > behavior here.
I am not sure what you meant by this, though.
> - git fetch $cmdline && > + git fetch '"$cmdline"' &&
Would this work with cmdline that needs to be quoted for the resulting shell script to be syntactically correct (e.g. cmdline with a single dq in it)? By stepping out of sq pair, you are allowing/asking the shell that forms test_expect_success command line arguments to interpolate cmdline, instead of asking the shell that evals test_expect_success with its command line argument strings.
In other words, I suspect that the caller of test_configured_prune now must sq_quote the cmdline arguments it passes to this helper, i.e.
cmdline="$(git rev-parse --sq-quote arg1 'arg"2' arg3)" test_configured_prune ... "$cmdline" ...
for this patch to be correct.