On 08/19/2011 08:58 AM, Eric Blake wrote:
# Succeed, now: first shut down, then undefine, both via name.
-$abs_top_builddir/tools/virsh -q -c test:///default 'shutdown test; undefine
test'> out 2>&1
-test $? = 0 || fail=1
-cat<<\EOF> exp || fail=1
+$abs_top_builddir/tools/virsh -q -c test:///default \
+ 'shutdown test; undefine test; dominfo test'> out 2> err
Aargh - this points out a bug in virsh - we aren't calling fflush() in
between writes to stdout and stderr. If those two FILE* are mapped to
the same underlying file description (as is the case when you do 2>&1
redirection from the shell), then it is essential to flush in between
every transition between the two FILE* if you want the output to appear
in linear order. Without patching virsh, I had to split this into
capturing output in two files, with no sense of relationship between
timings, because my test run happened to flush stderr prior to stdout
and reverse the output from the expected linear ordering of when it was
produced.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org