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

Re: [PATCH 0/4] Re: [PATCH 3/4] t: rev-parse-parents: avoid yoda conditions

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Sep 8, 2013, 04:52 UTC
Message-ID
<CAMP44s1uasvGmCMkMF2N0eTMgOdksG0HqeidXK+159HAi4jkpA@mail.gmail.com>
In-Reply-To
<20130908042649.GC14019@sigill.intra.peff.net>
On Sat, Sep 7, 2013 at 11:26 PM, Jeff King <peff@peff.net> wrote:
Show 19 quoted lines
> On Sat, Sep 07, 2013 at 11:13:10PM -0500, Felipe Contreras wrote:
>
>> > If the reasoning is "cmp(actual, expect) makes more sense to humans"
>> > then I do not think it is universal.
>>
>> No.
>>
>> ---
>> A(ny) sanely defined "compare A with B" function should yield the
>> result of subtracting B from A, i.e. cmp(A,B) should be like (A-B).
>> That is what you feed qsort() and bsearch() (it is not limited to C;
>> you see the same in "sort { $a <=> $b }").  The definition naturally
>> makes "cmp(A,B) < 0" like "A < B" and "cmp(A,B) > 0" like "A > B".
>> ---
>
> Ah, you mean "if you think that the compare function should behave like
> C *_cmp functions, it should be A-B". Perhaps it is simply that I do not
> think of the function in those terms, but more like "show me the
> differences from B to A".

But that is the problem, you are unable to ignore the implementation. You don't see test_cmp(), you see 'diff -u'.

Show 8 quoted lines
>> > Otherwise why would so many
>> > existing test frameworks do it the other way?
>>
>> Which many existing frameworks do it the other way?
>
> John mentioned JUnit, NUnit, and PHPUnit earlier in the thread. I
> believe that Ruby's Test::Unit::Assertions also has
> assert_equal(expected, actual).
That's because they all do first expect, then actual.

assert_equal( expected, actual, failure_message = nil ) assert_not_equal( expected, actual, failure_message = nil )

That's why.
Show 15 quoted lines
>> > Or any number of variations. I'm sure you will say "but those seem
>> > awkward and unlike how I think about it". But that was my point; it
>> > seems to be a matter of preference.
>>
>> Really? You think any sane human being would prefer:
>>
>> Computer, given that we expect B, how does A differ?
>>
>> To:
>>
>> Computer, compare A with B
>
> I already said that is how I think about it. If you want to call me notn
> sane, feel free. But I do not see that this line of discussion is going
> anywhere productive.

Again, that's because you are already thinking on the resulting diff, based on the 'diff -u' command, but that's not in question here. Even if test_cmp() didn't return an diff (it just ran cmp), it would be useful, as ultimately we want to test for failures. Ultimately what we want is to check that A is equal to B, so it's natural to tell the computer "compare A with B", and if you don't think so, then yeah, I think you are insane.

-- 
Felipe Contreras
Previous: Jeff KingNext: Jeff King
Message 34 of 45 in “t: rev-parse-parents: cleanups”
  1. 0/4 t: rev-parse-parents: cleanupsFelipe Contreras, Sep 2, 2013
  2. 1/4 t: rev-parse-parents: fix styleFelipe Contreras, Sep 2, 2013
  3. 2/4 t: rev-parse-parents: fix weird ! notationFelipe Contreras, Sep 2, 2013
  4. 3/4 t: rev-parse-parents: avoid yoda conditionsFelipe Contreras, Sep 2, 2013
  5. Jeff KingSep 3, 2013
  6. SZEDER GáborSep 3, 2013
  7. Jeff KingSep 3, 2013
  8. Felipe ContrerasSep 3, 2013
  9. SZEDER GáborSep 3, 2013
  10. Felipe ContrerasSep 3, 2013
  11. SZEDER GáborSep 3, 2013
  12. 0/4 Re: [PATCH 3/4] t: rev-parse-parents: avoid yoda conditionsJonathan Nieder, Sep 3, 2013
  13. 1/4 rev-parse test: modernize quoting and whitespaceJonathan Nieder, Sep 3, 2013
  14. 2/4 rev-parse test: use test_must_fail, not "if <command>; then false; fi"Jonathan Nieder, Sep 3, 2013
  15. Felipe ContrerasSep 3, 2013
  16. 3/4 rev-parse test: use test_cmp instead of "test" builtinJonathan Nieder, Sep 3, 2013
  17. Junio C HamanoSep 3, 2013
  18. Jonathan NiederSep 4, 2013
  19. Felipe ContrerasSep 3, 2013
  20. 4/4 rev-parse test: use standard test functions for setupJonathan Nieder, Sep 3, 2013
  21. 4/4 rev-parse test: use standard test functions for setupJonathan Nieder, Sep 3, 2013
  22. Jeff KingSep 3, 2013
  23. Felipe ContrerasSep 3, 2013
  24. Junio C HamanoSep 4, 2013
  25. John KeepingSep 4, 2013
  26. Junio C HamanoSep 4, 2013
  27. Jeff KingSep 4, 2013
  28. Junio C HamanoSep 4, 2013
  29. Felipe ContrerasSep 8, 2013
  30. Jeff KingSep 8, 2013
  31. Felipe ContrerasSep 8, 2013
  32. Felipe ContrerasSep 8, 2013
  33. Jeff KingSep 8, 2013
  34. Felipe ContrerasSep 8, 2013
  35. Jeff KingSep 8, 2013
  36. Felipe ContrerasSep 8, 2013
  37. Jeff KingSep 8, 2013
  38. Felipe ContrerasSep 9, 2013
  39. Junio C HamanoSep 8, 2013
  40. Felipe ContrerasSep 8, 2013
  41. Philip OakleySep 8, 2013
  42. Junio C HamanoSep 3, 2013
  43. Junio C HamanoSep 3, 2013
  44. Felipe ContrerasSep 3, 2013
  45. 4/4 t: rev-parse-parents: simplify setupFelipe Contreras, Sep 2, 2013

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.