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

Re: [PATCH v4 2/4] Add testcases for the --detect-dir-renames diffcore flag.

From
YDYann Dirson <ydirson@free.fr>
Date
Oct 4, 2010, 21:37 UTC
Message-ID
<20101004213703.GW4983@home.lan>
In-Reply-To
<20101004203241.GF6466@burratino>
On Mon, Oct 04, 2010 at 03:32:41PM -0500, Jonathan Nieder wrote:
Show 7 quoted lines
> Yann Dirson wrote:
> 
> > From: Yann Dirson <ydirson@free.fr>
> > Subject: Add testcases for the --detect-dir-renames diffcore flag
> 
> Probably better for the test to be squashed with the patch that adds
> that option.

I tend to agree, but we see quite a lot of patches split this way it seems. Junio, any preference here ?

Show 27 quoted lines
> > --- /dev/null
> > +++ b/t/t4046-diff-rename-factorize.sh
> > @@ -0,0 +1,326 @@
> [...]
> > +test_expect_success \
> > +    'commit the index.'  \
> > +    'git update-ref HEAD $(echo "original empty commit" | git commit-tree $(git write-tree))'
> 
> Nit:
> 
> Now test assertions tend to be written as
> 
> 	test_expect_success '...' '
> 		command &&
> 		command &&
> 		...
> 	'
> 
> The tabs to indent and opening ' at the end of the first line means
> less fuss in lining things up.  Making each test assertion include its
> setup means tests don't pass if something gets messed up in the setup,
> and using multiline test assertions with && means there is no
> confusion about what the tests were written to test.
> 
> As you mentioned, this has the unfortunate downside of messing with
> syntax highlighting.  Maybe the common text editors need a new mode
> for git-style test scripts?

There used to be a mmm-mode thingie for emacs which made such things easier (multiple major modes with custom delimiters) - but that did not handle quoting issues automagically either :)

One solution seen in some test scripts already is to define functions outside of the test_expect* clauses.

Show 7 quoted lines
>  Or maybe it would make sense to implement
> 
> 	test_begin_expecting_success '...'
> 	...
> 	test_end
> 
> --- it would certainly make quoting easier.

Not sure it would be possible without a macro processor. And not sure a macro processor would be welcome by everyone here :)

> It might make sense to compute the tree, commit, etc one at a time
> instead of this long one-liner.
If moved into a function which would make it readable, yes.
Show 7 quoted lines
> To avoid quoting troubles and since these are innocuous commands, it
> could be nice to put this before the first test assertion.  Or even
> better:
> 
> 	mkdir a &&
> 	printf "Line %s\n" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 >a/path0 &&
> 	...

Well, when seeing for the first time such a construct, i tend to wonder how portable it is amont printf implementations. But hey, I'm always thrilled to discover parts of the standard tools I had missed until now :)

Show 16 quoted lines
> [...]
> > +test_expect_success \
> > +    'git diff-index --detect-dir-renames after directory move.' \
> > +    'git diff-index --detect-dir-renames HEAD >current'
> > +grep -v "^\[DBG\] " <current >current.filtered
> > +cat >expected <<\EOF
> > +:040000 040000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 R100	a/	b/
> > +:100644 100644 fdbec444a77953b1bcc899d9fabfa202e5e68f08 fdbec444a77953b1bcc899d9fabfa202e5e68f08 R100	a/path0	b/path0
> > +:100644 100644 2f1f8d70c0fdad990819dfe37a31deb010805161 2f1f8d70c0fdad990819dfe37a31deb010805161 R100	a/path1	b/path1
> > +:100644 100644 dbde7141d737c8aa0003672c1bc21ded48c6c3b9 dbde7141d737c8aa0003672c1bc21ded48c6c3b9 R100	a/path2	b/path2
> > +:100644 100644 c6971ab9f08a6cd9c89a0f87d94ae347aad6144a c6971ab9f08a6cd9c89a0f87d94ae347aad6144a R100	a/path3	b/path3
> > +EOF
> 
> Nit: although compare_diff_patch ensures the result is not dependent
> on the hash function, these hard-coded hashes are still hard for a
> human to read.  Could they be computed instead?

Well, that would just make the test harder to read imho. Using regexps would help for readability, but that would require another compare_diff variant. BTW, I should be using compare_diff_raw not compare_diff_patch here.

Previous: Jonathan NiederNext: Jonathan Nieder
Message 14 of 25 in “Detection of directory renames”
  1. 0/4 Detection of directory renamesYann Dirson, Oct 3, 2010
  2. 1/4 Introduce wholesame directory move detection in diffcore.Yann Dirson, Oct 3, 2010
  3. 2/4 Add testcases for the --detect-dir-renames diffcore flag.Yann Dirson, Oct 3, 2010
  4. 3/4 Allow hiding renames of individual files involved in a directory rename.Yann Dirson, Oct 3, 2010
  5. 4/4 Add testcases for the --hide-dir-rename-details diffcore flag.Yann Dirson, Oct 3, 2010
  6. Sverre RabbelierOct 3, 2010
  7. Sverre RabbelierOct 3, 2010
  8. Junio C HamanoOct 3, 2010
  9. Sverre RabbelierOct 4, 2010
  10. Yann DirsonOct 4, 2010
  11. Ævar Arnfjörð BjarmasonOct 4, 2010
  12. Yann DirsonOct 4, 2010
  13. Jonathan NiederOct 4, 2010
  14. Yann DirsonOct 4, 2010
  15. Jonathan NiederOct 4, 2010
  16. Andreas EricssonOct 5, 2010
  17. Ævar Arnfjörð BjarmasonOct 4, 2010
  18. Yann DirsonOct 4, 2010
  19. Jonathan NiederOct 4, 2010
  20. Yann DirsonOct 4, 2010
  21. Jonathan NiederOct 5, 2010
  22. Yann DirsonOct 6, 2010
  23. Jonathan NiederOct 4, 2010
  24. Jonathan NiederOct 5, 2010
  25. Yann DirsonOct 6, 2010

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.