diff options
Diffstat (limited to 'tools/regression/xsl_reports/xsl/v2/links_page.xsl')
-rw-r--r-- | tools/regression/xsl_reports/xsl/v2/links_page.xsl | 361 |
1 files changed, 361 insertions, 0 deletions
diff --git a/tools/regression/xsl_reports/xsl/v2/links_page.xsl b/tools/regression/xsl_reports/xsl/v2/links_page.xsl new file mode 100644 index 0000000000..7b1fa1c2e6 --- /dev/null +++ b/tools/regression/xsl_reports/xsl/v2/links_page.xsl @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + +Copyright MetaCommunications, Inc. 2003-2005. + +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"/> + + <!-- 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[ meta:show_output( $explicit_markup, . ) ]"/> + <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: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: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: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: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}"> + <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> + + <xsl:template name="write_variants_file"> + <xsl:param name="path"/> + <xsl:param name="test_logs"/> + <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> + <body> + <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)}" target="_top" > + <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: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"> + <xsl:choose> + <xsl:when test="$test_log/@test-name != ''"> + <div class="log-test-title"> + <xsl:value-of select="concat( $runner_id, ' - ', @library, ' - ', @test-name, ' / ', @toolset )"/> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@target-dir"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <head> + <link rel="stylesheet" type="text/css" href="../master.css" title="master" /> + <title>Test output: <xsl:value-of select="$component"/></title> + </head> + + <body> + <div> + <div class="log-test-title"> + Test output: <xsl:value-of select="$component"/> + </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">Compiler output [<xsl:value-of select="compile/@timestamp"/>]: + </div> + <pre> + <xsl:copy-of select="compile/node()"/> + </pre> + </p> + </xsl:if> + + <xsl:if test="link"> + <p> + <div class="log-linker-output-title">Linker output [<xsl:value-of select="link/@timestamp"/>]:</div> + <pre> + <xsl:copy-of select="link/node()"/> + </pre> + </p> + </xsl:if> + + <xsl:if test="lib"> + <p> + <div class="log-linker-output-title">Lib output [<xsl:value-of select="lib/@timestamp"/>]:</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 output [<xsl:value-of select="run/@timestamp"/>]:</div> + <pre> + <xsl:copy-of select="run/node()"/> + </pre> + </p> + </xsl:if> + + </div> + + <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> |