On 19/04/2016 09:19, Andrew Jones wrote: > On Fri, Apr 15, 2016 at 10:52:50PM +0200, Radim Krčmář wrote: >> SUMMARY line is present if the test uses lib/report. Summary contains >> some interesting information, so duplicating the output isn't that big >> of a cost. Our log redirection got more complicated, though. >> >> Signed-off-by: Radim Krčmář <rkrcmar@xxxxxxxxxx> >> --- >> run_tests.sh | 6 +++--- >> scripts/mkstandalone.sh | 3 +++ >> scripts/runtime.bash | 15 ++++++++++----- >> 3 files changed, 16 insertions(+), 8 deletions(-) >> >> diff --git a/run_tests.sh b/run_tests.sh >> index 7e0237f3aa11..2a0082163423 100755 >> --- a/run_tests.sh >> +++ b/run_tests.sh >> @@ -25,6 +25,7 @@ specify the appropriate qemu binary for ARCH-run. >> EOF >> } >> >> +RUNTIME_log_stdout="/dev/null" >> RUNTIME_arch_run="./$TEST_DIR/run" >> source scripts/runtime.bash >> >> @@ -47,12 +48,11 @@ while getopts "g:hv" opt; do >> done >> >> if [ "$PRETTY_PRINT_STACKS" = "yes" ]; then >> - log_redir="> >(./scripts/pretty_print_stacks.py \$kernel >> test.log)" >> + RUNTIME_log_stdout='>(./scripts/pretty_print_stacks.py $kernel >> test.log)' >> else >> - log_redir=">> test.log" >> + RUNTIME_log_stdout='test.log' >> fi >> >> -RUNTIME_arch_run="./$TEST_DIR/run $log_redir" >> config=$TEST_DIR/unittests.cfg >> rm -f test.log >> printf "BUILD_HEAD=$(cat build-head)\n\n" > test.log >> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh >> index ef15bc88a22a..ee01fe0c7777 100755 >> --- a/scripts/mkstandalone.sh >> +++ b/scripts/mkstandalone.sh >> @@ -68,6 +68,9 @@ generate_test () >> (echo "#!/bin/bash" >> cat scripts/arch-run.bash "$TEST_DIR/run") | temp_file RUNTIME_arch_run >> >> + echo "exec {stdout}>&1" >> + echo "RUNTIME_log_stdout='>(cat >&\$stdout)'" >> + >> cat scripts/runtime.bash >> >> echo "run ${args[@]}" >> diff --git a/scripts/runtime.bash b/scripts/runtime.bash >> index 59f0df080988..fc4be91d8727 100644 >> --- a/scripts/runtime.bash >> +++ b/scripts/runtime.bash >> @@ -6,6 +6,11 @@ PASS() { echo -ne "\e[32mPASS\e[0m"; } >> SKIP() { echo -ne "\e[33mSKIP\e[0m"; } >> FAIL() { echo -ne "\e[31mFAIL\e[0m"; } >> >> +extract_summary() >> +{ >> + tail -1 | grep '^SUMMARY: ' | sed 's/^SUMMARY: /(/;s/$/)/' >> +} >> + >> function run() >> { >> local testname="$1" >> @@ -55,18 +60,18 @@ function run() >> fi >> >> # extra_params in the config file may contain backticks that need to be >> - # expanded, so use eval to start qemu >> - eval $cmdline >> + # expanded, so use eval to start qemu. Same for $RUNTIME_log_stdout. >> + summary=$(eval $cmdline > >(eval "tee -a $RUNTIME_log_stdout" | extract_summary)) > > The depth of our stdout resolution is getting insane. Oh well, let's see > how deep we can go before we throw our hands up and just rewrite all these > bash scripts in python. Why not just use a pipe here? eval $cmdline 2>> $RUNTIME_log_stderr \ | eval tee -a "$RUNTIME_log_stdout" | extract_summary Anything I am missing? Paolo >> ret=$? >> >> if [ $ret -eq 0 ]; then >> - echo "`PASS` $1" >> + echo "`PASS` $1 $summary" >> elif [ $ret -eq 77 ]; then >> - echo "`SKIP` $1" >> + echo "`SKIP` $1 $summary" >> elif [ $ret -eq 124 ]; then >> echo "`FAIL` $1 (timeout; duration=$timeout)" >> else >> - echo "`FAIL` $1" >> + echo "`FAIL` $1 $summary" >> fi >> >> return $ret >> -- >> 2.8.1 >> > > Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx> > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html