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

Re: [PATCH 10/10] fetch tests: fix needless and buggy re-quoting

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jun 22, 2022, 15:21 UTC
Message-ID
<220622.86iloslnlt.gmgdl@evledraar.gmail.com>
In-Reply-To
<69256646-13b0-5619-3161-8d8e319fad50@github.com>
On Wed, Jun 22 2022, Derrick Stolee wrote:
Show 24 quoted lines
> On 6/22/22 2:12 AM, Junio C Hamano wrote:
>> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>> This makes it a lot clearer, with no perl, no sed, no eval.  It does
>> become louder, but should be easier to follow in general ...
>> 
>>>  test_configured_prune_type --mode link true  unset true  unset pruned pruned \
>>> -	"\"$remote_url\"" \
>>> +	REMOTE_URL \
>>>  	"refs/tags/*:refs/tags/*" "+refs/heads/*:refs/remotes/origin/*"
>> 
>> ... except for a magic like this one.
>> 
>> We may remember the REMOTE_URL -> $remote_url trick used here this
>> week, but I am not sure if we find it sensible in 3 months.
>> 
>> But overall I think this makes it simpler.  I am not 100% sold on
>> the necessity of lengthy earlier steps, though.
>
> When I saw that this was a series with 10 patches (without reading
> anything else) I expected that you had created a test-lib.sh helper
> that allowed replacing a word in a string with another string, and
> then the remaining patches were fixing the other tests that have
> similar breaks when using "@" in the path.

I guess we could have such a helper, but I can't imagine a use-case for it where the answer wouldn't be the same as what this series suggests: Just stop passing a quoted argument list as one giant string.

> (Heck, I'd even take a "test-tool replace-word <string> <word>
> <replacement>" implementation [...]

If we need to replace a string we can use sed or perl, but much better is to not need to do so in the first place. E.g. the "origin" match we had before is now just "origin" in a case statement. I'm assuming that you mean a test-tool to do something similar to strvec_split() (or whatever the quoted variant was?).

> to avoid all of these issues we have
> due to using scripting languages that rely on special characters
> to define the match and replacement operation.)

We've got plenty of issues inherent in shellscript as a language with no little in the way of complex types (e.g. no hashes).

But in this case the language gives us the right type (list), we just weren't using it. No?

> It seems like this isn't the last time we are going to have a
> problem with string replacement like this, and having a well-defined
> helper would go far.

...I guess I'm not seeing the use-case for it, in this case it was "just pass a list then", wouldn't that be the case in other similar scenarios.

> The rest of the changes to the test script seem more complicated
> than necessary for what _should_ be a simple problem.

I tried to optimize it for ease of review as opposed to diff size or patch numbers, so e.g. doing mechanical replacements in their own commits.

Do you have any specific things in mind that you think are too complicated?

Yes, it should ideally not be such a pain, but as we made wide use of a string instead of a list digging ourselves out of that hole took some doing.

But I really think fixing the underlying issue is worth it, as opposed to just plastering over it.

Previous: Derrick StoleeNext: Junio C Hamano
Message 35 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.