On Saturday, February 10, 2024 1:14 PM, I wrote: >I encountered a new problem on git 2.44.0-rc0 for test t0080.1. Run very verbose >(--verbose -x): > >++ cat >++ /home/randall/git/t/unit-tests/bin/t-basic >++ test_cmp expect actual >++ test 2 -ne 2 >++ eval 'diff -u' '"$@"' >+++ diff -u expect actual >--- expect 2024-02-10 18:04:28 +0000 >+++ actual 2024-02-10 18:04:28 +0000 >@@ -1,43 +1,43 @@ > ok 1 - passing test > ok 2 - passing test and assertion return 1 -# check "1 == 2" failed at t/unit-tests/t- >basic.c:76 >+# check "1 == 2" failed at /home/randall/git/t/unit-tests/t-basic.c:76 > # left: 1 > # right: 2 > not ok 3 - failing test > ok 4 - failing test and assertion return 0 not ok 5 - passing TEST_TODO() # TODO >ok 6 - passing TEST_TODO() returns 1 -# todo check 'check(x)' succeeded at t/unit- >tests/t-basic.c:25 >+# todo check 'check(x)' succeeded at >/home/randall/git/t/unit-tests/t-basic.c:25 > not ok 7 - failing TEST_TODO() > ok 8 - failing TEST_TODO() returns 0 >-# check "0" failed at t/unit-tests/t-basic.c:30 >+# check "0" failed at /home/randall/git/t/unit-tests/t-basic.c:30 > # skipping test - missing prerequisite >-# skipping check '1' at t/unit-tests/t-basic.c:32 >+# skipping check '1' at /home/randall/git/t/unit-tests/t-basic.c:32 > ok 9 - test_skip() # SKIP > ok 10 - skipped test returns 1 > # skipping test - missing prerequisite > ok 11 - test_skip() inside TEST_TODO() # SKIP ok 12 - test_skip() inside >TEST_TODO() returns 1 -# check "0" failed at t/unit-tests/t-basic.c:48 >+# check "0" failed at /home/randall/git/t/unit-tests/t-basic.c:48 > not ok 13 - TEST_TODO() after failing check ok 14 - TEST_TODO() after failing check >returns 0 -# check "0" failed at t/unit-tests/t-basic.c:56 >+# check "0" failed at /home/randall/git/t/unit-tests/t-basic.c:56 > not ok 15 - failing check after TEST_TODO() ok 16 - failing check after TEST_TODO() >returns 0 -# check "!strcmp("\thello\\", "there\"\n")" failed at >t/unit-tests/t-basic.c:61 >+# check "!strcmp("\thello\\", "there\"\n")" failed at >/home/randall/git/t/unit-tests/t-basic.c:61 > # left: "\011hello\\" > # right: "there\"\012" >-# check "!strcmp("NULL", NULL)" failed at t/unit-tests/t-basic.c:62 >+# check "!strcmp("NULL", NULL)" failed at >/home/randall/git/t/unit-tests/t-basic.c:62 > # left: "NULL" > # right: NULL >-# check "'a' == '\n'" failed at t/unit-tests/t-basic.c:63 >+# check "'a' == '\n'" failed at >+/home/randall/git/t/unit-tests/t-basic.c:63 > # left: 'a' > # right: '\012' >-# check "'\\' == '\''" failed at t/unit-tests/t-basic.c:64 >+# check "'\\' == '\''" failed at >/home/randall/git/t/unit-tests/t-basic.c:64 > # left: '\\' > # right: '\'' > not ok 17 - messages from failing string and char comparison -# BUG: test has no >checks at t/unit-tests/t-basic.c:91 >+# BUG: test has no checks at >+/home/randall/git/t/unit-tests/t-basic.c:91 > not ok 18 - test with no checks > ok 19 - test with no checks returns 0 > 1..19 >error: last command exited with $?=1 > >The diff appears to have failed because of an assumption of how paths are resolved >during compilation. The assumption is that files remain partially qualified, which is >not the case in all C compilers. This is c99. My experience with gcc is that it qualifies >names differently than other compilers. It might be useful to pipe to sed to strip >${HOME}/ when building the actual file, something like: > >sed -i "1,\$s/${HOME}\//g" actual # Not that that will actually work >because sed will process /. A different delimiter would work. > >Randall Putting the sed command in, as follows: diff --git a/t/t0080-unit-test-output.sh b/t/t0080-unit-test-output.sh index 6657c114a3..eaf25f2ddc 100755 --- a/t/t0080-unit-test-output.sh +++ b/t/t0080-unit-test-output.sh @@ -52,7 +52,7 @@ test_expect_success 'TAP output from unit tests' ' 1..19 EOF - ! "$GIT_BUILD_DIR"/t/unit-tests/bin/t-basic >actual && + ! "$GIT_BUILD_DIR"/t/unit-tests/bin/t-basic | sed "s?/.*/t/?t/?" >actual && test_cmp expect actual ' still results in a problem. The ! in the above line is being interpreted incorrectly: diff expect actual 27c27 < # check "!strcmp("\thello\\", "there"\n")" failed at t/unit-tests/t-basic.c:61 --- > # check "!strcmp("\thello\\", "there\"\n")" failed at t/unit-tests/t-basic.c:61 29c29 < # right: "there"\012" --- > # right: "there\"\012" I am not convinced the test is working properly. The ! appears to be causing /bin/ksh to be invoked instead of bash. If I remove !, the test works correctly. Did we not have issues with using ! in the past? --Randall -- Brief whoami: NonStop&UNIX developer since approximately UNIX(421664400) NonStop(211288444200000000) -- In real life, I talk too much.