The new test tests/env/env0-from fails on macOS, says the CI. Here's the log file:
FAIL: tests/env/env0-from ========================= ++ initial_cwd_=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build +++ testdir_prefix_ +++ printf gt ++ pfx_=gt +++ mktempd_ /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build gt-env0-from.sh.XXXX +++ case $# in +++ destdir_=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build +++ template_=gt-env0-from.sh.XXXX +++ MAX_TRIES_=4 +++ case $destdir_ in +++ destdir_slash_=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/ +++ case $template_ in ++++ unset TMPDIR +++ d=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL +++ case $d in +++ : +++ test -d /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL ++++ ls -dgo /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL +++ perms='drwx------ 2 64 Aug 17 19:30 /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL' +++ case $perms in +++ : +++ echo /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL +++ return ++ test_dir_=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL ++ cd /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL ++ case $srcdir in ++ srcdir=../.. ++ builddir=.. ++ export srcdir builddir ++ gl_init_sh_nl_=' ' ++ IFS=' ' ++ for sig_ in 1 2 3 13 15 +++ expr 1 + 128 ++ eval 'trap '\''Exit 129'\'' 1' +++ trap 'Exit 129' 1 ++ for sig_ in 1 2 3 13 15 +++ expr 2 + 128 ++ eval 'trap '\''Exit 130'\'' 2' +++ trap 'Exit 130' 2 ++ for sig_ in 1 2 3 13 15 +++ expr 3 + 128 ++ eval 'trap '\''Exit 131'\'' 3' +++ trap 'Exit 131' 3 ++ for sig_ in 1 2 3 13 15 +++ expr 13 + 128 ++ eval 'trap '\''Exit 141'\'' 13' +++ trap 'Exit 141' 13 ++ for sig_ in 1 2 3 13 15 +++ expr 15 + 128 ++ eval 'trap '\''Exit 143'\'' 15' +++ trap 'Exit 143' 15 ++ saved_IFS=' ' ++ IFS=: ++ new_PATH= ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /opt/homebrew/lib/ruby/gems/3.4.0/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /opt/homebrew/opt/[email protected]/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /opt/homebrew/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /opt/homebrew/sbin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /Users/runner/.cargo/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/local/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /Users/runner/.yarn/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /Users/runner/Library/Android/sdk/tools/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /Users/runner/Library/Android/sdk/platform-tools/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /Library/Frameworks/Python.framework/Versions/Current/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /bin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/sbin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin ++ for dir in '$PATH' ++ IFS=' ' ++ case "$dir" in ++ test -d /sbin/. ++ new_PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin ++ IFS=' ' ++ PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin ++ export PATH ++ trap remove_tmp_ EXIT + path_prepend_ ./src + test 1 '!=' 0 + path_dir_=./src + case $path_dir_ in + abs_path_dir_=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/./src + case $abs_path_dir_ in + PATH=/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/./src:/Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src:/opt/homebrew/lib/ruby/gems/3.4.0/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/runner/.cargo/bin:/usr/local/bin:/Users/runner/.yarn/bin:/Users/runner/Library/Android/sdk/tools:/Users/runner/Library/Android/sdk/platform-tools:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin + create_exe_shims_ /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/./src + case $EXEEXT in + return 0 + shift + test 0 '!=' 0 + export PATH + print_ver_ env + require_built_ env + skip_=no + for i in '"$@"' + case " $built_programs " in + test no = yes + test yes = yes + local i + for i in '$*' + env env --version env (GNU coreutils) 2026-08-17 Copyright (C) 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Richard Mlynarik, David MacKenzie, and Assaf Gordon. + CU_ENV0_FROM_PARENT=parent + CU_ENV0_FROM_REPLACE=parent + CU_ENV0_FROM_REMOVE=parent + export CU_ENV0_FROM_PARENT CU_ENV0_FROM_REPLACE CU_ENV0_FROM_REMOVE + printf '%s\0' CU_ENV0_FROM_REPLACE=file CU_ENV0_FROM_NEW=new CU_ENV0_FROM_REMOVE=file + QUOTING_STYLE=literal + env --env0-from=vars -u CU_ENV0_FROM_REMOVE CU_ENV0_FROM_REPLACE=operand + grep -E '^CU_ENV0_FROM_(NEW|PARENT|REMOVE|REPLACE)=' all + LC_ALL=C + sort + cat + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + QUOTING_STYLE=literal + env --env0-from=vars -i + LC_ALL=C + sort all + cat + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + QUOTING_STYLE=literal + env --env0-from=vars - + LC_ALL=C + sort all + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + printf 'A=line 1\nline 2\0' + env -i --env0-from=values -0 + compare values out + compare_dev_null_ values out + test 2 = 2 + test xvalues = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ values out + LC_ALL=C + diff -u values out + printf '=value\0' + env -i --env0-from=empty-name -0 + compare empty-name out + compare_dev_null_ empty-name out + test 2 = 2 + test xempty-name = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ empty-name out + LC_ALL=C + diff -u empty-name out + printf '%s\0' CU_ENV0_FROM_DUP=first CU_ENV0_FROM_DUP=last + QUOTING_STYLE=literal + env --env0-from=duplicates + grep '^CU_ENV0_FROM_DUP=' all + echo CU_ENV0_FROM_DUP=last + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + case $host_os in + printf 'A=old1\0opaque\0A=old2\0B=old\0' + printf 'A=new1\0C=new\0A=new2\0' + printf 'A=new2\0A=old2\0B=old\0C=new\0opaque\0' + LC_ALL=C + sort -z exp + env -i --env0-from=base /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src/env --env0-from=merge -0 + LC_ALL=C + sort -z all + compare exp-sorted out + compare_dev_null_ exp-sorted out + test 2 = 2 + test xexp-sorted = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp-sorted out + LC_ALL=C + diff -u exp-sorted out Binary files exp-sorted and out differ + fail=1 + printf 'B=old\0C=operand\0D=new\0opaque\0' + LC_ALL=C + sort -z exp + env -i --env0-from=base /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src/env --env0-from=merge -u A -0 C=operand D=new + LC_ALL=C + sort -z all + compare exp-sorted out + compare_dev_null_ exp-sorted out + test 2 = 2 + test xexp-sorted = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp-sorted out + LC_ALL=C + diff -u exp-sorted out Binary files exp-sorted and out differ + fail=1 + printf 'A=one\0' + printf 'B=two\0' + printf 'A=one\0B=two\0C=three\0' + env -i --env0-from=base-grow /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src/env --env0-from=merge-grow -0 C=three + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out Binary files exp and out differ + fail=1 + printf 'A=first\0opaque\0A=last\0\0=value\0B=\0' + env -i --env0-from=raw -0 + compare raw out + compare_dev_null_ raw out + test 2 = 2 + test xraw = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ raw out + LC_ALL=C + diff -u raw out + env -0 --env0-from=raw - + compare raw out + compare_dev_null_ raw out + test 2 = 2 + test xraw = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ raw out + LC_ALL=C + diff -u raw out + printf 'opaque\0\0=value\0B=changed\0C=new\0' + env -i --env0-from=raw -u A -0 B=changed C=new + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + printf 'A=one\0' + printf 'A=one\0B=two\0' + env -i --env0-from=one -0 B=two + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + printf 'A=stdin\0' + env -i --env0-from=- -0 + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + mkdir bin + cat + chmod +x bin/env0-from-command + printf 'PATH=%s\0' /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL/bin + echo found + env -i --env0-from=path env0-from-command + compare exp out + compare_dev_null_ exp out + test 2 = 2 + test xexp = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp out + LC_ALL=C + diff -u exp out + printf %s '' + env -i --env0-from=empty -0 + compare /dev/null out + compare_dev_null_ /dev/null out + test 2 = 2 + test x/dev/null = x/dev/null + test -s out + return 0 + return 0 + case $host_os in + printf 'A=file1\0opaque\0\0A=file2\0B=new\0' + printf 'A=file2\0opaque\0\0B=new\0' + LC_ALL=C + sort -z exp + env -i A=old /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/src/env --env0-from=mixed -0 + LC_ALL=C + sort -z all + compare exp-sorted out + compare_dev_null_ exp-sorted out + test 2 = 2 + test xexp-sorted = x/dev/null + test xout = x/dev/null + return 2 + case $? in + compare_ exp-sorted out + LC_ALL=C + diff -u exp-sorted out Binary files exp-sorted and out differ + fail=1 + printf A=unterminated + returns_ 125 env --env0-from=invalid + returns_ 125 env --env0-from=does-not-exist + returns_ 125 env --env0-from=empty -u '' true env: cannot unset '': Invalid argument + returns_ 125 env --env0-from=empty -u A=B true env: cannot unset 'A=B': Invalid argument + returns_ 125 env -i --env0-from=empty -u '' true env: cannot unset '': Invalid argument + returns_ 125 env -i --env0-from=empty -u A=B true env: cannot unset 'A=B': Invalid argument + Exit 1 + set +e + exit 1 + exit 1 + remove_tmp_ + __st=1 + cleanup_ + : + test '' = yes + cd /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build + chmod -R u+rwx /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL + rm -rf /Users/runner/work/ci-check/ci-check/coreutils-2026-08-17/build/gt-env0-from.sh.B5bL + exit 1 FAIL tests/env/env0-from.sh (exit status: 1)
