Re: [PATCH 0/4] meson: parse TAP output generated by our tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 23/05/2025 17:40, Ramsay Jones wrote:
> 
> 
> On 23/05/2025 16:58, Junio C Hamano wrote:
>> Patrick Steinhardt <ps@xxxxxx> writes:
>>
>>> ... The problem is that we have a test that unexpectedly
>>> passes on macOS:
>>>
>>>     ▶  868/1023 - git grep .fi a                             UNEXPECTEDPASS
>>>
>>> The test in question is this one:
>>>
>>>     test_expect_failure !CYGWIN 'git grep .fi a' '
>>>         git grep .fi a
>>>     '
>>>
>>> The test passes if '.' matches a NUL byte, which we expect to only
>>> happen on Cygwin. 064eed36c7f (config.mak.uname: only set NO_REGEX on
>>> cygwin for v1.7, 2025-04-17) mentions that this behaviour was probably
>>> imported from FreeBSD, which makes me wonder whether macOS eventually
>>> also inherited the same code given its BSD lineage.
>>
>> Yup, I was wondering about the same thing.  Thanks for confirming.
>> It is unfortunate that we have blanket USES_BSD_REGEXP prerequisite
>> ;-)
>>
>>> I think we probably want something like the below patch to fix this. We
>>> could also have a prereq, but that prereq would look almost the exact
>>> same as the test. It does make me question the value of the test itself
>>> as the behaviour is completely platform specific.
> 
> Yep, I very nearly sent that patch with a hunk which deleted that
> test. In the end, I decided to play it more conservatively. :)
> 
>> Curious.
>>
>> Don't we run the same set of tests on macOS without Meson?  the
>> exact same test must be passing unexpectedly.  Why do we see the
>> complaint on only osx-meson job without osx-{clang,reftable,gcc}
>> jobs?
> 
> Yes, for about a decade, git built on cygwin with the system regex library
> would have shown an 'unexpected pass' on this test. However, unless you
> look for it, you wouldn't know; make and prove are quite happy with the
> situation, since it is an unexpected _pass_:
> 
>   $ git diff
>   diff --git a/t/t7815-grep-binary.sh b/t/t7815-grep-binary.sh
>   index b7d83f9a5d..3bd91da970 100755
>   --- a/t/t7815-grep-binary.sh
>   +++ b/t/t7815-grep-binary.sh
>   @@ -63,7 +63,7 @@ test_expect_success 'git grep ile a' '
>           git grep ile a
>    '
>    
>   -test_expect_failure !CYGWIN 'git grep .fi a' '
>   +test_expect_failure 'git grep .fi a' '
>           git grep .fi a
>    '
>    
>   $ cd t
>   $ ./t7815-grep-binary.sh
>   ok 1 - setup
>   ok 2 - git grep ina a
>   ok 3 - git grep -ah ina a
>   ok 4 - git grep -I ina a
>   ok 5 - git grep -c ina a
>   ok 6 - git grep -l ina a
>   ok 7 - git grep -L bar a
>   ok 8 - git grep -q ina a
>   ok 9 - git grep -F ile a
>   ok 10 - git grep -Fi iLE a
>   ok 11 - git grep ile a
>   not ok 12 - git grep .fi a # TODO known breakage
>   ok 13 - grep respects binary diff attribute
>   ok 14 - grep --cached respects binary diff attribute
>   ok 15 - grep --cached respects binary diff attribute (2)
>   ok 16 - grep revision respects binary diff attribute
>   ok 17 - grep respects not-binary diff attribute
>   ok 18 - setup textconv filters
>   ok 19 - grep does not honor textconv
>   ok 20 - grep --textconv honors textconv
>   ok 21 - grep --no-textconv does not honor textconv
>   ok 22 - grep --textconv blob honors textconv
>   # still have 1 known breakage(s)
>   # passed all remaining 21 test(s)
>   1..22
>   $ echo $?
>   0
>   $ 
> 
> Again, prove doesn't care:
> 
>   $ prove t7815-grep-binary.sh
>   t7815-grep-binary.sh .. ok    
>   All tests successful.
>   Files=1, Tests=22,  0 wallclock secs ( 0.03 usr  0.00 sys +  0.09 cusr  0.13 csys =  0.25 CPU)
>   Result: PASS
>   $ echo $?
>   0
>   $ 

Sigh! Of course, when I did the above I was on Linux! It looks like the
following on cygwin:

  $ ./t7815-grep-binary.sh
  ok 1 - setup
  ok 2 - git grep ina a
  ok 3 - git grep -ah ina a
  ok 4 - git grep -I ina a
  ok 5 - git grep -c ina a
  ok 6 - git grep -l ina a
  ok 7 - git grep -L bar a
  ok 8 - git grep -q ina a
  ok 9 - git grep -F ile a
  ok 10 - git grep -Fi iLE a
  ok 11 - git grep ile a
  ok 12 - git grep .fi a # TODO known breakage vanished
  ok 13 - grep respects binary diff attribute
  ok 14 - grep --cached respects binary diff attribute
  ok 15 - grep --cached respects binary diff attribute (2)
  ok 16 - grep revision respects binary diff attribute
  ok 17 - grep respects not-binary diff attribute
  ok 18 - setup textconv filters
  ok 19 - grep does not honor textconv
  ok 20 - grep --textconv honors textconv
  ok 21 - grep --no-textconv does not honor textconv
  ok 22 - grep --textconv blob honors textconv
  # 1 known breakage(s) vanished; please update test(s)
  # passed all remaining 21 test(s)
  1..22
  $ echo $?
  0
  $ 

Note that #12 is 'ok' and '... please update test(s)'

Sorry about that!

> When I tested the patch (without !CYGWIN) with 'meson test' it didn't care
> either - that was *before* Patrick's recent patch to make meson parse TAP
> output. ;)
> 
> Question: should meson (or indeed prove) fail the test because of an
> unexpected _pass_?

ATB,
Ramsay Jones






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux