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

Re: [RTC/PATCH] Add 'update-branch' hook

From
Ilya Bobyr <ilya.bobyr@gmail.com>
Date
Apr 22, 2014, 06:05 UTC
Message-ID
<535606A3.8040704@gmail.com>
In-Reply-To
<53559a8333aaa_6c39e772f07f@nysa.notmuch>
On 4/21/2014 3:24 PM, Felipe Contreras wrote:
Show 20 quoted lines
> Ilya Bobyr wrote:
>> On Mon, Apr 21, 2014 at 2:35 PM, Felipe Contreras <
>> felipe.contreras@gmail.com> wrote:
>>> Ilya Bobyr wrote:
>>>> test_expect_success 'setup' "
>>>>       mkdir -p .git/hooks &&
>>>>       cat > .git/hooks/update-branch <<-\\EOF &&
>>>>       #!/bin/sh
>>>>       echo \$@ > .git/update-branch.args
>>>>       EOF
>>>>       chmod +x .git/hooks/update-branch &&
>>>>       echo one > content &&
>>>>       git add content &&
>>>>       git commit -a -m one
>>>> "
>>> That is not maintainable at all.
>> Maybe you could explain how is this less maintainable, compared to a separate
>> function?
> Do I really have to explain that manually escaping a shell script is not
> maintainable?
This is rude.
Here is how you can do it without escaping:
test_expect_success 'setup' '
	mkdir -p .git/hooks &&
	cat > .git/hooks/update-branch <<-\EOF &&
	#!/bin/sh
	echo $@ > .git/update-branch.args
	EOF
	chmod +x .git/hooks/update-branch &&
	echo one > content &&
	git add content &&
	git commit -a -m one
'
It is not different from most of the tests, I think.
Show 6 quoted lines
>> This is how it is suggested by t/README and how it is done in the other
>> test suites.
>> I can not see how your case is different, but I might be missing something.
> Let's take a cursoy look at `git grep -l "'EOF'" t`.
>
> [...]

So the point is that some existing tests violate best practices? I do not think this is a good justification to do the same for new tests.

> In fact my version is actually cleaner than these, because the code that is run
> outside the cage is clearly delimited by a function.

It depends on the perspective. If it fails, the failure would be missed regardless of if it is in a function or not. Most examples that you quoted only create files outside test_expect_success. Even that is not necessary.

I am not telling you how you should write it. I am just saying that you are breaking one of the recommendations on how to write tests. There are different options that adhere to the suggestions in t/README.

Previous: Felipe ContrerasNext: Felipe Contreras
Message 36 of 39 in “Add 'update-branch' hook”
  1. Add 'update-branch' hookFelipe Contreras, Apr 21, 2014
  2. Eric SunshineApr 21, 2014
  3. Ilya BobyrApr 21, 2014
  4. Felipe ContrerasApr 21, 2014
  5. Ilya BobyrApr 21, 2014
  6. Felipe ContrerasApr 21, 2014
  7. Ilya BobyrApr 21, 2014
  8. Felipe ContrerasApr 21, 2014
  9. Stephen LeakeApr 22, 2014
  10. Felipe ContrerasApr 22, 2014
  11. Ilya BobyrApr 22, 2014
  12. Felipe ContrerasApr 22, 2014
  13. Stephen LeakeApr 23, 2014
  14. Felipe ContrerasApr 23, 2014
  15. Junio C HamanoApr 23, 2014
  16. Felipe ContrerasApr 24, 2014
  17. Junio C HamanoApr 26, 2014
  18. Felipe ContrerasApr 26, 2014
  19. Stephen LeakeApr 24, 2014
  20. Felipe ContrerasApr 24, 2014
  21. Junio C HamanoApr 21, 2014
  22. Felipe ContrerasApr 21, 2014
  23. Junio C HamanoApr 21, 2014
  24. Felipe ContrerasApr 23, 2014
  25. Junio C HamanoApr 23, 2014
  26. Felipe ContrerasApr 24, 2014
  27. Ilya BobyrApr 22, 2014
  28. Felipe ContrerasApr 22, 2014
  29. Ilya BobyrApr 21, 2014
  30. Felipe ContrerasApr 21, 2014
  31. Ilya BobyrApr 21, 2014
  32. Felipe ContrerasApr 21, 2014
  33. Ilya BobyrApr 22, 2014
  34. Felipe ContrerasApr 22, 2014
  35. Felipe ContrerasApr 21, 2014
  36. Ilya BobyrApr 22, 2014
  37. Felipe ContrerasApr 22, 2014
  38. Ilya BobyrApr 22, 2014
  39. Felipe ContrerasApr 22, 2014

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.