Bruno Haible wrote:
> Jim Meyering wrote:
>> --- a/tests/init.sh
>> +++ b/tests/init.sh
>> @@ -74,7 +74,7 @@ Exit () { set +e; (exit $1); exit $1; }
>> # the reason for skip/failure to console, rather than to the .log files.
>> : ${stderr_fileno_=2}
>>
>> -warn_ () { echo "$@" 1>&$stderr_fileno_; }
>> +warn_ () { eval 'echo "$@" 1>&'"$stderr_fileno_"; }
>> fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; }
>> skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; }
>> framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; }
>
> After applying this patch, here's the test-suite.log that I now get.
Thank you.
However, it looks like using "eval" didn't help at all.
What does this do on that system?
sh -c 'e=2; warn_ () { echo "$@" 1>&$e; }; warn_ x'
This is what happens via tests/check.mk:
printf '#!/bin/sh\ne=9; warn_ () { echo "$@" 1>&$e; }; warn_ x\n' > k
sh -c 'exec 9>&2; /bin/sh k'
Does that evoke a warning for you?
If so, does hard-coding the "9" help?
printf '#!/bin/sh\ne=9; warn_ () { echo "$@" 1>&9; }; warn_ x\n' > k
sh -c 'exec 9>&2; /bin/sh k'