* Eric Blake wrote on Wed, Jul 01, 2009 at 02:59:08PM CEST: > According to Ralf Wildenhues on 6/30/2009 3:21 PM: > > On AIX 5.3, the testsuite currently has 3 failures for me: > > > >> 111: autotest.at:266 Syntax error > >> autotest > > Let's deal with this one first.
> I can reproduce this sort of shell difference with something even simpler > (which also points out a zsh bug, at least for 4.3.9): [...] yes, my AIX experience is similar for bash and zsh (note that I removed them from my PATH for the testsuite run, specifically to catch issues with the native tools on this system). With AIX ksh, I get $ ksh '. ./tmp; echo $?' ksh: 0403-057 Syntax error at line 1 : `if' is not matched. $ ksh '(. ./tmp); echo $?' ksh: 0403-057 Syntax error at line 1 : `if' is not matched. 2 $ ksh93 '. ./tmp; echo $?' . ./tmp; echo $?[1]: .: syntax error at line 1: `if' unmatched. 3 $ > Does adding the subshell fix things for AIX like it did for ash? If so, > then we can modify lines 1364 and 1399 of lib/autotest/general.m4 to > source "$at_test_source" from within a subshell, and that should clean up > this testsuite failure (at the cost of one more fork per test, but when > has that stopped us before?). I won't push this commit until I get some > feedback from you. The patch causes other issues, because the code currently assumes that at least some information is transported from the test group code with shell variables: $ make check TESTSUITEFLAGS='-v -d -x 111' | 111. autotest.at:266: testing ... | + cat | + 1> ./package.m4 0< /tmp/sh880784.2 | + cat | + 1> ./micro-suite.at 0< /tmp/sh880784.3 | ../../autoconf/tests/autotest.at:266: autom4te --language=autotest -o micro-suite micro-suite.at | + autom4te --language=autotest -o micro-suite micro-suite.at | ../../autoconf/tests/autotest.at:266: $CONFIG_SHELL ./micro-suite | + ./micro-suite | stderr: | Is a directory | ./micro-suite[49]: /home/rwild/ac/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/111/micro-suite.dir/at-groups/1/: cannot create | stdout: | ## --------------------------------------------------- ## | ## GNU Nonsense 1.0 test suite: artificial test suite. ## | ## --------------------------------------------------- ## | 1: my only test | | ## ------------- ## | ## Test results. ## | ## ------------- ## | | 0 tests were successful. | ../../autoconf/tests/autotest.at:266: exit code was 0, expected 1 | micro-suite.log: | > ## --------------------------------------------------- ## | > ## GNU Nonsense 1.0 test suite: artificial test suite. ## | > ## --------------------------------------------------- ## | > | > micro-suite: command line was: | > $ ./micro-suite | > | > ## --------- ## | > ## Platform. ## | > ## --------- ## | | > uname -r = 3 | > uname -s = AIX | > uname -v = 5 | > | > /usr/bin/uname -p = powerpc | > /bin/uname -X = unknown | | > /usr/bin/oslevel = 5.3.0.0 | [...] | > ## ---------------- ## | > ## Tested programs. ## | > ## ---------------- ## | > | > ## ------------------ ## | > ## Running the tests. ## | > ## ------------------ ## | > micro-suite: starting at: Thu Jul 2 05:55:58 UTC 2009 | > micro-suite: ending at: Thu Jul 2 05:55:58 UTC 2009 | > micro-suite: test suite duration: 0h 0m 0s | > | > ## ------------- ## | > ## Test results. ## | > ## ------------- ## | > | > 0 tests were successful. | 111. : Is a directory | ./testsuite[49]: /home/rwild/ac/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/at-groups/111/: cannot create | | | ## ------------- ## | ## Test results. ## | ## ------------- ## | | 0 tests were successful. bash -x shows the error: $ cd tests/testsuite.dir/111 $ bash -x ./micro-suite [...] + at_fn_group_postprocess + cd /home/rwild/ac/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/111/micro-suite.dir + test '!' -f /home/rwild/ac/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/111/micro-suite.dir/at-groups/1/check-line + : printf %s '1. : ' + printf %s '1. : ' + case $at_xfail:$at_status in + echo '' ./micro-suite: line 1545: /home/rwild/ac/build-powerpc-ibm-aix5.3.0.0/tests/testsuite.dir/111/micro-suite.dir/at-groups/1/: Is a directory + test 1 -ne 1 + printf '%s\n' ' ' + at_log_msg='1. (): ' + case $at_status in + printf '%s\n' '1. (): ' + at_fn_create_debugging_script Both $at_xfail and $at_status are empty at the 'case', causing $at_res to not be set; and this happens because the result is not propagated from the subshell. Cheers, Ralf
