| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| |
| Copyright MetaCommunications, Inc. 2003-2006. |
| |
| Distributed under the Boost Software License, Version 1.0. (See |
| accompanying file LICENSE_1_0.txt or copy at |
| http://www.boost.org/LICENSE_1_0.txt) |
| |
| --> |
| |
| <xsl:stylesheet |
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| xmlns:str="http://exslt.org/strings" |
| xmlns:set="http://exslt.org/sets" |
| xmlns:exsl="http://exslt.org/common" |
| xmlns:func="http://exslt.org/functions" |
| xmlns:meta="http://www.meta-comm.com" |
| extension-element-prefixes="func exsl str set" |
| exclude-result-prefixes="meta" |
| version="1.0"> |
| |
| <xsl:import href="common.xsl"/> |
| |
| <xsl:output method="html" |
| doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" |
| encoding="utf-8" |
| indent="yes" |
| /> |
| |
| <xsl:param name="source"/> |
| <xsl:param name="run_date"/> |
| <xsl:param name="comment_file"/> |
| <xsl:param name="explicit_markup_file"/> |
| |
| <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/> |
| <xsl:variable name="runner_id" select="test-run/@runner"/> |
| <xsl:variable name="revision" select="test-run/@revision"/> |
| <xsl:variable name="timestamp" select="test-run/@timestamp"/> |
| |
| <!-- runs / toolsets --> |
| <xsl:variable name="run_toolsets" select="meta:test_structure( /, 'no' )"/> |
| |
| <!-- libraries --> |
| <xsl:variable name="test_case_logs" select="//test-log[ meta:is_test_log_a_test_case(.) ]"/> |
| <xsl:variable name="libraries" select="set:distinct( $test_case_logs/@library )"/> |
| |
| <xsl:variable name="unusables_f"> |
| <xsl:for-each select="set:distinct( $run_toolsets//toolset/@name )"> |
| <xsl:variable name="toolset" select="."/> |
| <xsl:for-each select="$libraries"> |
| <xsl:variable name="library" select="."/> |
| <xsl:if test="meta:is_unusable_( $explicit_markup, $library, $toolset )"> |
| <unusable library-name="{$library}" toolset-name="{$toolset}"/> |
| </xsl:if> |
| </xsl:for-each> |
| </xsl:for-each> |
| </xsl:variable> |
| |
| <xsl:variable name="unusables" select="exsl:node-set( $unusables_f )"/> |
| |
| |
| <xsl:key |
| name="library-name_toolset-name_key" |
| match="unusable" |
| use="concat( @library-name, '>@<', @toolset-name )"/> |
| |
| |
| <!-- |
| Build a tree with the following structure: |
| |
| lib -> test -> toolsets -> test-log |
| --> |
| |
| <xsl:template match="/"> |
| <xsl:variable name="test_logs_to_show" select="//test-log"/> |
| <xsl:variable name="libs_test_test_log_tree" select="meta:restructure_logs( $test_logs_to_show )"/> |
| |
| <exsl:document href="debug.xml" |
| method="xml" |
| encoding="utf-8" |
| indent="yes"> |
| <debug> |
| <xsl:copy-of select="$libs_test_test_log_tree"/> |
| </debug> |
| </exsl:document> |
| |
| <xsl:for-each select="$libs_test_test_log_tree//toolset"> |
| <xsl:variable name="toolset" select="."/> |
| <xsl:variable name="library_name" select="$toolset/../../@name"/> |
| <xsl:variable name="test_name" select="$toolset/../@name"/> |
| <xsl:variable name="toolset_name" select="$toolset/@name"/> |
| <xsl:message>Processing test "<xsl:value-of select="$runner_id"/>/<xsl:value-of select="$library_name"/>/<xsl:value-of select="$test_name"/>/<xsl:value-of select="$toolset_name"/>"</xsl:message> |
| |
| <xsl:if test="count( $toolset/* ) > 1"> |
| <xsl:message> Processing variants</xsl:message> |
| |
| <xsl:variable name="variants_file_path" select="meta:output_file_path( concat( $runner_id, '-', $library_name, '-', $toolset_name, '-', $test_name, '-variants' ) )"/> |
| |
| <xsl:call-template name="write_variants_file"> |
| <xsl:with-param name="path" select="$variants_file_path"/> |
| <xsl:with-param name="test_logs" select="$toolset/*"/> |
| <xsl:with-param name="runner_id" select="$runner_id"/> |
| <xsl:with-param name="revision" select="$revision"/> |
| <xsl:with-param name="timestamp" select="$timestamp"/> |
| </xsl:call-template> |
| |
| <xsl:for-each select="str:tokenize( string( ' |_release' ), '|')"> |
| <xsl:variable name="release_postfix" select="translate(.,' ','')"/> |
| <xsl:for-each select="str:tokenize( string( 'developer|user' ), '|')"> |
| <xsl:variable name="directory" select="."/> |
| <xsl:variable name="variants__file_path" select="concat( $directory, '/', meta:encode_path( concat( $runner_id, '-', $library_name, '-', $toolset_name, '-', $test_name, '-variants_', $release_postfix ) ), '.html' )"/> |
| |
| <xsl:call-template name="write_variants_reference_file"> |
| <xsl:with-param name="path" select="$variants__file_path"/> |
| <xsl:with-param name="variants_file_path" select="concat( '../', $variants_file_path )"/> |
| <xsl:with-param name="release_postfix" select="$release_postfix"/> |
| </xsl:call-template> |
| </xsl:for-each> |
| </xsl:for-each> |
| </xsl:if> |
| |
| <xsl:for-each select="./test-log"> |
| <xsl:message> Processing test-log</xsl:message> |
| <xsl:variable name="test_log" select="."/> |
| |
| <xsl:if test="meta:show_output( $explicit_markup, $test_log )"> |
| <xsl:variable name="log_file_path" select="meta:log_file_path( ., $runner_id )"/> |
| |
| <xsl:call-template name="write_test_result_file"> |
| <xsl:with-param name="path" select="$log_file_path"/> |
| <xsl:with-param name="test_log" select="$test_log"/> |
| <xsl:with-param name="runner_id" select="$runner_id"/> |
| <xsl:with-param name="revision" select="$revision"/> |
| <xsl:with-param name="timestamp" select="$timestamp"/> |
| </xsl:call-template> |
| |
| <xsl:for-each select="str:tokenize( string( ' |_release' ), '|')"> |
| <xsl:variable name="release_postfix" select="translate(.,' ','')"/> |
| <xsl:for-each select="str:tokenize( string( 'developer|user' ), '|')"> |
| <xsl:variable name="directory" select="."/> |
| |
| <xsl:variable name="reference_file_path" select="concat( $directory, '/', meta:log_file_path( $test_log, $runner_id, $release_postfix ) )"/> |
| <xsl:call-template name="write_test_results_reference_file"> |
| <xsl:with-param name="path" select="$reference_file_path"/> |
| <xsl:with-param name="log_file_path" select="$log_file_path"/> |
| </xsl:call-template> |
| </xsl:for-each> |
| </xsl:for-each> |
| </xsl:if> |
| |
| </xsl:for-each> |
| </xsl:for-each> |
| </xsl:template> |
| |
| <func:function name="meta:restructure_logs"> |
| <xsl:param name="test_logs"/> |
| <xsl:variable name="libs" select="set:distinct( $test_logs/@library )"/> |
| <xsl:variable name="fragment"> |
| <runner runner_id="{$test_logs[1]/../@runner}" revision="{$test_logs[1]/../@revision}" timestamp="{$test_logs[1]/../@timestamp}"> |
| <xsl:for-each select="$libs"> |
| <xsl:variable name="library_name" select="."/> |
| <xsl:variable name="library_test_logs" select="$test_logs[@library=$library_name]"/> |
| <library name="{$library_name}"> |
| <xsl:variable name="tests" select="set:distinct( $library_test_logs/@test-name )"/> |
| <xsl:for-each select="$tests"> |
| <xsl:variable name="test_name" select="."/> |
| <xsl:variable name="test_test_logs" select="$library_test_logs[@test-name=$test_name]"/> |
| <test name="{$test_name}" > |
| <xsl:variable name="toolsets" select="set:distinct( $test_test_logs/@toolset )"/> |
| <xsl:for-each select="$toolsets"> |
| <xsl:variable name="toolset" select="."/> |
| <xsl:variable name="toolset_test_logs" select="$test_test_logs[@toolset=$toolset]"/> |
| <toolset name="{$toolset}"> |
| <xsl:copy-of select="$toolset_test_logs"/> |
| </toolset> |
| </xsl:for-each> |
| </test> |
| </xsl:for-each> |
| </library> |
| </xsl:for-each> |
| </runner> |
| </xsl:variable> |
| <func:result select="exsl:node-set( $fragment )"/> |
| </func:function> |
| |
| <xsl:template name="write_variants_reference_file"> |
| <xsl:param name="path"/> |
| <xsl:param name="variants_file_path"/> |
| <xsl:param name="release_postfix"/> |
| |
| <xsl:message> Writing variants reference file <xsl:value-of select="$path"/></xsl:message> |
| <exsl:document href="{$path}" |
| method="html" |
| doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" |
| encoding="utf-8" |
| indent="yes"> |
| <html> |
| <head> |
| <link rel="stylesheet" type="text/css" href="../master.css" title="master" /> |
| <!-- <title>Boost regression: <xsl:value-of select="$library_name"/>/<xsl:value-of select="$source"/></title>--> |
| </head> |
| <frameset cols="190px,*" frameborder="0" framespacing="0" border="0"> |
| <frame name="tocframe" src="toc{$release_postfix}.html" scrolling="auto"/> |
| <frame name="docframe" src="{$variants_file_path}" scrolling="auto"/> |
| </frameset> |
| </html> |
| </exsl:document> |
| |
| </xsl:template> |
| |
| <func:function name="meta:output_page_header"> |
| <xsl:param name="test_log"/> |
| <xsl:param name="runner_id"/> |
| <xsl:choose> |
| <xsl:when test="$test_log/@test-name != ''"> |
| <func:result select="concat( $runner_id, ' - ', $test_log/@library, ' - ', $test_log/@test-name, ' / ', $test_log/@toolset )"/> |
| </xsl:when> |
| <xsl:otherwise> |
| <func:result select="$test_log/@target-dir"/> |
| </xsl:otherwise> |
| </xsl:choose> |
| </func:function> |
| |
| |
| <xsl:template name="write_variants_file"> |
| <xsl:param name="path"/> |
| <xsl:param name="test_logs"/> |
| <xsl:param name="runner_id"/> |
| <xsl:param name="revision"/> |
| <xsl:param name="timestamp"/> |
| <xsl:message> Writing variants file <xsl:value-of select="$path"/></xsl:message> |
| <exsl:document href="{$path}" |
| method="html" |
| doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" |
| encoding="utf-8" |
| indent="yes"> |
| |
| <html> |
| <xsl:variable name="component" select="meta:output_page_header( $test_logs[1], $runner_id )"/> |
| <xsl:variable name="age" select="meta:timestamp_difference( $timestamp, $run_date )"/> |
| |
| <head> |
| <link rel="stylesheet" type="text/css" href="../master.css" title="master" /> |
| <title>Test output: <xsl:value-of select="$component"/></title> |
| </head> |
| |
| <body> |
| <div class="log-test-header"> |
| <div class="log-test-title"> |
| Test output: <xsl:value-of select="$component"/> |
| </div> |
| <div><span class="timestamp-{$age}"> |
| Rev <xsl:value-of select="$revision"/> / |
| <xsl:value-of select="meta:format_timestamp( $timestamp )"/> |
| </span></div> |
| </div> |
| |
| <div> |
| <b>Report Time: </b> <xsl:value-of select="meta:format_timestamp( $run_date )"/> |
| </div> |
| |
| <p>Output by test variants:</p> |
| <table> |
| <xsl:for-each select="$test_logs"> |
| <tr> |
| <td> |
| <xsl:choose> |
| <xsl:when test="meta:log_file_path(.,$runner_id) != ''"> |
| <a href="../{meta:log_file_path(.,$runner_id)}"> |
| <xsl:value-of select="@target-directory"/> |
| </a> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="@target-directory"/> |
| </xsl:otherwise> |
| </xsl:choose> |
| </td> |
| </tr> |
| </xsl:for-each> |
| </table> |
| </body> |
| </html> |
| </exsl:document> |
| </xsl:template> |
| |
| <xsl:template name="write_test_result_file"> |
| <xsl:param name="path"/> |
| <xsl:param name="test_log"/> |
| <xsl:param name="runner_id"/> |
| <xsl:param name="revision"/> |
| <xsl:param name="timestamp"/> |
| <xsl:message> Writing log file document <xsl:value-of select="$path"/></xsl:message> |
| |
| <exsl:document href="{$path}" |
| method="html" |
| doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" |
| encoding="utf-8" |
| indent="yes"> |
| |
| <html> |
| <xsl:variable name="component" select="meta:output_page_header( $test_log, $runner_id )"/> |
| <xsl:variable name="age" select="meta:timestamp_difference( $timestamp, $run_date )"/> |
| |
| <head> |
| <link rel="stylesheet" type="text/css" href="../master.css" title="master" /> |
| <title>Test output: <xsl:value-of select="$component"/></title> |
| </head> |
| |
| <body> |
| <div class="log-test-header"> |
| <div class="log-test-title"> |
| Test output: <xsl:value-of select="$component"/> |
| </div> |
| <div><span class="timestamp-{$age}"> |
| Rev <xsl:value-of select="$revision"/> / |
| <xsl:value-of select="meta:format_timestamp( $timestamp )"/> |
| </span></div> |
| </div> |
| |
| <div> |
| <b>Report Time: </b> <xsl:value-of select="meta:format_timestamp( $run_date )"/> |
| </div> |
| |
| <xsl:if test="notes/note"> |
| <p> |
| <div class="notes-title">Notes</div> |
| <xsl:call-template name="show_notes"> |
| <xsl:with-param name="notes" select="notes/note"/> |
| <xsl:with-param name="explicit_markup" select="$explicit_markup"/> |
| </xsl:call-template> |
| </p> |
| </xsl:if> |
| |
| <xsl:if test="compile"> |
| <p> |
| <div class="log-compiler-output-title">Compile [<xsl:value-of select="compile/@timestamp"/>]: <span class="output-{compile/@result}"><xsl:value-of select="compile/@result"/></span></div> |
| <pre><xsl:copy-of select="compile/node()"/></pre> |
| </p> |
| </xsl:if> |
| |
| <xsl:if test="link"> |
| <p> |
| <div class="log-linker-output-title">Link [<xsl:value-of select="link/@timestamp"/>]: <span class="output-{link/@result}"><xsl:value-of select="link/@result"/></span></div> |
| <pre><xsl:copy-of select="link/node()"/></pre> |
| </p> |
| </xsl:if> |
| |
| <xsl:if test="lib"> |
| <p> |
| <div class="log-linker-output-title">Lib [<xsl:value-of select="lib/@timestamp"/>]: <span class="output-{lib/@result}"><xsl:value-of select="lib/@result"/></span></div> |
| <p> |
| See <a href="{meta:encode_path( concat( $runner_id, '-', lib/node() ) ) }.html"> |
| <xsl:copy-of select="lib/node()"/> |
| </a> |
| </p> |
| </p> |
| </xsl:if> |
| |
| <xsl:if test="run"> |
| <p> |
| <div class="log-run-output-title">Run [<xsl:value-of select="run/@timestamp"/>]: <span class="output-{run/@result}"><xsl:value-of select="run/@result"/></span></div> |
| <pre> |
| <xsl:copy-of select="run/node()"/> |
| </pre> |
| </p> |
| </xsl:if> |
| |
| <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/> |
| </body> |
| |
| </html> |
| </exsl:document> |
| </xsl:template> |
| |
| |
| <xsl:template name="write_test_results_reference_file"> |
| <xsl:param name="path"/> |
| <xsl:param name="log_file_path"/> |
| <xsl:message> Writing log frame document <xsl:value-of select="$path"/></xsl:message> |
| <exsl:document href="{$path}" |
| method="html" |
| doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" |
| encoding="utf-8" |
| indent="yes"> |
| |
| <html> |
| <head> |
| <link rel="stylesheet" type="text/css" href="../master.css" title="master" /> |
| </head> |
| <frameset cols="190px,*" frameborder="0" framespacing="0" border="0"> |
| <frame name="tocframe" src="../toc.html" scrolling="auto"/> |
| <frame name="docframe" src="../../{$log_file_path}" scrolling="auto"/> |
| </frameset> |
| </html> |
| </exsl:document> |
| </xsl:template> |
| |
| </xsl:stylesheet> |