git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] t5510: replace 'origin' with URL more carefully (was Re: Test Failure t5510,t5562 - was RE: [ANNOUNCE] Git v2.37.0-rc1)

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Jun 21, 2022, 09:29 UTC
Message-ID
<20220621092915.GD1689@szeder.dev>
In-Reply-To
<YrFwcL2dRS/v7xAw@coredump.intra.peff.net>
On Tue, Jun 21, 2022 at 03:17:04AM -0400, Jeff King wrote:
Show 19 quoted lines
> On Mon, Jun 20, 2022 at 06:20:07PM -0400, Derrick Stolee wrote:
> 
> > diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
> > index 4620f0ca7fa..c255a77e18a 100755
> > --- a/t/t5510-fetch.sh
> > +++ b/t/t5510-fetch.sh
> > @@ -853,7 +853,9 @@ test_configured_prune_type () {
> >  		then
> >  			new_cmdline=$cmdline_setup
> >  		else
> > -			new_cmdline=$(printf "%s" "$cmdline" | perl -pe 's[origin(?!/)]["'"$remote_url"'"]g')
> > +			new_cmdline=$(printf "%s" "$cmdline" |
> > +					sed -e "s~origin ~'$remote_url' ~g" \
> > +					    -e "s~ origin~ '$remote_url'~g")
> >  		fi
> 
> Doesn't this introduce a new problem if $remote_url contains a tilde?
> Unlikely, but I thought the point of the exercise was defending against
> funny paths.

And it doesn't replace a standalone "origin" word, either, which does occur a few times in the test script.

Show 5 quoted lines
> So perhaps something like:
> 
>   perl -e '
>     my ($cmdline, $url) = @ARGV;
>     $cmdline =~ s[origin(?!/)][quotemeta($url)]ge;

I don't like this "(?!/)" magic, because I haven't got the slightest idea of what it might do by merely looking at it, and these characters are not exactly easy to search for.

The good old "add a space prefix and suffix" trick can help to easily match the "origin" word even when it stands alone, but, alas, the result is still not as simple as I'd like with the \s and the string concatenation:

  perl -e '
    new_cmdline=$(perl -e '
            my ($cmdline, $url) = @ARGV;
            $cmdline =~ s[\sorigin\s][" " . quotemeta($url) . " "]ge;
            print $cmdline;
    ' -- " $cmdline " "$remote_url")
(The 'sed' variant looks good to me:
  printf " %s " "$cmdline" |sed "s~ origin ~ '$remote_url' ~g"

but then again it just trades one set of troublesome characters for an other.)

Show 8 quoted lines
>     print $cmdline;
>   ' -- "$cmdline" "$remote_url"
> 
> I don't mean to golf on this forever, but I wanted to show something
> concrete since you said you don't know perl well. I just think moving to
> sed introduces more opportunities for errors here, not fewer. :)
> 
> -Peff
Previous: Jeff KingNext: Jeff King
Message 14 of 37 in “Test Failure t5510,t5562 - was RE: [ANNOUNCE] Git v2.37.0-rc1”
  1. rsbecker@nexbridge.comJun 20, 2022
  2. Derrick StoleeJun 20, 2022
  3. rsbecker@nexbridge.comJun 20, 2022
  4. Derrick StoleeJun 20, 2022
  5. SZEDER GáborJun 20, 2022
  6. Ævar Arnfjörð BjarmasonJun 20, 2022
  7. Junio C HamanoJun 20, 2022
  8. rsbecker@nexbridge.comJun 20, 2022
  9. Ævar Arnfjörð BjarmasonJun 20, 2022
  10. rsbecker@nexbridge.comJun 20, 2022
  11. t5510: replace 'origin' with URL more carefully (was Re: Test Failure t5510,t5562 - was RE: [ANNOUNCE] Git v2.37.0-rc1)Derrick Stolee, Jun 20, 2022
  12. Johannes SixtJun 21, 2022
  13. Jeff KingJun 21, 2022
  14. SZEDER GáborJun 21, 2022
  15. Jeff KingJun 21, 2022
  16. Junio C HamanoJun 21, 2022
  17. Junio C HamanoJun 21, 2022
  18. Derrick StoleeJun 21, 2022
  19. Junio C HamanoJun 21, 2022
  20. 00/10 t5510: fix the quoting messÆvar Arnfjörð Bjarmason, Jun 21, 2022
  21. 01/10 fetch tests: remove redundant test_unconfig()Ævar Arnfjörð Bjarmason, Jun 21, 2022
  22. Junio C HamanoJun 22, 2022
  23. 04/10 fetch tests: add a helper to avoid boilerplateÆvar Arnfjörð Bjarmason, Jun 21, 2022
  24. 03/10 fetch tests: use "local", &&-chaining, style etc.Ævar Arnfjörð Bjarmason, Jun 21, 2022
  25. 02/10 fetch tests: use named, not positional parametersÆvar Arnfjörð Bjarmason, Jun 21, 2022
  26. 05/10 fetch tests: pass "mode" parameter first, pave way for "$@"Ævar Arnfjörð Bjarmason, Jun 21, 2022
  27. Junio C HamanoJun 22, 2022
  28. 06/10 fetch tests: pass a list, not a string of argumentsÆvar Arnfjörð Bjarmason, Jun 21, 2022
  29. 07/10 fetch tests: remove lazy variable setupÆvar Arnfjörð Bjarmason, Jun 21, 2022
  30. 08/10 fetch tests: remove shelling out for previously "lazy" variablesÆvar Arnfjörð Bjarmason, Jun 21, 2022
  31. 09/10 fetch tests: stop implicitly adding refspecsÆvar Arnfjörð Bjarmason, Jun 21, 2022
  32. 10/10 fetch tests: fix needless and buggy re-quotingÆvar Arnfjörð Bjarmason, Jun 21, 2022
  33. Junio C HamanoJun 22, 2022
  34. Derrick StoleeJun 22, 2022
  35. Ævar Arnfjörð BjarmasonJun 22, 2022
  36. Junio C HamanoJun 22, 2022
  37. rsbecker@nexbridge.comJun 21, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.