From 96eda3cf61071acc6529dbe5667cd0790d4a6f95 Mon Sep 17 00:00:00 2001 From: Ben Elliston Date: Tue, 15 Aug 2017 16:09:26 +1000 Subject: Fix another bug reported by Andrey ``Bass'' Shcheglov. * lib/framework.exp (xml_tag): New proc. (log_summary): Use it. (record_test): Likewise. --- ChangeLog | 6 ++++++ lib/framework.exp | 24 +++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index eb99fbe..61cbbf5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2017-08-15 Ben Elliston + * lib/framework.exp (xml_tag): New proc. + (log_summary): Use it. + (record_test): Likewise. + +2017-08-15 Ben Elliston + * lib/framework.exp (open_logs): Set .xml filename correctly. * runtest.exp: Remove xml_file_name var. (usage): Update --xml option to not take an argument. diff --git a/lib/framework.exp b/lib/framework.exp index 414351b..b189a08 100644 --- a/lib/framework.exp +++ b/lib/framework.exp @@ -363,10 +363,16 @@ proc log_and_exit {} { exit $exit_status } +# Emit an XML tag, but escape XML special characters in the body. +proc xml_tag { tag body } { + set escapes { < < > > & & \" " ' ' } + return <$tag>[string map $escapes $body] +} + proc xml_output { message } { global xml_file if { $xml_file != "" } { - puts $xml_file "$message" + puts $xml_file $message } } @@ -435,9 +441,9 @@ proc log_summary { args } { set mess "# of $test_counts($x,name)" if { $xml } { xml_output " " - xml_output " $x" - xml_output " $mess" - xml_output " $val" + xml_output " [xml_tag result $x]" + xml_output " [xml_tag description $mess]" + xml_output " [xml_tag total $val]" xml_output " " } if { [string length $mess] < 24 } { @@ -695,11 +701,11 @@ proc record_test { type message args } { set output "" set output "expect_out(buffer)" xml_output " " - xml_output " [string trimright [lindex $rio 0]]" - xml_output " [string trimright [lindex $rio 1]]" - xml_output " $type" - xml_output " $message" - xml_output " $prms_id" + xml_output " [xml_tag input [string trimright [lindex $rio 0]]]" + xml_output " [xml_tag output [string trimright [lindex $rio 1]]]" + xml_output " [xml_tag result $type]" + xml_output " [xml_tag name $message]" + xml_output " [xml_tag prms_id $prms_id]" xml_output " " } -- cgit v1.1