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

Re: [PATCH v3] bugreport: collect list of populated hooks

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Apr 30, 2020, 01:50 UTC
Message-ID
<20200430015049.GA115238@google.com>
In-Reply-To
<20200430012425.209122-1-emilyshaffer@google.com>
Emily Shaffer wrote:
> Since v2, switched to write_script, and modified the test to check for
> uninstalled hooks and sample hooks having correct behavior.
Looks almost ready.  Two nits.
[...]
Show 10 quoted lines
> --- a/t/t0091-bugreport.sh
> +++ b/t/t0091-bugreport.sh
> @@ -57,5 +57,15 @@ test_expect_success 'can create leading directories outside of a git dir' '
>  	nongit git bugreport -o foo/bar/baz
>  '
>  
> +test_expect_success 'indicates populated hooks' '
> +	test_when_finished rm git-bugreport-hooks.txt &&
> +	test_when_finished rm -fr .git/hooks &&
> +	mkdir .git/hooks &&

This is subtle. Since c09a69a83e3 (Disable hooks during tests, 2005-10-16), the repository in which the test runs has its "hooks" directory renamed to "hooks-disabled", with rationale

    Individual tests for hooks would want to have their own tests when
    written.  Also we should not pick up from random templates the user
    happens to have.

That rationale is a bit strange because we explicitly passed --template to "git init" even then, so we could be confident that the built-in templates that do not enable any hooks would be in use.

Mailing list diving finds [1]. We didn't have f98f8cbac01 (Ship sample hooks with .sample suffix, 2008-06-24) yet, which means that on filesystems that do not record an executable bit, the sample hooks were all enabled by default. Nowadays that has been fixed and we should be able to get rid of the "mv .git/hooks .git/hooks-disabled" in the test setup.

When we do that, this "mkdir .git/hooks" will fail because the directory already exists. Ideas:

 A. Include a preparatory patch in this series that removes that "mv"
    command.  That way, this test can do
	test_when_finished "
		rm -fr .git/hooks &&
		mv .git/hooks-saved .git/hooks
	" &&
	mv .git/hooks .git/hooks-saved &&
	mkdir .git/hooks &&
	...
    or even better (because of increased realism)
	test_when_finished rm .git/hooks/applypatch-msg &&
	write_script .git/hooks/applypatch-msg <<-\EOF &&
	...
  B. Run "git init" ourselves so we know what we're getting:
  	test_when_finished "rm -fr .git && mv .git-saved .git" &&
	mv .git .git-saved &&
	git init &&
	...
> +	write_script .git/hooks/applypatch-msg &&

write_script looks for a script on its stdin. test_eval_ redirects stdin to come from /dev/null, so we happen to get an empty script, but this is subtle. How about something like

	write_script .git/hooks/applypatch-msg <<-\EOF &&
	echo >&2 "rejecting message in $1"
	exit 1
	EOF
or
	write_script .git/hooks/applypatch-msg </dev/null &&
?
> +	write_script .git/hooks/prepare-commit-msg.sample &&
Likewise.
> +	git bugreport -s hooks &&
> +	grep applypatch-msg git-bugreport-hooks.txt &&
> +	! grep prepare-commit-msg git-bugreport-hooks.txt
> +'

Thanks, Jonathan

Previous: Emily ShafferNext: Jonathan Nieder
Message 20 of 33 in “bugreport: collect list of populated hooks”
  1. bugreport: collect list of populated hooksEmily Shaffer, Apr 24, 2020
  2. Jonathan NiederApr 25, 2020
  3. bugreport: drop time.h includeEmily Shaffer, Apr 27, 2020
  4. Jonathan NiederApr 27, 2020
  5. Junio C HamanoApr 27, 2020
  6. Junio C HamanoApr 27, 2020
  7. Emily ShafferApr 27, 2020
  8. Junio C HamanoApr 27, 2020
  9. bugreport: drop extraneous includesEmily Shaffer, Apr 27, 2020
  10. Jonathan NiederApr 27, 2020
  11. Junio C HamanoApr 25, 2020
  12. Emily ShafferApr 27, 2020
  13. Junio C HamanoApr 27, 2020
  14. Emily ShafferApr 27, 2020
  15. bugreport: collect list of populated hooksEmily Shaffer, Apr 27, 2020
  16. Jonathan NiederApr 27, 2020
  17. Junio C HamanoApr 28, 2020
  18. Emily ShafferApr 30, 2020
  19. bugreport: collect list of populated hooksEmily Shaffer, Apr 30, 2020
  20. Jonathan NiederApr 30, 2020
  21. Jonathan NiederApr 30, 2020
  22. Junio C HamanoApr 30, 2020
  23. Junio C HamanoApr 30, 2020
  24. Emily ShafferMay 7, 2020
  25. Junio C HamanoMay 7, 2020
  26. Emily ShafferMay 11, 2020
  27. bugreport: collect list of populated hooksEmily Shaffer, May 8, 2020
  28. Junio C HamanoMay 8, 2020
  29. Đoàn Trần Công DanhMay 8, 2020
  30. Emily ShafferMay 11, 2020
  31. bugreport: collect list of populated hooksEmily Shaffer, May 11, 2020
  32. Jonathan NiederMay 11, 2020
  33. Junio C HamanoMay 11, 2020

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.