On Sun, Mar 18, 2012 at 11:57:08PM +0900, Julio Merino wrote: > >But why is stderr being involved? > > If you really want to ignore stderr in the test, pass "-e ignore" to > atf_check. The default is "-o empty -e empty". > > Now, the question is: do you really want to ignore the message, or do > you want to validate that the appropriate error message is printed? If > the later (which should be the preferred way), "-e inline:'foo bar\n'" > or "-e match:'foo bar'" or "-e file:experr" (with experr being > pre-populated with the expected message) will do the job.
Thanks; this was pointed out already. But I have a related question. Supposedly ATF uses something like freopen(3) to capture the output in the standard streams. Now consider this from one test I just added: $ find /etc -type f -exit $ echo $? 0 All good; exited without nothing printed to stderr and the status is zero. But this: atf_check -o ignore \ -s exit:0 -x "find /etc -type f -exit" yields tc-so:Executing command [ /bin/sh -c find /etc -type f -exit ] tc-se:Fail: incorrect exit status: 1, expected: 0 tc-se:stdout: tc-se: tc-se:stderr: tc-se:find: fts_read: Inappropriate ioctl for device tc-se: tc-end: 1332083101.965143, exit, failed, atf-check failed; see the output of the test for details So what is going on here? Likewise $ find / -exit 99 $ echo $? 99 contra atf_check -o ignore -e ignore -s exit:99 -x "find / -exit 99" and tc-so:Executing command [ /bin/sh -c find / -exit 99 ] tc-se:Fail: incorrect exit status: 1, expected: 99 tc-se:stdout: tc-se: tc-se:stderr: tc-se:find: fts_read: Inappropriate ioctl for device tc-se: tc-end: 1332083172.374247, exit_status, failed, atf-check failed; see the output of the test for details - Jukka.