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

Re: [PATCH 2/3] t: add t0016-oidmap.sh

From
Jeff King <peff@peff.net>
Date
Jun 13, 2019, 17:19 UTC
Message-ID
<20190613171913.GA14055@sigill.intra.peff.net>
In-Reply-To
<20190609092259.GB24208@szeder.dev>
On Sun, Jun 09, 2019 at 11:22:59AM +0200, SZEDER Gábor wrote:
Show 17 quoted lines
> So, 'test oidmap' from the previous patch prints the value we want to
> check with:
> 
>     printf("%u\n", sha1hash(oid.hash));
> 
> First, since object ids inherently make more sense as hex values, it
> would be more appropriate to print that hash with the '%x' format
> specifier, and then we wouldn't need Perl's hex() anymore, and thus
> could swap the order of the first four bytes in oidmap's hash without
> relying on Perl, e.g. with:
> 
>   sed -e 's/^\(..\)\(..\)\(..\)\(..\).*/\4\3\2\1/'
> 
> Second, and more importantly, the need for swapping the byte order
> indicates that this test would fail on big-endian systems, I'm afraid.
> So I think we need an additional bswap32() on the printing side, and
> then could further simplify 'test_oidhash':

I agree with all your points about using hex and pushing the logic into test-oidmap.c. BUT.

At the point where we are normalizing byte order of the hashes, I have to wonder: why do we care about testing the hash value in the first place? We care that oidmap can store and retrieve values, and that it performs well. But as long as it does those things, I don't think anybody cares if it uses the first 4 bytes of the sha1 or the last 4.

I know there are testing philosophies that go to this level of white-box testing, but I don't think we usually do in Git. A unit test of oidmap's externally visible behavior seems like the right level to me.

-Peff
Previous: Junio C HamanoNext: SZEDER Gábor
Message 9 of 14 in “Test oidmap”
  1. 0/3 Test oidmapChristian Couder, Jun 9, 2019
  2. 1/3 t/helper: add test-oidmap.cChristian Couder, Jun 9, 2019
  3. 2/3 t: add t0016-oidmap.shChristian Couder, Jun 9, 2019
  4. SZEDER GáborJun 9, 2019
  5. Christian CouderJun 9, 2019
  6. SZEDER GáborJun 9, 2019
  7. Christian CouderJun 9, 2019
  8. Junio C HamanoJun 10, 2019
  9. Jeff KingJun 13, 2019
  10. SZEDER GáborJun 13, 2019
  11. Jeff KingJun 13, 2019
  12. Junio C HamanoJun 13, 2019
  13. Christian CouderJun 14, 2019
  14. 3/3 oidmap: use sha1hash() instead of static hash() functionChristian Couder, Jun 9, 2019

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.