Author: jsong
Date: Fri Aug  6 15:05:47 2004
New Revision: 36050

Added:
   incubator/beehive/trunk/controls/test/infra/gtlf/
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/ReportFormat.xml
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/TestReport.xsl
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/build.xml
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/junit.css
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/reportutils.jar   
(contents, props changed)
   incubator/beehive/trunk/controls/test/infra/gtlf/xsl/windowFrameScript.xml
   incubator/beehive/trunk/controls/test/infra/tch/runtime/
   incubator/beehive/trunk/controls/test/infra/tch/runtime/build.xml
Modified:
   incubator/beehive/trunk/controls/test/build.xml
Log:
Add tch report function. 


Modified: incubator/beehive/trunk/controls/test/build.xml
==============================================================================
--- incubator/beehive/trunk/controls/test/build.xml     (original)
+++ incubator/beehive/trunk/controls/test/build.xml     Fri Aug  6 15:05:47 2004
@@ -128,7 +128,7 @@
             failonerror="true"
             >
             <classpath>
-               <pathelement location="tools/milton/milton.jar"/>
+               <pathelement location="${milton.jar}"/>
             </classpath>
         </javac>
         <property name="_build.test.drivers.ran" value="true"/>
@@ -145,7 +145,7 @@
             verbose="false"
             failonerror="true">
             <classpath>
-               <pathelement location="tools/milton/milton.jar"/>
+               <pathelement location="${milton.jar}"/>
                <pathelement path="${build.tests.driver}"/>
             </classpath>
         </javac>
@@ -178,6 +178,7 @@
     
     <target name="run">
         <property name="test-suite" value="${junit.src.dir}/root.xml"/>
+       <property name="tch.base-logfile-name" value="tch"/>
 
 
        <tch tchHome="${tch.home}"
@@ -188,34 +189,14 @@
 
 
 
-        <arg value="-emacs"/>
-       <property name="tch.replication.entry-point" value="ant -f 
${controls.test.dir}/build.xml run"/>
+            <arg value="-emacs"/>
+            <property name="tch.replication.entry-point" value="ant -f 
${controls.test.dir}/build.xml run"/>
+        </tch>
 
-
-            
-       </tch>
-
-       
-        <!--
-       <peanut peanutHome="${peanut.home}" testfile="${test-suite}" 
fork="true">  
-
-        <classpath>
-          <pathelement path="${ant.jar}"/>
-          <pathelement path="${os.ANT_HOME}/lib/ant-launcher.jar"/>
-          <pathelement path="${tools.jar}"/>
-          <pathelement path="${junit.jar}"/>
-          <pathelement path="${velocity14.jar}"/>
-          <pathelement path="${velocitydep14}.jar"/>
-          <pathelement path="${servlet24.jar}"/>
-          <pathelement path="../build/jars/controls.jar"/>
-          <pathelement location="${build.beans}" />
-          <pathelement location="tools/milton/milton.jar"/>
-          <pathelement path="${build.tests.driver}"/>
-             <pathelement location="${build.tests}" />
-             <pathelement location="${peanut.jar}" />
-        </classpath>
        
-      </peanut>
-        -->
+       <ant antfile="${controls.test.infra.dir}/tch/runtime/build.xml" 
target="generate-html-log" dir="${basedir}">
+               <property name="gtlf.file" 
value="${basedir}/${tch.base-logfile-name}.xml"/>
+               <property name="output.file" 
value="${basedir}/${tch.base-logfile-name}.html"/>
+        </ant>
     </target>  
 </project>

Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/ReportFormat.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/ReportFormat.xml       
Fri Aug  6 15:05:47 2004
@@ -0,0 +1,116 @@
+  <!-- controls the sections that should be part of the diff report
+  
+  The user can specify a comma separated list of sections they area interested
+  in
+
+  for e.g. result-Summary,setup
+
+  The sections are
+
+  report-Summary
+  report-summary-error-list
+  result-Summary
+  result-Detail
+  error-Summary
+  error-Detail
+  files
+  setup
+  help
+  p4-Changes
+  webclarify-crs
+  all - all the sections are displayed
+
+  The report summary is always displayed.
+
+  -->
+  <xsl:param name="sections">all</xsl:param>
+
+
+  <!-- controls the display of navigation tools in the diff report
+            controls the navigation tools that will be available
+             in the report. You can specify a comma separated list 
+             of the navigation tools
+
+             The navigation tools are:
+
+             all      - all the tools are displayed
+             menu     - menu of the report
+             toolbar  - toolbar of the report
+             top      - top link displayed in different report
+                        sections
+             split    - Capibility to split the page horizontally
+                        and vertically.
+
+
+  -->
+  <xsl:param name="navigationTools">all</xsl:param>
+  <xsl:param name="reportSummaryErrorListCount">5</xsl:param>
+  <xsl:param name="reportSummaryErrorListHyperlinkPrefix">NA</xsl:param>
+
+  <xsl:variable name="allTool">all</xsl:variable>
+  <xsl:variable name="menuNavigationTool">menu</xsl:variable>
+  <xsl:variable name="toolbarNavigationTool">toolbar</xsl:variable>
+  <xsl:variable name="splitNavigationTool">split</xsl:variable>
+  <xsl:variable name="topNavigationTool">top</xsl:variable>
+
+  <xsl:variable name="showMenuNavigationTool"
+                select="contains($navigationTools,$allTool) or
+                        contains($navigationTools,$menuNavigationTool)"/>
+  <xsl:variable name="showToolbarNavigationTool"
+                select="contains($navigationTools,$allTool) or
+                        contains($navigationTools,$toolbarNavigationTool)"/>
+  <xsl:variable name="showSplitNavigationTool"
+                select="contains($navigationTools,$allTool) or
+                        contains($navigationTools,$splitNavigationTool)"/>
+  <xsl:variable name="showTopNavigationTool"
+                select="contains($navigationTools,$allTool) or
+                        contains($navigationTools,$topNavigationTool)"/>
+
+
+  <xsl:variable name="reportSummarySection">report-summary</xsl:variable>
+  <xsl:variable 
+    
name="reportSummaryErrorListSubSection">report-summary-error-list</xsl:variable>
+  <xsl:variable name="resultSummarySection">result-summary</xsl:variable>
+  <xsl:variable name="resultDetailSection">result-detail</xsl:variable>
+  <xsl:variable name="errorSummarySection">error-summary</xsl:variable>
+  <xsl:variable name="errorDetailSection">error-detail</xsl:variable>
+  <xsl:variable name="p4ChangesSection">p4-changes</xsl:variable>
+  <xsl:variable name="webclarifyCrsSection">webclarify-crs</xsl:variable>
+  <xsl:variable name="setupSection">setup</xsl:variable>
+  <xsl:variable name="filesSection">files</xsl:variable>
+  <xsl:variable name="helpSection">help</xsl:variable>
+  <xsl:variable name="allSection">all</xsl:variable>
+
+  <xsl:variable name="showReportSummarySection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$reportSummarySection)"/>
+  <xsl:variable name="showReportSummaryErrorListSubSection"
+                select="contains($sections,$allSection) or
+                        
contains($sections,$reportSummaryErrorListSubSection)"/>
+  <xsl:variable name="showResultSummarySection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$resultSummarySection)"/>
+  <xsl:variable name="showResultDetailSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$resultDetailSection)"/>
+  <xsl:variable name="showErrorSummarySection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$errorSummarySection)"/>
+  <xsl:variable name="showErrorDetailSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$errorDetailSection)"/>
+  <xsl:variable name="showP4ChangesSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$p4ChangesSection)"/>
+  <xsl:variable name="showWebclarifyCrsSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$webclarifyCrsSection)"/>
+  <xsl:variable name="showSetupSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$setupSection)"/>
+  <xsl:variable name="showFilesSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$filesSection)"/>
+  <xsl:variable name="showHelpSection"
+                select="contains($sections,$allSection) or
+                        contains($sections,$helpSection)"/>

Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/TestReport.xsl
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/TestReport.xsl Fri Aug 
 6 15:05:47 2004
@@ -0,0 +1,2389 @@
+<?xml version="1.0"?>
+<!DOCTYPE
+  xsl:stylesheet
+  [
+    <!ENTITY report-format SYSTEM "ReportFormat.xml">
+    <!ENTITY window-frame-script SYSTEM "windowFrameScript.xml">
+  ]
+>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+     xmlns:java="java" xmlns:org="org" version="1.0">
+
+
+  <!-- global param -->
+  <xsl:param name="instrument">0</xsl:param>
+  <xsl:param name="showFeatureInfo">0</xsl:param>
+  <xsl:param name="showTestfiles">0</xsl:param>
+  <xsl:param name="filebasename">myrun</xsl:param>
+  <xsl:param name="feature">NONE</xsl:param>
+  <xsl:param name="showWebclarifyCrs">0</xsl:param>
+  <xsl:param name="zipFiles">false</xsl:param>
+  <xsl:param name="zipFileName">myrun.zip</xsl:param>
+  <xsl:param name="gtlfFileName">myrun.gtlf.xml</xsl:param>
+  <xsl:param name="testFiles"> </xsl:param>
+  <xsl:param name="cssFile">junit</xsl:param>
+  <xsl:param name="showSuccessInErrorSummary">0</xsl:param>
+  <xsl:param name="reportSectionOrder">result-focus</xsl:param>
+
+  <xsl:param name="showTheFilters">1</xsl:param>
+  &report-format;
+
+  <xsl:output method="html"/>
+
+  <!--
+
+  Structure of the xml
+  =====================
+
+    (root)
+    test-log (1) 
+     |
+      environment (1) 
+     |    |
+     |     env-attribute (1) { name, value }
+     |
+      header-info (1) { execaccount, execdate, checksum, harnesstype,
+     |                  importinfo, testruntype }
+     |
+      test-result (1.*) { exectime, result, isdone, logicalname, duration}
+       |
+        test-case (1) {testcsename, testunit, testpath}
+       |
+        execution-output (1)
+       | 
+        output-details (1)
+       |
+        test-replication(0 - 1) 
+           |
+             info
+           |
+            command-line
+               |
+                unix
+               |
+                win
+
+  -->
+
+  <xsl:template match="/test-log">
+    <html>
+      <head>
+        <xsl:call-template name="javascripts"/>
+      </head>
+      <body>
+        <!-- FILTER SCRIPTS -->
+        <xsl:call-template name="filterScript"/>
+        <!-- TOOLTIP SCRIPTS -->
+        <xsl:call-template name="tooltipScript"/>
+
+        <!-- WINDOW Frame SCRIPTS -->
+        <xsl:if test="$showSplitNavigationTool">
+          <xsl:call-template name="windowFrameScripts"/>
+        </xsl:if>
+
+        <!-- MENU -->
+        <xsl:if test="$showMenuNavigationTool">
+          <xsl:call-template name="sidemenu"/>
+        </xsl:if>
+
+        <!-- HEADER -->
+        <xsl:if test="$showToolbarNavigationTool">
+          <xsl:call-template name="header"/>
+        </xsl:if>
+
+        <!-- POPULATE DataStructures-->
+        <!--
+        <xsl:call-template name="createDataStructure"/>
+        -->
+
+      <!-- RESULT SUMMARY -->
+      <xsl:if test="$showResultSummarySection">
+         <xsl:call-template name="summary"/>
+      </xsl:if>
+
+       <!-- REPORT SUMMARY -->
+       <xsl:if test="$showReportSummarySection">
+          <xsl:call-template name="reportSummary"/>
+       </xsl:if>
+
+        <!-- display the report sections in the order specified -->
+        <xsl:choose>
+          <xsl:when test="contains(string($reportSectionOrder),'error-focus')">
+
+            <!-- ERROR DETAIL -->
+            <xsl:if test="$showErrorDetailSection">
+              <xsl:call-template name="testResultWithErrors"/>
+            </xsl:if>
+
+            <!-- ERROR SUMMARY -->
+            <xsl:if test="$showErrorSummarySection">
+              <xsl:call-template  name="testResultErrorSummary"/>
+            </xsl:if>
+
+            <!-- RESULT DETAIL -->
+            <xsl:if test="$showResultDetailSection">
+              <xsl:call-template name="summaryByTestUnit"/>
+            </xsl:if>
+    
+            <!-- FILES -->
+            <xsl:call-template name="files"/>
+    
+            <!-- USEFUL COMMANDS -->
+            <xsl:if test="$showHelpSection">
+              <xsl:call-template name="testCommands"/>
+            </xsl:if>
+    
+            <!-- SETUP -->
+            <xsl:if test="$showSetupSection">
+              <xsl:call-template name="metaInfo"/>
+            </xsl:if>
+    
+          </xsl:when>
+          <xsl:otherwise>
+
+    
+            <!-- RESULT DETAIL -->
+            <xsl:if test="$showResultDetailSection">
+              <xsl:call-template name="summaryByTestUnit"/>
+            </xsl:if>
+    
+            <!-- ERROR SUMMARY -->
+            <xsl:if test="$showErrorSummarySection">
+              <xsl:call-template  name="testResultErrorSummary"/>
+            </xsl:if>
+    
+            <!-- FILES -->
+            <xsl:if test="$showFilesSection">
+              <xsl:call-template name="files"/>
+            </xsl:if>
+    
+            <!-- USEFUL COMMANDS -->
+            <xsl:if test="$showHelpSection">
+              <xsl:call-template name="testCommands"/>
+            </xsl:if>
+    
+            <!-- SETUP -->
+            <xsl:if test="$showSetupSection">
+              <xsl:call-template name="metaInfo"/>
+            </xsl:if>
+    
+            <!-- ERROR DETAIL -->
+            <xsl:if test="$showErrorDetailSection">
+              <xsl:call-template name="testResultWithErrors"/>
+            </xsl:if>
+
+          </xsl:otherwise>
+        </xsl:choose>
+
+
+
+      </body>
+    </html>
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        CREATE DATA STRUCTURES                     -->
+  <!-- ================================================================ -->
+  <xsl:template name="createDataStructure">
+
+        <xsl:call-template name="recordTime">
+          <xsl:with-param 
+            name="message"> Creating dataStructures: </xsl:with-param>
+        </xsl:call-template>
+
+        <!-- build the hashmap of first and second result in ReportUtils -->
+        <xsl:for-each 
+          select="/diff/first/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+        @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+        @result = 'ABANDONED' or @result = 'SCRATCH']">
+           <xsl:variable name="result" select="."/>
+           <xsl:variable name="dummy" 
+             
select="org:apache.beehive.test.tools.tchTools.xsl.util.ReportUtils.putFirstResultPosition(concat($result/test-case/@testunit,'.',$result/@logicalname),position())"/>
+        </xsl:for-each>
+    
+  </xsl:template>
+
+  <!-- File test information -->
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        FILES                                      -->
+  <!-- ================================================================ -->
+  <xsl:template name="files">
+    <hr width="100%" size="2"/>
+    <a name="files"/>
+    <center><h2> Files <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>
+
+    <table id="filesTable"  class="details" border="1" cellspacing="0">
+      <tr>
+        <th class="name"> 
+          Test log files: 
+        </th>
+        <td>
+           [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+              select="$filebasename"/>.log</xsl:attribute> Log</a>]
+           [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+              select="$filebasename"/>.debug</xsl:attribute> Debug </a>]
+           [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+             select="$filebasename"/>.debug-all</xsl:attribute> Debug all  
</a>]
+         </td>
+      </tr>
+       <tr>
+         <th class="name"> 
+           OtherTest Framework files: 
+         </th>
+         <td>
+           [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+             select="$filebasename"/>.gtlf.xml</xsl:attribute> test gtlf </a>]
+         </td>
+       </tr>
+      <tr>
+         <th class="name"> 
+           Test output: 
+         </th>
+         <td>
+           [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+          select="$filebasename"/>.out</xsl:attribute> test standard 
output</a>]
+         </td>
+       </tr>
+      <xsl:if test="$showTestfiles = 1">
+        <tr>
+          <td colspan="2" bgcolor="#ffffe0">
+            <br/>
+            <b><center>files modified/created in test subdir:</center></b>
+            <p/>
+            <xsl:if test="$zipFiles = 'true'">
+              <b><center>Zip of files found below: 
+                <a><xsl:attribute 
+                  name="href"><xsl:value-of 
+                  select="$zipFileName"/></xsl:attribute><xsl:value-of 
+                  select="$zipFileName"/>
+                </a>
+              </center></b>
+              <p/>
+            </xsl:if>
+            <b><font color="red">NOTE: </font></b>
+            This information will be invalid if incorrect value is passed for
+            property <i>first.file</i>. For more information, run 
+            <i>ant -f build-Test.xml test.report.help
+            </i>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2"> 
+            <div style="width:100%;height:200px;color: green;overflow:scroll">
+                <xsl:value-of select="$testFiles"  
+                              disable-output-escaping="yes"/>
+            </div>
+          </td>
+        </tr>
+      </xsl:if>
+      </table>
+
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        TEST SETUP                                 -->
+  <!-- ================================================================ -->
+  <xsl:template name="metaInfo">
+    <hr width="100%" size="2"/>
+    <a name="metaInfo"/>
+    <center><h2> Setup <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>
+
+    <table id="setupTable"   class="details" border="1" cellspacing="0">
+      <tr>
+        <th class="name"> Name </th>
+        <th class="value"> Value </th>
+      </tr>
+      <tr>
+        <td> Test type </td>
+        <td> <xsl:value-of select="@testtype"/> </td>
+      </tr>
+      <tr>
+        <td> Release </td>
+        <td> <xsl:value-of select="@release"/> </td>
+      </tr>
+      <tr>
+        <td> Load </td>
+        <td> <xsl:value-of select="@load"/> </td>
+      </tr>
+      <tr>
+        <td> Branch </td>
+        <td> <xsl:value-of select="@branch"/> </td>
+      </tr>
+      <tr>
+        <td> String </td>
+        <td> <xsl:value-of select="@string"/> </td>
+      </tr>
+      <tr>
+        <td> Change number </td>
+        <td> <xsl:value-of select="@changenumber"/> </td>
+      </tr>
+      <tr>
+        <td> Analyzer </td>
+        <td> <xsl:value-of select="@analyzer"/> </td>
+      </tr>
+      <tr>
+        <td> Hostname </td>
+        <td> <xsl:value-of select="@hostname"/> </td>
+      </tr>
+      <tr>
+        <td> Top test file </td>
+        <td> <xsl:value-of select="@toptestfile"/> </td>
+      </tr>
+      <tr>
+        <td> Run id </td>
+        <td> <xsl:value-of select="@runid"/> </td>
+      </tr>
+      <tr>
+        <th class="name"> Environment </th>
+        <th class="name"> -- </th>
+      </tr>
+      <tr>
+        <td> JVM Name </td>
+        <td> <xsl:value-of select=
+          "environment/[EMAIL PROTECTED] = 'JVM_Name']/@value"/>
+        </td>
+      </tr>
+      <tr>
+        <td> JVM Mode </td>
+        <td> <xsl:value-of 
+          select="environment/[EMAIL PROTECTED] 'JVM_Mode']/@value"/>
+        </td>
+      </tr>
+      <tr>
+        <td> OS </td>
+        <td> <xsl:value-of 
+          select="environment/[EMAIL PROTECTED] = 'OS']/@value"/>
+        </td>
+      </tr>
+      <tr>
+        <td> JVM version </td>
+        <td> <xsl:value-of 
+          select="environment/[EMAIL PROTECTED] = 'JVM_Version']/@value"/>
+        </td>
+      </tr>
+      <tr>
+        <td> Native IO </td>
+        <td> <xsl:value-of 
+          select="environment/[EMAIL PROTECTED] = 'NativeIO']/@value"/>
+        </td>
+      </tr>
+      <tr>
+        <th class="name"> Header Info: </th>
+        <th class="name"> -- </th>
+      </tr>
+      <tr>
+        <td> Exec account </td>
+        <td> <xsl:value-of select="header-info/@execaccount"/> </td>
+      </tr>
+      <tr>
+        <td> Exec date </td>
+        <td> <xsl:value-of select="header-info/@execdate"/>  </td>
+      </tr>
+      <tr>
+        <td> Checksum </td>
+        <td> <xsl:value-of select="header-info/@checksum"/> </td>
+      </tr>
+      <tr>
+        <td> Result count </td>
+        <td> <xsl:value-of select="header-info/@resultcount"/> </td>
+      </tr>
+      <tr>
+        <td> Harness type </td>
+        <td> <xsl:value-of  select="header-info/@harnesstype"/> </td>
+      </tr>
+      <tr>
+        <td> Import info </td>
+        <td> <xsl:value-of select="header-info/@importinfo"/> </td>
+      </tr>
+      <tr>
+        <td> Test run type </td>
+        <td> <xsl:value-of select="header-info/@testruntype"/> </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                       ERROR SUMMARY                               -->
+  <!-- ================================================================ -->
+  <xsl:template name="testResultErrorSummary">
+    <hr width="100%" size="2"/>
+    <a name="testResultErrorSummary"/>
+    <center>
+    <h2> Error Summary <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>   
+
+    <xsl:variable name="errorTestResults"
+      select="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+        @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+        @result = 'ABANDONED' or @result = 'SCRATCH']"/>
+
+     <xsl:if test="$showTheFilters = 1">
+     <!-- +++++++++++++++++++++++++++++++++ Filter Table ++++++++++++++++ -->
+
+     <table cellpadding="0" cellspacing="0" border="0"
+            style="background-color: rgb(255, 255, 255);border-left: none;
+     border-top: none; border-right: none; border-bottom: none" >
+
+        <!-- filter form elements -->
+        <tr>
+        <td cellpadding="0" cellspacing="0" border="0"
+            style="background-color: rgb(255, 255, 255);border-left: none;
+            border-top: none; border-right: none; border-bottom: none" >
+          <form  name="errorSummaryFilter"
+                 onsubmit="TF_filterTable(document.getElementById
+                 ('errorSummaryTable'),document.errorSummaryFilter);
+                 return false"
+                 onreset="_TF_showAll(document.getElementById
+                 ('errorSummaryTable'))">  
+
+           <!-- form element table -->      
+          <table cellpadding="0" cellspacing="0" border="0"
+                style="background-color: rgb(255, 255, 255);border-left: none;
+                border-top: none; border-right: none; border-bottom: none" >
+          <tr>
+            <td cellpadding="0" cellspacing="0" border="0"
+                style="background-color: rgb(255, 255, 255);border-left: none;
+                border-top: none; border-right: none; border-bottom: none" >
+
+              <!-- filter reset -->
+              <input type="button"
+                     onclick="document.errorSummaryFilter.reset()" 
+                     value="Show All"/>
+
+              <!-- Result select -->
+              <xsl:text>&#160;</xsl:text>
+                <b>Result: </b>
+              <select TF_colKey="errorSummary_Result" 
+                      TF_searchType="full" 
+                      onChange="TF_filterTable(document.getElementById
+                      ('errorSummaryTable'), document.errorSummaryFilter)">
+                <option  TF_not_used="TRUE">-</option>
+                <xsl:for-each
+                  select="$errorTestResults[ generate-id() = 
+                   generate-id(key('errorTestResults',@result)[1])]">
+                  <xsl:sort select="@result"/>
+                  <option>
+                    <xsl:attribute name="value"><xsl:value-of 
+                    select = "@result"/></xsl:attribute><xsl:value-of 
+                    select = "@result"/>
+                </option>
+                </xsl:for-each>
+                <xsl:if test="$showSuccessInErrorSummary = 1">
+                   <option value="SUCCESS">SUCCESS</option>
+                </xsl:if>
+              </select>
+              
+              <!-- testunit select -->
+              <xsl:text>&#160;</xsl:text>
+                <b>Testunit: </b>
+              <select TF_colKey="errorSummary_Name" 
+                      TF_searchType="full" 
+                      onChange="TF_filterTable(document.getElementById
+                      ('errorSummaryTable'), document.errorSummaryFilter)">
+                <option  TF_not_used="TRUE">-</option>
+               <xsl:choose>
+                 <xsl:when test="$showSuccessInErrorSummary = 1">
+                    <xsl:for-each
+                      select="$testResults/test-case[
+                        generate-id() = 
+                        generate-id(key('testUnits', @testunit)[1])]">
+                      <xsl:sort select="@testunit"/>
+                      <option>
+                        <xsl:attribute name="value"><xsl:value-of 
+                         select = "@testunit"/></xsl:attribute><xsl:value-of 
+                         select = "@testunit"/>
+                      </option>
+                   </xsl:for-each>
+                 </xsl:when>
+                 <xsl:otherwise>
+                    <xsl:for-each
+                      select="$errorTestResults/test-case[
+                        generate-id() = 
+                        generate-id(key('errorTestUnits', @testunit)[1])]">
+                      <xsl:sort select="@testunit"/>
+                      <option>
+                        <xsl:attribute name="value"><xsl:value-of 
+                         select = "@testunit"/></xsl:attribute><xsl:value-of 
+                         select = "@testunit"/>
+                      </option>
+                   </xsl:for-each>
+                 </xsl:otherwise>
+               </xsl:choose>
+
+              </select>
+
+              <!-- testunit search -->          
+              <input type="text" 
+                     TF_colKey="errorSummary_Name" 
+                     TF_searchType="substring" 
+                     onkeyup="TF_filterTable(document.getElementById
+                       ('errorSummaryTable'), document.errorSummaryFilter)">
+              </input>
+
+              <p/>
+              <xsl:text>&#160;&#160;&#160;&#160;&#160;&#160;&#160;</xsl:text>
+              <xsl:text>&#160;&#160;&#160;&#160;&#160;&#160;&#160;</xsl:text>
+              <xsl:text>&#160;&#160;&#160;&#160;</xsl:text>
+
+              <!-- testcase search -->          
+              <xsl:text>&#160;&#160;</xsl:text>
+                <b>Testcase search: </b>
+              <input type="text" 
+                     TF_colKey="errorSummary_LogicalName" 
+                     TF_searchType="substring" 
+                     onkeyup="TF_filterTable(document.getElementById
+                       ('errorSummaryTable'), document.errorSummaryFilter)">
+              </input>
+
+
+             </td> <!-- filter elements -->
+            </tr> <!-- filter elements row -->
+          </table> <!-- filter element table -->
+        </form> <!-- filter form -->
+        </td> 
+        </tr>
+      </table> <!-- filter table -->
+    </xsl:if>
+
+    <!-- iterate all the test units that have an error -->
+      <table id="errorSummaryTable"   class="details" border="1"  
+             cellspacing="0">
+        <tr>
+          <th class="name"> Time </th>
+          <th class="name"> Testunit</th>
+          <th class="name"> Result </th>
+          <th class="name"> Testcase name</th>
+        </tr>
+        <xsl:choose>
+           <xsl:when test="$showSuccessInErrorSummary = 1">
+              <xsl:for-each  select="$testResults">
+                <tr>
+                  <td>
+                    <xsl:value-of select="@exectime"/>
+                  </td>
+                 <td TF_colKey="errorSummary_Name">
+                 <xsl:attribute name="TF_colValue"><xsl:value-of 
+                 select = "test-case/@testunit"/></xsl:attribute>
+                   <xsl:value-of select="test-case/@testunit"/>
+                  </td>
+                 <td TF_colKey="errorSummary_Result">
+                 <xsl:attribute name="TF_colValue"><xsl:value-of 
+                 select = "@result"/></xsl:attribute>
+                    <xsl:value-of select="@result"/>
+                  </td>
+                 <td TF_colKey="errorSummary_LogicalName">
+                 <xsl:attribute name="TF_colValue"><xsl:value-of 
+                 select = "@logicalname"/></xsl:attribute>
+                    <a>
+                      <xsl:if test="$showErrorDetailSection">
+                        <xsl:if test="@result != 'SUCCESS'">
+                          <xsl:attribute name="href">#next_<xsl:value-of  
+                            select="concat(test-case/@testpath, 
+                            @exectime, @logicalname)"/>
+                          </xsl:attribute>
+                        </xsl:if>
+                      </xsl:if>
+                    <xsl:value-of select="@logicalname"/>
+                    </a>
+                  </td>
+                </tr>
+             </xsl:for-each>    
+           </xsl:when>
+           <xsl:otherwise>
+              <xsl:for-each  select="$errorTestResults">
+                <tr>
+                  <td>
+                    <xsl:value-of select="@exectime"/>
+                  </td>
+                 <td TF_colKey="errorSummary_Name">
+                 <xsl:attribute name="TF_colValue"><xsl:value-of 
+                 select = "test-case/@testunit"/></xsl:attribute>
+                   <xsl:value-of select="test-case/@testunit"/>
+                  </td>
+                 <td TF_colKey="errorSummary_Result">
+                 <xsl:attribute name="TF_colValue"><xsl:value-of 
+                 select = "@result"/></xsl:attribute>
+                    <xsl:value-of select="@result"/>
+                  </td>
+                 <td TF_colKey="errorSummary_LogicalName">
+                 <xsl:attribute name="TF_colValue"><xsl:value-of 
+                 select = "@logicalname"/></xsl:attribute>
+                    <a>
+                      <xsl:if test="$showErrorDetailSection">
+                      <xsl:attribute name="href">#next_<xsl:value-of  
+                        select="concat(test-case/@testpath, 
+                        @exectime, @logicalname)"/>
+                      </xsl:attribute>
+                      </xsl:if>
+                    <xsl:value-of select="@logicalname"/>
+                    </a>
+                  </td>
+                </tr>
+             </xsl:for-each>    
+           </xsl:otherwise>
+        </xsl:choose>
+
+
+
+      </table> 
+  </xsl:template>
+
+  <!-- Test results that were not success -->
+  <xsl:key name="errorTestUnits"
+    match="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+        @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+        @result = 'ABANDONED' or @result = 'SCRATCH']/test-case"
+    use="@testunit"/>
+  <xsl:key name="errorTestResults"
+    match="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+        @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+        @result = 'ABANDONED' or @result = 'SCRATCH']"
+    use="@result"/>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        ERROR DETAIL                               -->
+  <!-- ================================================================ -->
+   <xsl:template name="testResultWithErrors">
+    <hr width="100%" size="2"/>
+    <a name="testResultWithErrors"/>
+    <center>
+    <h2> Error Detail <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>] </xsl:if></h2>
+    </center>    
+
+    <!-- iterate all the test units that have an error -->
+    <xsl:variable name="errorTestResults"
+      select="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+        @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+        @result = 'ABANDONED' or @result = 'SCRATCH']"/>
+
+
+
+
+    <xsl:for-each
+        select="$errorTestResults/test-case[ 
+                    generate-id() = 
+                    generate-id(key('errorTestUnits', @testunit)[1])]">
+      <xsl:variable name="pos" select="position()"/>
+      <xsl:variable name="errorTestUnit" select="@testunit"/>
+      <hr width="100%" size="2"/>
+
+
+   <a><xsl:attribute name="name">testErrors_<xsl:value-of
+         select="@testunit"/></xsl:attribute></a>
+      [<a href="#summaryByTestUnit"> Result Detail</a>]
+     <xsl:if 
+     test="$showTopNavigationTool">      [<a href="#top"> Top </a>] </xsl:if>
+
+
+     <xsl:if test="$showTheFilters = 1">
+     <!-- +++++++++++++++++++++++++++++++++ Filter Table ++++++++++++++++ -->
+
+
+
+     <table cellpadding="0" cellspacing="0" border="0"
+            style="background-color: rgb(255, 255, 255);border-left: none;
+     border-top: none; border-right: none; border-bottom: none" >
+
+        <xsl:variable 
name="tf_enableFilter">TF_enableFilter(document.getElementById('errorDetailTable<xsl:value-of
 select="$pos"/>'), document.errorDetailFilter<xsl:value-of select="$pos"/>, 
this)</xsl:variable>
+        <xsl:variable 
name="tf_filterTable">TF_filterTable(document.getElementById('errorDetailTable<xsl:value-of
 select="$pos"/>'), document.errorDetailFilter<xsl:value-of 
select="$pos"/>)</xsl:variable>
+        <xsl:variable 
name="tf_showAll">TF_showAll(document.getElementById('errorDetailTable<xsl:value-of
 select="$pos"/>'))</xsl:variable>
+
+        <!-- filter form elements -->
+        <tr>
+        <td cellpadding="0" cellspacing="0" border="0"
+            style="background-color: rgb(255, 255, 255);border-left: none;
+            border-top: none; border-right: none; border-bottom: none" >
+          <form>
+             <xsl:attribute name="name">errorDetailFilter<xsl:value-of 
+             select="$pos"/></xsl:attribute>
+             <xsl:attribute name="onsubmit"><xsl:value-of 
+             select="$tf_filterTable"/></xsl:attribute>
+             <xsl:attribute name="onreset"><xsl:value-of 
+             select="$tf_showAll"/></xsl:attribute>
+
+           <!-- form element table -->      
+          <table cellpadding="0" cellspacing="0" border="0"
+                style="background-color: rgb(255, 255, 255);border-left: none;
+                border-top: none; border-right: none; border-bottom: none" >
+          <tr>
+            <td cellpadding="0" cellspacing="0" border="0"
+                style="background-color: rgb(255, 255, 255);border-left: none;
+                border-top: none; border-right: none; border-bottom: none" >
+
+              <!-- testunit select -->
+              <xsl:text>&#160;&#160;</xsl:text>
+              <select TF_colKey="errorDetail_Cell" 
+                      TF_searchType="substring"
+                      multiple="multiple"
+                      size="3">
+                <xsl:attribute name="onchange"><xsl:value-of 
+                select="$tf_filterTable"/></xsl:attribute>
+                <option  TF_not_used="TRUE">-</option>
+
+                  <option value="ExecutionOutput">Execution output</option>
+                  <option 
+                    value="LogicalTestCaseName">Logical Testcase name</option>
+                  <option value="TestParameters">Test parameters</option>
+                  <option value="Result">Result</option>
+                  <option value="TestPath">Testpath</option>
+                  <option value="TestUnit">TestUnit</option>
+                  <option value="ExecutionTime">Execution time</option>
+                  <xsl:if test="$showFeatureInfo = 1">
+                    <option value="BugDetective">BugDetective cmds</option>
+                  </xsl:if>
+                  <xsl:if test="boolean(test-replication)">
+                    <option value="Replication">Replication cmds</option>
+                  </xsl:if>
+                  <option 
+                    value="TestCaseName">Testcase name</option>
+              </select>
+
+              <!-- testcase search -->          
+              <xsl:text>&#160;&#160;</xsl:text>
+                <b>Search (outupt, param): </b>
+              <input type="text" 
+                     TF_colKey="errorDetail_Cell" 
+                     TF_searchType="substring">
+                     <xsl:attribute name="onkeyup"><xsl:value-of 
+                    select="$tf_filterTable"/></xsl:attribute>
+              </input>
+
+              </td>
+            </tr>
+          </table>
+        </form>
+        </td>
+        </tr>
+      </table> <!-- filter table -->
+     </xsl:if>
+      <!-- error detail table -->
+      <table  border="1"  class="details"  cellspacing="0">
+      <xsl:attribute name="id">errorDetailTable<xsl:value-of 
select="$pos"/></xsl:attribute>
+        <tr>
+          <th class="title" colspan="2"> 
+            <xsl:value-of select="@testunit"/>
+            <xsl:if  test="$showTopNavigationTool">            
+            [<a href="#top"> Top </a>]</xsl:if>
+          </th>
+        </tr>
+        <xsl:for-each 
+         select="$errorTestResults[test-case/@testunit = $errorTestUnit]">
+         <xsl:variable name="pos" select="position()"/>
+          <tr>
+            <th class="name"> Name</th>
+            <th class="name" width="90%" style="text-align:left">
+              <a>
+                <xsl:attribute name="name">next_<xsl:value-of  
+                  select="concat(test-case/@testpath, 
+                  @exectime, @logicalname)"/>
+                </xsl:attribute>
+              </a>
+     <!-- Vishal: disabling next and previous as it's a big perofmance hit. 
+                  We can't use RTF as we run into a xalan (DTM) bug
+                  in jdk 1.4.1
+
+           <xsl:variable name="nextTestResult" 
+                         select="following-sibling::[EMAIL PROTECTED] = 
'FAILURE' or
+                                 @result = 'SKIP' or @result='TIMEOUT' or 
+                                 @result='ABORT' or @result = 'ABANDONED' or 
+                                 @result = 'SCRATCH'][1]"/>
+           <xsl:variable name="previousTestResult" 
+                         select="preceding-sibling::[EMAIL PROTECTED] = 
'FAILURE' or
+                                 @result = 'SKIP' or @result='TIMEOUT' or 
+                                 @result='ABORT' or @result = 'ABANDONED' or 
+                                 @result = 'SCRATCH'][1]"/>
+              <xsl:value-of select="nextTestResult"/>
+          [
+          <xsl:if  test="$showTopNavigationTool">              
+          <a href="#top">Top</a>]</xsl:if>
+          [
+              <a>
+                <xsl:if test="$showErrorDetailSection">
+                <xsl:attribute name="href">#next_<xsl:value-of
+              select="concat($nextTestResult/test-case/@testpath, 
+              $nextTestResult/@exectime, $nextTestResult/@logicalname)"/>
+                </xsl:attribute>
+                </xsl:if>
+            next 
+              </a>]
+          [
+              <a>
+                <xsl:if test="$showErrorDetailSection">
+                <xsl:attribute name="href">#next_<xsl:value-of
+              select="concat($previousTestResult/test-case/@testpath, 
+              $previousTestResult/@exectime, 
+              $previousTestResult/@logicalname)"/>
+                </xsl:attribute>
+                </xsl:if>
+            Prev. 
+              </a>]
+    --> <!-- turning off next/previous -->
+             Value</th>
+          </tr>
+          <tr>
+            <td width="10%">
+            TestUnit
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" 
+              TF_colValue="TestUnit">
+              <xsl:value-of select="test-case/@testunit"/>
+            </td>
+          </tr>
+          <tr>
+            <td width="10%">
+            Result
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" 
+              TF_colValue="Result">
+              <xsl:value-of select="@result"/>
+            </td>
+          </tr>
+          <tr>
+            <td width="10%">
+            Execution time
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" 
+              TF_colValue="ExecutionTime">
+              <xsl:value-of select="@exectime"/>
+            </td>
+          </tr>
+          <xsl:if test="$showFeatureInfo = 1">
+            <tr>
+              <td TF_colKey="errorDetail_Cell" TF_colValue="BugDetective"
+                  width="10%"> BugDetective cmd's</td>
+              <td>
+                <table  border="1"  class="details"  cellspacing="0">
+                  <tr>
+                    <th width="10%"> Run cmd </th>
+                  <td TF_colKey="errorDetail_Cell" width="90%" 
+                      TF_colValue="RunCmd">
+                      <font color="blue"><i>ant -f build-Test.xml run 
-Dfeature=<xsl:value-of select="$feature"/> 
-DTEST_ARGS="-Dcoconut.filter.test-level=4 -Dcoconut.string=4  
-Dcoconut.test-names=<xsl:value-of select="test-case/@testunit"/>.<xsl:value-of 
select="@logicalname"/>"</i></font>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th width="10%"> Coverage cmd </th>
+                  <td TF_colKey="errorDetail_Cell" width="90%" 
+                      TF_colValue="CoverageCmd">
+                      <font color="blue"><i>ant -f build-Test.xml coverage.all 
-Dfeature=<xsl:value-of select="$feature"/> 
-DTEST_ARGS="-Dcoconut.filter.test-level=4 -Dcoconut.string=4  
-Dcoconut.test-names=<xsl:value-of select="test-case/@testunit"/>.<xsl:value-of 
select="@logicalname"/>"</i></font>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th width="10%"> Inspect cmd </th>
+                    <td TF_colKey="errorDetail_Cell" width="90%" 
+                        TF_colValue="InspectCmd">
+                      <font color="blue"><i>ant -f build-Test.xml inspect.all 
-Dfeature=<xsl:value-of select="$feature"/> 
-DTEST_ARGS="-Dcoconut.filter.test-level=4 -Dcoconut.string=4  
-Dcoconut.test-names=<xsl:value-of select="test-case/@testunit"/>.<xsl:value-of 
select="@logicalname"/>"</i></font>
+                    </td>
+                  </tr>
+                </table>
+              </td>
+            </tr>
+          </xsl:if>
+          <tr>
+            <td width="10%">
+            Logical Testcase name
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" >
+           <xsl:attribute name="TF_colValue">LogicalTestCaseName<xsl:value-of 
+           select = "execution-output/output-details"/><xsl:value-of 
+           select = "test-parameters"/></xsl:attribute>
+              <xsl:value-of select="@logicalname"/>
+            </td>
+          </tr>
+          <tr>
+            <td width="10%">
+            Testcase name
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" 
+              TF_colValue="TestCaseName">
+              <xsl:value-of select="test-case/@testcasename"/>
+            </td>
+          </tr>
+          <tr>
+            <td width="10%">
+            Test path
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" 
+              TF_colValue="TestPath">
+              <xsl:value-of select="test-case/@testpath"/>
+            </td>
+          </tr>
+          <tr>
+            <td width="10%">
+            execution output
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%" >
+           <xsl:attribute name="TF_colValue">ExecutionOutput<xsl:value-of 
+           select = "execution-output/output-details"/></xsl:attribute>
+              <font color="red">
+              <pre wrap="true">
+                <xsl:value-of select="execution-output/output-details"/>
+              </pre>
+              </font>
+            </td>
+          </tr>
+          <!-- 
+          3/7/2004 Vishal - Test replication is a new feature, and we 
+                            should display it in the report on if the 
+                            data is there in the xml file.
+          -->
+          <xsl:if test="boolean(test-replication)">
+            <tr>
+              <td TF_colKey="errorDetail_Cell" TF_colValue="Replication" 
+                width="10%"> Replication </td>
+              <td>
+                <table  border="1"  class="details"  cellspacing="0">
+                  <tr>
+                    <th width="10%"> info</th>
+                    <td><font color="blue"><xsl:value-of 
+                      select="test-replication/info"/></font></td>
+                  </tr>
+                  <tr>
+                    <th width="10%"> unix cmd.</th>
+                    <td><font color="blue"><xsl:value-of 
+                      select="test-replication/command-line/unix"/></font></td>
+                  </tr>
+                  <tr>
+                    <th width="10%"> win cmd.</th>
+                    <td><font color="blue"><xsl:value-of 
+                      select="test-replication/command-line/win"/></font></td>
+                  </tr>
+                </table>
+              </td>            
+            </tr>
+          </xsl:if>
+          <tr>
+            <td width="10%">
+            test parameters
+            </td>
+          <td TF_colKey="errorDetail_Cell" width="90%">
+           <xsl:attribute name="TF_colValue">TestParameters<xsl:value-of 
+           select = "test-parameters"/></xsl:attribute>
+              <font color="darkgreen">
+              <pre  wrap="true">
+                <xsl:value-of select="test-parameters"/>
+              </pre>
+              </font>
+            </td>
+          </tr>
+          <xsl:variable name="prevTestResult" 
+          select="concat(test-case/@testpath, @exectime, @logicalname)"/>
+        </xsl:for-each>
+      </table>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:key name="testUnits" 
+    match="/test-log/test-result/test-case" 
+    use="@testunit"/>
+  <xsl:key name="successTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'SUCCESS']/test-case" 
+    use="@testunit"/>
+  <xsl:key name="failTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'FAILURE']/test-case" 
+    use="@testunit"/>
+  <xsl:key name="skipTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'SKIP']/test-case" 
+    use="@testunit"/>
+  <xsl:key name="timeoutTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'TIMEOUT']/test-case" 
+    use="@testunit"/>
+  <xsl:key name="abortTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'ABORT']/test-case" 
+    use="@testunit"/>
+  <xsl:key name="abandonedTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'ABANDONED']/test-case" 
+    use="@testunit"/>
+  <xsl:key name="scratchTestUnits" 
+    match="/test-log/[EMAIL PROTECTED] = 'SCRATCH']/test-case" 
+    use="@testunit"/>
+
+
+  <!-- Summary of the test run by test unit -->
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        RESULT DETAIL                              -->
+  <!-- ================================================================ -->
+  <xsl:template name="summaryByTestUnit">
+    <hr width="100%" size="2"/>
+    <a name="summaryByTestUnit"/>
+    <center>
+    <h2> Result Detail <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>
+
+     <xsl:if test="$showTheFilters = 1">
+     <!-- +++++++++++++++++++++++++++++++++ Filter Table ++++++++++++++++ -->
+
+     <table cellpadding="0" cellspacing="0" border="0"
+            style="background-color: rgb(255, 255, 255);border-left: none;
+     border-top: none; border-right: none; border-bottom: none" >
+
+        <!-- filter form elements -->
+        <tr>
+        <td cellpadding="0" cellspacing="0" border="0"
+            style="background-color: rgb(255, 255, 255);border-left: none;
+            border-top: none; border-right: none; border-bottom: none" >
+          <form  name="resultSummaryFilter"
+                 onsubmit="TF_filterTable(document.getElementById
+                 ('resultSummaryTable'),document.resultSummaryFilter);
+                 return false"
+                 onreset="_TF_showAll(document.getElementById
+                 ('resultSummaryTable'))">  
+
+           <!-- form element table -->      
+          <table cellpadding="0" cellspacing="0" border="0"
+                style="background-color: rgb(255, 255, 255);border-left: none;
+                border-top: none; border-right: none; border-bottom: none" >
+          <tr>
+            <td cellpadding="0" cellspacing="0" border="0"
+                style="background-color: rgb(255, 255, 255);border-left: none;
+                border-top: none; border-right: none; border-bottom: none" >
+
+              <!-- filter reset -->
+              <input type="button"
+                     onclick="document.resultSummaryFilter.reset()" 
+                     value="Show all"/>
+              <xsl:text>&#160;</xsl:text>
+
+              <!-- result select -->
+              <xsl:text>&#160;</xsl:text>
+                <b>Result: </b>
+              <select TF_colKey="resultSummary_Error" 
+                      TF_searchType="substring" 
+                      onChange="TF_filterTable(document.getElementById
+                      ('resultSummaryTable'), document.resultSummaryFilter)">
+                <option  TF_not_used="TRUE">-</option>
+                <option value="ERRORS">Errors</option>
+                <option value="ALL_SUCCESS">No Errors</option>
+              </select>
+
+              <!-- testunit select -->
+              <xsl:text>&#160;</xsl:text>
+                <b>Testunit: </b>
+              <select TF_colKey="resultSummary_Name" 
+                      TF_searchType="full" 
+                      onChange="TF_filterTable(document.getElementById
+                      ('resultSummaryTable'), document.resultSummaryFilter)">
+                <option  TF_not_used="TRUE">-</option>
+
+                <xsl:for-each 
+                  select="/test-log/test-result/test-case[ 
+                  generate-id() = 
+                  generate-id(key('testUnits', @testunit)[1])]">
+                  <xsl:sort select="@testunit"/>
+                  <option>
+                  <xsl:attribute name="value"><xsl:value-of 
+                  select = "@testunit"/></xsl:attribute><xsl:value-of 
+                  select = "@testunit"/>
+                  </option>
+                </xsl:for-each>
+              </select>
+
+              <!-- testcase search -->          
+              <input type="text" 
+                     TF_colKey="resultSummary_Name" 
+                     TF_searchType="substring" 
+                     onkeyup="TF_filterTable(document.getElementById
+                       ('resultSummaryTable'), document.resultSummaryFilter)">
+              </input>
+
+
+              </td>
+            </tr>
+          </table>
+        </form>
+        </td>
+        </tr>
+      </table> <!-- filter table -->
+    </xsl:if>
+    <table id="resultSummaryTable"   class="details" border="1" 
cellspacing="0">
+      <tr>
+        <th class="name">Test Unit name</th>
+        <th class="name">Total</th>
+        <th class="name">Pass</th>
+        <th class="name">Fail</th>
+        <th class="name">Skip</th>
+        <th class="name">Timeout</th>
+        <th class="name">Abort</th>
+        <th class="name">Abandoned</th>
+        <th class="name">Scratch</th>
+        <th class="name">Duration (min.)</th>
+      </tr>
+      <xsl:for-each 
+        select="test-result/test-case[ generate-id() = 
+                  generate-id(key('testUnits', @testunit)[1])]">
+        <xsl:sort select="@testunit"/>
+
+        <xsl:variable name="currentTestUnit" select="@testunit"/>
+
+        <tr>
+          <td TF_colKey="resultSummary_Name">
+          <xsl:attribute name="TF_colValue"><xsl:value-of 
+          select = "@testunit"/></xsl:attribute>
+          <xsl:if test="count(key('testUnits',@testunit)) = 
+                        count(key('successTestUnits', @testunit))">
+            <xsl:value-of select = "@testunit"/>
+          </xsl:if>                        
+          <xsl:if test="count(key('testUnits',@testunit)) != 
+                        count(key('successTestUnits', @testunit))">
+           <a>
+           <xsl:if test="$showErrorDetailSection">
+           <xsl:attribute name="href">#testErrors_<xsl:value-of
+             select = "@testunit"/></xsl:attribute>
+           </xsl:if>
+             <xsl:value-of select = "@testunit"/>
+            </a>
+          </xsl:if>                        
+          </td>
+
+          <xsl:variable name="totalTuTests" select=
+          "count(key('testUnits',@testunit))"/>
+          <xsl:variable name="successTests" select=
+          "count(key('successTestUnits', @testunit))"/>
+          <xsl:variable name="failTests" select=
+          "count(key('failTestUnits', @testunit))"/>
+          <xsl:variable name="skipTests" select=
+          "count(key('skipTestUnits', @testunit))"/>
+          <xsl:variable name="timeoutTests" select=
+          "count(key('timeoutTestUnits', @testunit))"/>
+          <xsl:variable name="abortTests" select=
+          "count(key('abortTestUnits', @testunit))"/>
+          <xsl:variable name="abandonedTests" select=
+          "count(key('abandonedTestUnits', @testunit))"/>
+          <xsl:variable name="scratchTests" select=
+          "count(key('scratchTestUnits', @testunit))"/>
+
+          <td>
+            <xsl:value-of select="$totalTuTests"/>
+          </td>
+          <td TF_colKey="resultSummary_Error">
+            <xsl:attribute name="TF_colValue">
+              <xsl:if test="$totalTuTests != $successTests">
+                <xsl:text>ERRORS</xsl:text>
+              </xsl:if>
+              <xsl:if test="$totalTuTests = $successTests">
+                <xsl:text>ALL_SUCCESS</xsl:text>
+              </xsl:if>
+            </xsl:attribute>
+            <xsl:value-of select="$successTests"/>
+          </td>
+          <td>
+            <xsl:if test="$failTests &gt; 0">
+            <font color="red">
+              <xsl:value-of select="$failTests"/>
+            </font>
+            </xsl:if>
+            <xsl:text>&#160;</xsl:text>
+          </td>
+          <td>
+            <xsl:if test="$skipTests &gt; 0">
+            <font color="red">
+              <xsl:value-of select="$skipTests"/>
+            </font>
+            </xsl:if>
+            <xsl:text>&#160;</xsl:text>
+          </td>
+          <td>
+            <xsl:if test="$timeoutTests &gt; 0">
+            <font color="red">
+              <xsl:value-of select="$timeoutTests"/>
+            </font>
+            </xsl:if>
+            <xsl:text>&#160;</xsl:text>
+          </td>
+          <td>
+            <xsl:if test="$abortTests &gt; 0">
+            <font color="red">
+              <xsl:value-of select="$abortTests"/>
+            </font>
+            </xsl:if>
+            <xsl:text>&#160;</xsl:text>
+          </td>
+          <td>
+            <xsl:if test="$abandonedTests &gt; 0">
+            <font color="red">
+              <xsl:value-of select="$abandonedTests"/>
+            </font>
+            </xsl:if>
+            <xsl:text>&#160;</xsl:text>
+          </td>
+          <td>
+            <xsl:if test="$scratchTests &gt; 0">
+            <font color="red">
+              <xsl:value-of select="$scratchTests"/>
+            </font>
+            </xsl:if>
+            <xsl:text>&#160;</xsl:text>
+          </td>
+          <td>
+            <xsl:variable name="tuTime" 
+            select="format-number(sum(/test-log/test-result
+            [test-case/@testunit= $currentTestUnit]/@duration) div 1000 div 
60, 
+            '#.##')"/>
+            <xsl:value-of select="$tuTime"/>
+          </td>
+        </tr>
+      </xsl:for-each>
+    </table>
+  </xsl:template>
+
+  <!-- Creates the test run summary table -->
+  <xsl:variable name="totalTime" 
+    select="format-number(sum(/test-log/test-result/@duration)
+           div 1000 div 60, '#.##')"/>
+  <xsl:variable name="totalTests" select="count(/test-log/test-result)"/>
+  <xsl:variable name="testResults" select="/test-log/test-result"/>
+
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        REPORT SUMMARY                             -->
+  <!-- ================================================================ -->
+  <xsl:template name="reportSummary">
+    <hr width="100%" size="2"/>
+    <a name="reportSummary"/>
+    <center>
+    <h2> Report Summary <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>
+
+      <xsl:variable name="successTests"  select=
+      "count([EMAIL PROTECTED] = 'SUCCESS'])"/>
+      <xsl:variable name="failTests"  select=
+      "count([EMAIL PROTECTED] = 'FAILURE'])"/>
+      <xsl:variable name="skipTests"  select=
+      "count([EMAIL PROTECTED] = 'SKIP'])"/>
+      <xsl:variable name="timeoutTests" select=
+      "count([EMAIL PROTECTED] = 'TIMEOUT'])"/>
+      <xsl:variable name="abortTests"  select=
+      "count([EMAIL PROTECTED] = 'ABORT'])"/>
+      <xsl:variable name="abandonedTests" select=
+      "count([EMAIL PROTECTED] = 'ABANDONED'])"/>
+      <xsl:variable name="scratchTests" select=
+      "count([EMAIL PROTECTED] = 'SCRATCH'])"/>
+
+    <table style="margin-bottom:0em"   class="details" border="1" 
+           cellspacing="0"> <!-- result summary description  -->
+      <tr> <!-- summary description -->
+        <tr> <!-- start of error statement -->
+          <!-- run problem or clean run -->
+          <xsl:choose>
+            <!-- no result , problem -->
+            <xsl:when test="$totalTests = 0">
+              <td colspan="2">
+                <b>
+                <span style="color: rgb(155, 0, 0);font-size:15 pt">
+                <xsl:text>&#160;&#160;</xsl:text>
+                No test were found, problem running tests.
+                </span></b>
+              </td>
+             <td colspan="7" style="padding:0px;background-color:rgb(255, 0, 
0);font-size:10pt"><b><center>:-(</center></b></td>
+            </xsl:when>
+            <!-- clean run -->
+            <xsl:when test="$totalTests = $successTests">
+              <td colspan="2">
+                <b>
+                <span style="color: rgb(0, 153, 0);font-size:15 pt">
+                 <xsl:text>&#160;&#160;</xsl:text>
+                Clean run
+                </span></b>
+              </td>
+              <td colspan="7" style="padding:0px;background-color:rgb(0, 255, 
0)
+                 ;font-size:10pt"><b><center>:-)</center></b></td>
+            </xsl:when>
+          </xsl:choose>
+          </tr> <!-- end of clean run check -->
+        <!-- test has failures -->
+        <xsl:if test="not($totalTests = $successTests)">
+         <tr> <!-- start of failure -->
+          <td colspan="9"> <!-- not  a clean run -->
+
+             <!-- summary description table -->
+             <table style="margin-bottom:0em" stype="border=0">
+               <tr><td>
+             <b>
+                <span style="color: rgb(153, 0, 0);font-size:12 pt">
+                  <xsl:text>&#160;&#160;</xsl:text>Not a clean run :-(.
+                </span>
+             </b>
+              <xsl:text>&#160;</xsl:text>Total Errors: [<font 
+               style="padding:0px;color:rgb(255, 0,0);
+                      font-size:10pt"> <xsl:value-of 
+               select="$totalTests - $successTests"/></font> / <xsl:value-of 
+               select="$totalTests"/>]
+                <p/>
+                <ul>
+                  <li>
+                    Go to <a href="#testResultErrorSummary"> Error summary </a>
+                     section, to view New/Old problem in a table.
+                  </li>
+                </ul>
+             <p/>
+               <table style="margin-bottom:0em" 
+                      cellspacing="0"> <!-- problem bug table -->
+                 <tr><td>
+
+             <p/>
+
+            <xsl:for-each  select="$testResults">
+
+              <xsl:variable name="testResult" select="."/>
+
+              <xsl:variable name="testUnit" 
+                   select="string($testResult/test-case/@testunit)"/>
+              <xsl:variable name="logicalName" 
+                       select="string($testResult/@logicalname)"/>
+              <xsl:variable name="execTime"
+                        select="string($testResult/@exectime)"/>
+              <xsl:variable name="testPath" 
+                    select="string($testResult/test-case/@testpath)"/>
+    
+               <xsl:if test="not((position()-1) mod 100)">
+                 [<xsl:value-of 
+                   select="substring($execTime,12,8)"/>]
+               </xsl:if>
+
+               <xsl:if test="not((position() - 1) mod 25)">
+                 |
+               </xsl:if>
+
+               <xsl:variable name="result" select="$testResult/@result"/>
+               <!-- success -->
+                <xsl:if test="$result = 'SUCCESS'">
+                 <font style="padding:0px;background-color:Chartreuse;
+                 font-size:10pt"><xsl:attribute
+                 name="onMouseover">ddrivetip('<xsl:value-of 
+                 
select="$testUnit"></xsl:value-of>','Chartreuse')</xsl:attribute><xsl:attribute
+                 name="onMouseout">hideddrivetip()</xsl:attribute>.</font>
+                </xsl:if>
+
+                <!-- failure -->
+                <xsl:if test="$result = 'FAILURE'">
+                 <font style="padding:0px;background-color:hotpink;
+                 font-size:10pt"><a>
+                <xsl:if test="$showErrorDetailSection">
+                <xsl:attribute 
+                name="href">#next_<xsl:value-of  
+                     select="concat($testPath, $execTime,
+                                    $logicalName)"/>
+                  </xsl:attribute></xsl:if><xsl:attribute
+                 name="onMouseover">ddrivetip('<xsl:value-of 
+                 
select="concat($testUnit,'.',$logicalName)"/>','hotpink')</xsl:attribute><xsl:attribute
+                 name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+                </xsl:if>
+
+              <!-- skip -->
+               <xsl:if test="$result = 'SKIP'">
+                 <font style="padding:0px;background-color:cornflowerblue;
+                       font-size:10pt"><a>
+                <xsl:if test="$showErrorDetailSection">
+                       <xsl:attribute 
+                       name="href">#next_<xsl:value-of  
+                     select="concat($testPath, $execTime,
+                                    $logicalName)"/>
+                  </xsl:attribute></xsl:if><xsl:attribute
+                 name="onMouseover">ddrivetip('<xsl:value-of 
+                 
select="concat($testUnit,'.',$logicalName)"></xsl:value-of>','cornflowerblue')</xsl:attribute><xsl:attribute
+                 name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+
+                </xsl:if>
+
+              <!-- timeout -->
+               <xsl:if test="$result = 'TIMEOUT'">
+                <font style="padding:0px;background-color:yellow;
+                      font-size:10pt"><a>
+                <xsl:if test="$showErrorDetailSection">
+                      <xsl:attribute 
+                      name="href">#next_<xsl:value-of  
+                     select="concat($testPath, $execTime,
+                                    $logicalName)"/>
+                  </xsl:attribute></xsl:if><xsl:attribute
+                 name="onMouseover">ddrivetip('<xsl:value-of 
+                 
select="concat($testUnit,'.',$logicalName)"></xsl:value-of>','yellow')</xsl:attribute><xsl:attribute
+                 name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+               </xsl:if>
+
+               <!-- Not a Success, failure, skip or timeout -->
+               <xsl:if test="not($result = 'TIMEOUT' or 
+                                 $result = 'SUCCESS' or
+                                 $result = 'FAILURE' or
+                                 $result = 'SKIP')">
+                <font style="padding:0px;background-color:Darkgray;
+                      font-size:10pt"><a>
+                <xsl:if test="$showErrorDetailSection">
+                      <xsl:attribute 
+                      name="href">#next_<xsl:value-of  
+                     select="concat($testPath, $execTime,
+                                    $logicalName)"/>
+                  </xsl:attribute></xsl:if><xsl:attribute
+                 name="onMouseover">ddrivetip('<xsl:value-of 
+                 
select="concat($testUnit,'.',$logicalName)"></xsl:value-of>','Darkgray')</xsl:attribute><xsl:attribute
+                 name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+               </xsl:if>
+
+               <!-- wrap the row for every 100 errors -->               
+               <xsl:if test="not(position() mod 100)">
+               <xsl:text>&#160;</xsl:text><xsl:value-of 
+                 select="position()"/>]<br/>
+               </xsl:if>
+
+
+             </xsl:for-each>] <!-- each error in  -->
+               </td></tr> <!-- bug row -->
+              </table> <!--  bug table -->
+
+              <p/>
+               <!-- bar label -->
+               <table  border="1" cellspacing="0" style="margin-bottom:0em">
+                 <tr>
+                   <th class="title" colspan="9">
+                    ResultBar Information
+                   </th>
+                 </tr>
+                 <tr>
+                   <td 
colspan="9"><xsl:text>&#160;&#160;&#160;&#160;&#160;&#160;</xsl:text>
+                   Each dot in the above ResultBar represents a
+                   test in the  run.</td>
+                 </tr>
+                 <tr>
+                   <th class="name" colspan="1" 
+                   style="background-color:hotpink">.</th>
+                   <td colspan="4">FAILURE</td>
+                   <th class="name" colspan="2">Exec date </th>
+                   <td colspan="2"><xsl:value-of 
+                     select="/test-log/header-info/@execdate"/>
+                   </td>
+                 </tr>
+                 <tr>
+                   <th class="name" colspan="1"
+                   style="background-color:yellow">.</th>
+                   <td colspan="4">TIMEOUT</td>
+                   <th class="name" colspan="2"> File </th>
+                   <td colspan="2"><xsl:value-of 
+                     select="$gtlfFileName"/>
+                   </td>
+                 </tr>
+                 <tr>
+                   <th class="name" colspan="1"
+                   style="background-color:cornflowerblue">.</th>
+                   <td colspan="4">SKIP</td>
+                   <th class="name" colspan="2"> Change # </th>
+                   <td colspan="2"><xsl:value-of 
+                     select="/test-log/@changenumber"/>
+                   </td>
+                 </tr>
+                 <tr>
+                   <th class="name" colspan="1"
+                   style="background-color:DarkGray;color:white">.</th>
+                   <td colspan="4">ABORT or ABANDONED or SCRATCH</td>
+                   <th class="name" colspan="2"> OS</th>
+                   <td colspan="2"><xsl:value-of 
+                     select="/test-log/environment/[EMAIL PROTECTED] 
+                        = 'OS']/@value"/>
+                   </td>
+                 </tr>
+                 <tr>
+                   <th class="name" colspan="1"
+                   style="background-color:Chartreuse">.</th>
+                   <td colspan="4">SUCCESS</td>
+                   <th class="name" colspan="2"> JVM</th>
+                   <td colspan="2"><xsl:value-of 
+                     select="/test-log/environment/[EMAIL PROTECTED] 
+                        = 'JVM_Name']/@value"/> 
+                        <xsl:text>&#160;</xsl:text>
+                        <xsl:value-of 
+                     select="/test-log/environment/[EMAIL PROTECTED] 
+                        = 'JVM_Version']/@value"/>
+                   </td>
+                 </tr>
+               </table> <!-- result bar table -->
+
+               </td></tr> <!-- description row row -->
+             </table> <!-- sumarry desc table -->  
+
+            </td> <!-- cell with error info -->
+            </tr>
+          </xsl:if> <!-- not a clean run -->
+      </tr> <!-- summary description section -->
+    </table>
+  </xsl:template>
+
+
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        RESULT SUMMARY                             -->
+  <!-- ================================================================ -->
+  <xsl:template name="summary">
+<hr width="100%" size="2"/>
+    <a name="summary"/>
+    <center>
+    <h2> Result Summary <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>
+
+      <xsl:variable name="successTests"  select=
+      "count([EMAIL PROTECTED] = 'SUCCESS'])"/>
+      <xsl:variable name="failTests"  select=
+      "count([EMAIL PROTECTED] = 'FAILURE'])"/>
+      <xsl:variable name="skipTests"  select=
+      "count([EMAIL PROTECTED] = 'SKIP'])"/>
+      <xsl:variable name="timeoutTests" select=
+      "count([EMAIL PROTECTED] = 'TIMEOUT'])"/>
+      <xsl:variable name="abortTests"  select=
+      "count([EMAIL PROTECTED] = 'ABORT'])"/>
+      <xsl:variable name="abandonedTests" select=
+      "count([EMAIL PROTECTED] = 'ABANDONED'])"/>
+      <xsl:variable name="scratchTests" select=
+      "count([EMAIL PROTECTED] = 'SCRATCH'])"/>
+
+    <table  border="1"  class="details" cellspacing="0">
+      <tr>
+        <th >Total</th>
+        <th >Pass</th>
+        <th >Fail</th>
+        <th >Skip</th>
+        <th >Timeout</th>
+        <th >Abort</th>
+        <th >Abandoned</th>
+        <th >Scratch</th>
+        <th >Duration (minutes)</th>
+      </tr>
+
+
+      
+      <tr>
+        <td>
+          <xsl:value-of select="$totalTests"/>
+        </td>
+        <td>
+
+          <xsl:value-of select="$successTests"/>
+          (<xsl:value-of select="format-number($successTests div $totalTests
+          * 100, '#.##')"/>%)
+        </td>
+        <td>
+          <xsl:if test="$failTests &gt; 0">
+          <font color="red">
+            <xsl:value-of select="$failTests"/>
+            (<xsl:value-of select="format-number($failTests div $totalTests
+            * 100, '#.##')"/>%)
+          </font>
+          </xsl:if>
+          <xsl:text>&#160;</xsl:text>
+        </td>
+        <td>
+          <xsl:if test="$skipTests &gt; 0">
+          <font color="red">
+            <xsl:value-of select="$skipTests"/>
+            (<xsl:value-of select="format-number($skipTests div $totalTests
+            * 100, '#.##')"/>%)    
+          </font>
+          </xsl:if>
+          <xsl:text>&#160;</xsl:text>
+        </td>
+        <td>
+          <xsl:if test="$timeoutTests &gt; 0">
+          <font color="red">
+            <xsl:value-of select="$timeoutTests"/>
+            (<xsl:value-of select="format-number($timeoutTests div $totalTests
+            * 100, '#.##')"/>%)    
+          </font>
+          </xsl:if>
+          <xsl:text>&#160;</xsl:text>
+        </td>
+        <td>
+          <xsl:if test="$abortTests &gt; 0">
+          <font color="red">
+            <xsl:value-of select="$abortTests"/>
+            (<xsl:value-of select="format-number($abortTests div $totalTests
+            * 100, '#.##')"/>%)    
+          </font>
+          </xsl:if>
+          <xsl:text>&#160;</xsl:text>
+        </td>
+        <td>
+          <xsl:if test="$abandonedTests &gt; 0">
+          <font color="red">
+            <xsl:value-of select="$abandonedTests"/>
+            (<xsl:value-of select="format-number($abandonedTests div 
$totalTests
+            * 100, '#.##')"/>%)    
+          </font>
+          </xsl:if>
+          <xsl:text>&#160;</xsl:text>
+        </td>
+        <td>
+          <xsl:if test="$scratchTests &gt; 0">
+          <font color="red">
+            <xsl:value-of select="$scratchTests"/>
+            (<xsl:value-of select="format-number($scratchTests div $totalTests
+            * 100, '#.##')"/>%)    
+          </font>
+          </xsl:if>
+          <xsl:text>&#160;</xsl:text>
+        </td>
+        <td>
+          <xsl:value-of select="$totalTime"/>
+        </td>
+      </tr>
+      <tr>
+      <table  border="0" cellspacing="0">
+        <tr>
+          <td width="17%">
+            <p/>
+            <b>Start time: </b>
+          </td>
+          <td>
+            <p/>
+            <xsl:value-of select="test-result[1]/@exectime"/>
+          </td>
+          <td width="7%">
+          </td>
+          <td width="17%">
+            <p/>
+            <b>End time: </b>
+          </td>
+          <td>
+            <p/>
+            <xsl:value-of select="test-result[last()]/@exectime"/>
+          </td>
+        </tr>
+      </table>
+      </tr>
+    </table>
+
+  </xsl:template>
+
+  <xsl:template name="recordTime">
+    <xsl:param name="message">Time: </xsl:param>
+    <!-- show time only if instrument is turned on (1) -->
+    <xsl:if test="$instrument = 1">
+          [<xsl:value-of  
+            select="string(java:util.Date.new())"/>][<xsl:value-of 
+        select="string(java:lang.System.currentTimeMillis())"/>]  
<xsl:value-of 
+          select="$message"/>
+          <br/>
+    </xsl:if>
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        USEFUL COMMANDS                            -->
+  <!-- ================================================================ -->
+  <xsl:template name="testCommands">
+    <hr width="100%" size="2"/>
+    <a name="commands"/>
+    <center>
+    <h2> Help/Info <xsl:if 
+     test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+    </center>
+
+    <table class="details" id="commandsTable"  border="1" cellspacing="0">
+      <tr>
+        <th class="name" align="left"> ant wrapper <font 
color="blue">document</font></th>
+        <td> <font color="green">Help document of the tool that generates this
+             report.</font><br/>
+             <a target="_original"
+    
href="http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#usage";>http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html</a>
+         <p/>Run 'ant -f build-Test.xml doc' to generated document locally.
+
+        </td>
+        
+      </tr>
+      <tr>
+        <th class="name" align="left"> ant  <font color="blue">html report 
</font></th>
+        <td> <font color="green">Command to generated this report</font> 'ant 
-f
+    build-Test.xml test.report'<br/>
+             <a target="_original" 
href="http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#test.report";>http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#test.report</a>
+         
+        </td>
+      </tr>
+      <tr>
+        <th class="name" align="left"> new  <font color="blue">features 
</font></th>
+        <td> <font color="green">new features added to BugWatcher</font><br/>
+             <a target="_original" 
href="http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#new.features";>http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#new.features</a>
+         
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        REPORT HEADER                              -->
+  <!-- ================================================================ -->
+  <xsl:template name="header">
+        <a name="top"/>
+        <center>
+          <div style="background-color: skyblue;">
+
+         <xsl:if test="$showSplitNavigationTool">
+             <span style="background-color: white;"
+                   onMouseover=
+                   "ddrivetip('Split report vertically or horizontally, like 
Emacs . NOTE: It Only  works in Mozilla, Netscape 7.x browser', 'hotPink')"
+                   onMouseout="hideddrivetip()">
+               [
+               <a href="javascript:unSplit()">Un </a>
+               / Split
+               <a href="javascript:split(1)"> V </a>
+               or
+               <a href="javascript:split(0)"> H</a>
+               ]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+           </xsl:if>
+
+           <xsl:if test="$showResultSummarySection">
+             <span style="background-color: white;">
+               [<a href="#summary">Result Summary</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+           </xsl:if>
+
+          <xsl:if test="$showResultDetailSection">
+             <span style="background-color: white;">
+               [<a href="#summaryByTestUnit">Result Detail</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+          </xsl:if>
+
+          <xsl:if test="$showErrorSummarySection">
+             <span style="background-color: white;">
+              [<a href="#testResultErrorSummary">Error Summary</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+          </xsl:if>
+
+
+          <xsl:if test="$showErrorDetailSection">
+             <span style="background-color: white;">
+               [<a href="#testResultWithErrors">Error Detail</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+          </xsl:if>
+
+          <xsl:if test="$showFilesSection">
+             <span style="background-color: white;">
+               [<a href="#files">Files</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+           </xsl:if>
+
+          <xsl:if test="$showSetupSection">
+             <span style="background-color: white;">
+               [<a href="#metaInfo">Setup</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+          </xsl:if>
+
+
+          <xsl:if test="$showHelpSection">
+            <span style="background-color: white;">
+               [<a href="#commands">Help/doc</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+           </xsl:if>
+
+          </div>
+        </center>
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        MENU                                       -->
+  <!-- ================================================================ -->
+  <xsl:template name="sidemenu">
+
+<script language="JavaScript1.2">
+<![CDATA[
+      
/********************************************************************************
+      Submitted with modifications by Jack Routledge 
(http://fastway.to/compute) to DynamicDrive.com
+      Copyright (C) 1999 Thomas Brattli @ www.bratta.com
+      This script is made by and copyrighted to Thomas Brattli 
+      This may be used freely as long as this msg is intact!
+      This script has been featured on http://www.dynamicdrive.com
+      
********************************************************************************
+      Browsercheck:*/
+      ie=document.all?1:0
+      n=document.layers?1:0
+      ns6=document.getElementById&&!document.all?1:0
+      
+      //These are the variables you have to set:
+      
+      //How much of the layer do you wan't to be visible when it's in the out 
state?
+      lshow=40
+      
+      //How many pixels should it move every step? 
+      var move=10;
+      
+      //At what speed (in milliseconds, lower value is more speed)
+      menuSpeed=0
+      
+      //Do you want it to move with the page if the user scroll the page?
+      var moveOnScroll=true
+      
+      
/********************************************************************************
+      You should't have to change anything below this.
+      
********************************************************************************/
+      //Defining variables
+      
+      var ltop;
+      var tim=0;
+      
+      //Object constructor
+      function makeMenu(obj,nest){
+          nest=(!nest) ? '':'document.'+nest+'.'
+          if (n) this.css=eval(nest+'document.'+obj)
+          else if (ns6) this.css=document.getElementById(obj).style
+          else if (ie) this.css=eval(obj+'.style')                             
                
+       this.state=1
+       this.go=0
+              if (n) this.width=this.css.document.width
+              else if (ns6) this.width=document.getElementById(obj).offsetWidth
+              else if (ie) this.width=eval(obj+'.offsetWidth')
+       this.left=b_getleft
+          this.obj = obj + "Object";   eval(this.obj + "=this")        
+      }
+      //Get's the top position.
+      function b_getleft(){
+              if (n||ns6){ gleft=parseInt(this.css.left)}
+              else if (ie){ gleft=eval(this.css.pixelLeft)}
+       return gleft;
+      }
+      
/********************************************************************************
+      Deciding what way to move the menu (this is called onmouseover, 
onmouseout or onclick)
+      
********************************************************************************/
+      function moveMenu(){
+       if(!oMenu.state){
+               clearTimeout(tim)
+               mIn()   
+       }else{
+               clearTimeout(tim)
+               mOut()
+       }
+      }
+      //Menu in
+      function mIn(){
+       if(oMenu.left()>-oMenu.width+lshow){
+               oMenu.go=1
+               oMenu.css.left=oMenu.left()-move
+               tim=setTimeout("mIn()",menuSpeed)
+       }else{
+               oMenu.go=0
+               oMenu.state=1
+       }       
+      }
+      //Menu out
+      function mOut(){
+       if(oMenu.left()<0){
+               oMenu.go=1
+               oMenu.css.left=oMenu.left()+move
+               tim=setTimeout("mOut()",menuSpeed)
+       }else{
+               oMenu.go=0
+               oMenu.state=0
+       }       
+      }
+      
/********************************************************************************
+      Checking if the page is scrolled, if it is move the menu after
+      
********************************************************************************/
+      function checkScrolled(){
+       if(!oMenu.go) oMenu.css.top=eval(scrolled)+parseInt(ltop)
+       if(n||ns6) setTimeout('checkScrolled()',30)
+      }
+      
/********************************************************************************
+      Inits the page, makes the menu object, moves it to the right place, 
+      show it
+      
********************************************************************************/
+      function menuInit(){
+       oMenu=new makeMenu('divMenu')
+              if (n||ns6) scrolled="window.pageYOffset"
+              else if (ie) scrolled="document.body.scrollTop"
+       oMenu.css.left=-oMenu.width+lshow
+              if (n||ns6) ltop=oMenu.css.top
+              else if (ie) ltop=oMenu.css.pixelTop
+       oMenu.css.visibility='visible'
+       if(moveOnScroll) ie?window.onscroll=checkScrolled:checkScrolled();
+
+      }
+      
+      
+      //Initing menu on pageload
+      window.onload=menuInit;
+]]>
+</script>
+
+   <div id="divMenu" 
+        style="position:absolute; top:0; left:0; visibility:hidden; 
+               background-color:lightskyblue">
+     <nobr>
+           <span 
+            style=" font-weight:normal;background-color: rgb(255, 255, 153);">
+       <a onclick="moveMenu()" 
+         style=" font-weight:normal;background-color:orange;
+                 text-decoration:none">[M]</a>
+           </span>
+           <xsl:text>&#160;</xsl:text>
+
+
+           <span style=" font-weight:normal;background-color: white;">
+             [<a href="#top">Top</a>]
+           </span>
+           <xsl:text>&#160;</xsl:text>
+
+         <xsl:if test="$showSplitNavigationTool">
+             <span style="background-color: white;">
+               [
+               <a href="javascript:unSplit()">Un </a>
+               / Split
+               <a href="javascript:split(1)"> V </a>
+               or
+               <a href="javascript:split(0)"> H</a>
+               ]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+         </xsl:if>
+
+          <xsl:if test="$showResultSummarySection">
+             <span style=" font-weight:normal;background-color: white;">
+               [<a href="#summary">Result Summary</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+          </xsl:if>
+
+
+          <xsl:if test="$showResultDetailSection">
+             <span style=" font-weight:normal;background-color: white;">
+               [<a href="#summaryByTestUnit">Result Detail</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+         </xsl:if>
+
+
+          <xsl:if test="$showErrorSummarySection">
+             <span style=" font-weight:normal;background-color: white;">
+               [<a href="#testResultErrorSummary">Error Summary</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+         </xsl:if>
+
+
+          <xsl:if test="$showErrorDetailSection">
+             <span style=" font-weight:normal;background-color: white;">
+                [<a href="#testResultWithErrors">Error Detail</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+         </xsl:if>
+
+          <xsl:if test="$showFilesSection">
+             <span style=" font-weight:normal;background-color: white;">
+               [<a href="#files">Files</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+         </xsl:if>
+
+          <xsl:if test="$showSetupSection">
+             <span style=" font-weight:normal;background-color: white;">
+               [<a href="#metaInfo">Setup</a>]
+             </span>
+             <xsl:text>&#160;</xsl:text>
+         </xsl:if>
+
+           <xsl:text>&#160;</xsl:text>
+       <a onclick="moveMenu()" 
+         style=" font-weight:normal;background-color:orange;
+                text-decoration:none">[MENU]</a>
+     </nobr>
+   </div>     
+  </xsl:template>
+
+  <!-- Window frame script -->
+  &window-frame-script;
+
+
+  <xsl:template name="tooltipScript">
+
+   <div id="dhtmltooltip"></div>
+   <script type="text/javascript">
+    <![CDATA[
+    /***********************************************
+    * Cool DHTML tooltip script- Dynamic Drive DHTML code library 
(www.dynamicdrive.com)
+    * This notice MUST stay intact for legal use
+    * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
+    ***********************************************/
+    
+    var offsetxpoint=-60 //Customize x offset of tooltip
+    var offsetypoint=20 //Customize y offset of tooltip
+    var ie=document.all
+    var ns6=document.getElementById && !document.all
+    var enabletip=false
+    if (ie||ns6)
+    var tipobj=document.all? document.all["dhtmltooltip"] : 
document.getElementById? document.getElementById("dhtmltooltip") : ""
+    
+    function ietruebody(){
+    return (document.compatMode && document.compatMode!="BackCompat")? 
document.documentElement : document.body
+    }
+    
+    function ddrivetip(thetext, thecolor, thewidth){
+    if (ns6||ie){
+    if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
+    if (typeof thecolor!="undefined" && thecolor!="") 
tipobj.style.backgroundColor=thecolor
+    tipobj.innerHTML=thetext
+    enabletip=true
+    return false
+    }
+    }
+    
+    function positiontip(e){
+    if (enabletip){
+    var curX=(ns6)?e.pageX : event.x+ietruebody().scrollLeft;
+    var curY=(ns6)?e.pageY : event.y+ietruebody().scrollTop;
+    //Find out how close the mouse is to the corner of the window
+    var rightedge=ie&&!window.opera? 
ietruebody().clientWidth-event.clientX-offsetxpoint : 
window.innerWidth-e.clientX-offsetxpoint-20
+    var bottomedge=ie&&!window.opera? 
ietruebody().clientHeight-event.clientY-offsetypoint : 
window.innerHeight-e.clientY-offsetypoint-20
+    
+    var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
+    
+    //if the horizontal distance isn't enough to accomodate the width of the 
context menu
+    if (rightedge<tipobj.offsetWidth)
+    //move the horizontal position of the menu to the left by it's width
+    tipobj.style.left=ie? 
ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : 
window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
+    else if (curX<leftedge)
+    tipobj.style.left="5px"
+    else
+    //position the horizontal position of the menu where the mouse is 
positioned
+    tipobj.style.left=curX+offsetxpoint+"px"
+    
+    //same concept with the vertical position
+    if (bottomedge<tipobj.offsetHeight)
+    tipobj.style.top=ie? 
ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : 
window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
+    else
+    tipobj.style.top=curY+offsetypoint+"px"
+    tipobj.style.visibility="visible"
+    }
+    }
+    
+    function hideddrivetip(){
+    if (ns6||ie){
+    enabletip=false
+    tipobj.style.visibility="hidden"
+    tipobj.style.left="-1000px"
+    tipobj.style.backgroundColor=''
+    tipobj.style.width=''
+    }
+    }
+    
+    document.onmousemove=positiontip
+    
+    ]]>
+   </script>
+
+  </xsl:template>
+
+
+  <xsl:template name="filterScript">
+
+    <script language="JavaScript1.2">
+<![CDATA[
+
+     function report_init(){
+       TF_disableFilter;
+     }
+
+
+     function TF_disableFilter() {
+       document.errorSummaryFilter.display = "none";
+       document.resultSummaryFilter.display = "none";
+     }
+
+     function _TF_trimWhitespace(txt) {
+       var strTmp = txt;
+       //trimming from the front
+       for (counter=0; counter<strTmp.length; counter++)
+               if (strTmp.charAt(counter) != " ")
+                       break;
+       //trimming from the back
+       strTmp = strTmp.substring(counter,strTmp.length);
+       counter = strTmp.length - 1;
+       for (counter; counter>=0; counter--)
+               if (strTmp.charAt(counter) != " ")
+                       break;
+       return strTmp.substring(0, counter+1);
+     }
+     
+     function _TF_showAll(tb) {
+       for (i=0;i<tb.rows.length;i++)
+       {
+               tb.rows[i].style.display = "";
+       }
+     }
+     
+     function _TF_shouldShow(type, con, val) {
+      var sameCaseCon = con.toLowerCase();
+      var sameCaseVal = val.toLowerCase();
+       var toshow=true;
+       if (type != null) type = type.toLowerCase();
+       switch (type)
+       {
+               case "item":
+                       var strarray = sameCaseVal.split(",");
+                       innershow = false;
+                       for (ss=0;ss<strarray.length;ss++){
+                               if 
(sameCaseCon==_TF_trimWhitespace(strarray[ss])){
+                                       innershow=true;
+                                       break;
+                               }
+                       }
+                       if (innershow == false)
+                               toshow=false;
+               break
+               case "full":
+                       if (sameCaseVal!=sameCaseCon)
+                               toshow = false;
+               break
+               case "substring":
+                       if (sameCaseVal.indexOf(sameCaseCon)<0)
+                               toshow = false;
+               break
+               default: //is "substring1" search
+                       if (sameCaseVal.indexOf(sameCaseCon)!=0) //pattern must 
start from 1st char
+                               toshow = false;
+                       if (sameCaseCon.charAt(con.length-1) == " ")
+                       { //last char is a space, so lets do a full search as 
well
+                               if (_TF_trimWhitespace(con) != sameCaseVal)
+                                       toshow = false;
+                               else
+                                       toshow = true;
+                       }
+               break
+       }
+       return toshow;
+     }
+     
+     function _TF_filterTable(tb, conditions) {
+       //given an array of conditions, lets search the table
+       for (i=0;i<tb.rows.length;i++)
+       {
+               var show = true;
+               var rw = tb.rows[i];
+               for (j=0;j<rw.cells.length;j++)
+               {
+                       var cl = rw.cells[j];
+                       for (k=0;k<conditions.length;k++)
+                       {
+                               var colKey = cl.getAttribute("TF_colKey");
+                               if (colKey == null) //attribute not found
+                                       continue; //so lets not search on this 
cell.
+                               if (conditions[k].name.toUpperCase() == 
colKey.toUpperCase())
+                               {
+                                       var tbVal = 
cl.getAttribute("TF_colValue");
+                                       var conVals = conditions[k].value;
+                                       if (conditions[k].single) //single value
+                                       { 
+                                               show = 
_TF_shouldShow(conditions[k].type, conditions[k].value, 
cl.getAttribute("TF_colValue"));
+                                       } else { //multiple values
+                                               for 
(l=0;l<conditions[k].value.length;l++)
+                                               {
+                                                       innershow = 
_TF_shouldShow(conditions[k].type, conditions[k].value[l], 
cl.getAttribute("TF_colValue"));
+                                                       if (innershow == true) 
break;
+                                               }
+                                               if (innershow == false)
+                                                       show = false;
+                                       }
+                               }
+                       }
+                       //if any condition has failed, then we stop the 
matching (due to AND behaviour)
+                       if (show == false)
+                               break;
+               }
+               if (show == true)
+                       tb.rows[i].style.display = "";
+               else
+                       tb.rows[i].style.display = "none";
+       }
+     }
+     
+     /** PUBLIC FUNCTIONS **/
+     //main function
+     function TF_filterTable(tb, frm) {
+       var conditions = new Array();
+       if (frm.style.display == "none") //filtering is off
+               return _TF_showAll(tb);
+     
+       //go thru each type of input elements to figure out the filter 
conditions
+       var inputs = frm.elements;
+       for (i=0;i<inputs.length;i++)
+       { //looping thru all INPUT elements
+               if (inputs[i].getAttribute("TF_colKey") == null) //attribute 
not found
+                       continue; //we assume that this input field is not for 
us
+               switch (inputs[i].type)
+               {
+                       case "text":
+                       case "hidden":
+                               if(inputs[i].value != "")
+                               {
+                                       index = conditions.length;
+                                       conditions[index] = new Object;
+                                       conditions[index].name = 
inputs[i].getAttribute("TF_colKey");
+                                       conditions[index].type = 
inputs[i].getAttribute("TF_searchType");
+                                       conditions[index].value = 
inputs[i].value;
+                                       conditions[index].single = true;
+                               }
+                       break
+               }
+       }
+       var inputs = frm.elements;
+       //able to do multiple selection box
+       for (i=0;i<inputs.length;i++)
+       { //looping thru all SELECT elements
+               if (inputs[i].getAttribute("TF_colKey") == null) //attribute 
not found
+                       continue; //we assume that this input field is not for 
us
+        if( inputs[i].type != "select-one" && 
+            inputs[i].type != "select" && 
+            inputs[i].type != "select-multiple") // not of type select
+          continue; // only select will be processed
+               var opts = inputs[i].options;
+               var optsSelected = new Array();
+               for (intLoop=0; intLoop<opts.length; intLoop++)
+               { //looping thru all OPTIONS elements
+                       if (opts[intLoop].selected && 
(opts[intLoop].getAttribute("TF_not_used") == null))
+                       {
+                               index = optsSelected.length;
+                               optsSelected[index] = opts[intLoop].value;
+                       }
+               }
+               if (optsSelected.length > 0) //has selected items
+               {
+                       index = conditions.length;
+                       conditions[index] = new Object;
+                       conditions[index].name = 
inputs[i].getAttribute("TF_colKey");
+                       conditions[index].type = 
inputs[i].getAttribute("TF_searchType");
+                       conditions[index].value = optsSelected;
+                       conditions[index].single = false;
+               }
+       }
+       //ok, now that we have all the conditions, lets do the filtering proper
+       _TF_filterTable(tb, conditions);
+     }
+     
+     function TF_enableFilter(tb, frm, val) {
+       if (val.checked) //filtering is on
+       {
+               frm.style.display = "";
+       } else { //filtering is off
+               frm.style.display = "none";
+       }
+       //refresh the table
+       TF_filterTable(tb, frm);
+     }
+     
+     function TF_hide(tb){
+       for (i=0;i<tb.rows.length;i++)
+       {
+         // We will keep the first row, assuming that it has the title.
+         if ( i == 0){
+          tb.rows[0].style.display="";
+         } else {
+                       tb.rows[i].style.display = "none";
+         }
+      }
+     }
+     
+     function TF_hide_separator(tb, val){
+       if (val.checked) //filtering is on
+      {
+               for (i=0;i<tb.rows.length;i++)
+               {
+                       var rw = tb.rows[i];
+                       for (j=0;j<rw.cells.length;j++)
+                       {
+                               var cl = rw.cells[j];
+            var isSeparator = cl.getAttribute("separator");
+  
+            if (isSeparator == null) // attribute not found
+              continue;
+  
+            rw.style.display="none";
+          } // cells
+        } // rows
+      } else {
+               for (i=0;i<tb.rows.length;i++)
+               {
+                       var rw = tb.rows[i];
+                       for (j=0;j<rw.cells.length;j++)
+                       {
+                               var cl = rw.cells[j];
+            var isSeparator = cl.getAttribute("separator");
+  
+            if (isSeparator == null) // attribute not found
+              continue;
+  
+            rw.style.display="";
+          } // cells
+        } // rows
+      }
+      
+     } // 
+
+     function TF_show(tb){
+       for (i=0;i<tb.rows.length;i++)
+       {
+                       tb.rows[i].style.display = "";
+      }
+     }
+
+     function _TF_get_value(input) {
+       switch (input.type)
+       {
+               case "text":
+                        return input.value;
+               break
+               case "select-one":
+                       if (input.selectedIndex > -1) //has value
+                               return input.options(input.selectedIndex).value;
+                       else
+                               return "";
+               break;
+       }
+     }
+]]>
+     
+     </script>
+  </xsl:template>
+
+  <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!--                        JAVASCIPTS AND CSS                         -->
+  <!-- ================================================================ -->
+  <xsl:template name="javascripts">
+        <meta http-equiv="expires" content="Fri, 24 Jan 1977 10:00:00 GMT"/>
+         <xsl:if test="$showFeatureInfo = 1">
+          <title> <xsl:value-of 
+            select="$feature"/> Test Report (BugWatcher) </title>
+         </xsl:if>
+         <xsl:if test="not($showFeatureInfo = 1)">
+          <title> Test Report (BugWatcher) </title>
+         </xsl:if>
+
+         <xsl:value-of select="$cssFile"
+                       disable-output-escaping="yes"/>
+
+        <style type="text/css">
+
+          #dhtmltooltip{
+          position: absolute;
+          width: 500px;
+          border: 2px solid black;
+          padding: 2px;
+          background-color: lightyellow;
+          visibility: hidden;
+          z-index: 100;
+          text-align: center;
+          /*Remove below line to remove shadow. Below line should always 
appear last within this CSS*/
+          filter: 
progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135);
+          }
+
+        </style>
+
+  </xsl:template>
+
+</xsl:stylesheet>

Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/build.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/build.xml      Fri Aug 
 6 15:05:47 2004
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="test" basedir=".">
+
+ <property environment="os"/>
+ <property file="${os.BEEHIVE_HOME}/controls/test/common/path.properties"/>
+
+  <!-- properties for customizing to diff environment -->
+  <property name="xsl.root.dir" value="${controls.test.infra.dir}/gtlf/xsl"/>
+  <property name="tch.dtd.dir"
+            value="${xsl.root.dir}/gtlf-config-2-0.dtd"/>
+
+
+  <!-- +++++++++++++++++++++++ Test Report targets +++++++++++++++++++++++- -->
+
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <target name="test.report.help">
+    <description>
+      help for target [test.report]
+    </description>
+    <echo>
+    ===============================================================
+
+     Target [test.report] generates a html report from
+     the gtlf file of a coconut test run.
+
+      Options:
+     ===========
+     - feature        : feature for which the report is
+                        being generated. If we don't specify one
+                        the report will not include commands for
+                        running failed tests and other feature
+                        specific sections. To get the supported
+                        features, invoke target [features]
+     - gtlf.file      :  gtlf file of the coconut test. The
+                         default is myrun.gtlf.xml
+     - base.file      : Base file name. The value is computed.
+                        from gtlf by stripping any .gtlf, .xml
+                        and .gtlf.xml suffix. Thus, if the
+                        suffix is different, then specify the
+                         base.file name. It is used to
+                        generate links to the test log, out
+                        and td files
+     - output.file    : output name of the report. If no name
+                        is specified, then it defaults to
+                        ${base.file}.html
+     - find.files     : Search files generated by the test and
+                        list them in the files section. Also,
+                        add links for Infra run files. The
+                        default is true.
+
+                        Note: Setting it to false, will turn
+                        of all archive feature, as they rely
+                        on getting the file list to archive.
+
+     Archive Options  : No archiving is done by default. The
+     ----------------   user can zip the file and/or backup
+                        the files in a directory by date time
+                        stamp. The test filest are identified
+                        using the 'first.file' property.
+
+                        Note: find.files should be set to true
+                        (which is the default) to perform
+                        archiving.
+
+     Archive file identification:
+     ****************************
+
+     - first.file     : Name of the first file that gets generated
+                        in the test. The default is
+                        ${wltestantwrapper.properties}. This
+                        property is used to identify the files
+                        modified/created by the test.
+     - first.file.dir : The directory under which the search is
+                        done of the generated test files. The
+                        default is '.'.
+
+     Archive zip file information:
+     *****************************
+
+     - zip.files      : Zips all the files modified/created by the
+                        test. The generated file is
+                        'output.file'.zip. The files are
+                        identified using the 'first.file' property.
+                        To enable, set this property to true.
+                        By default, the files are not zipped.
+     - zip.file.name  : Name of the zip file. It defaults to
+                        ${base.file}_time.zip, where time is
+                        the time stamp when this command is issued.
+                        The time stamp format is
+                        dd_MMMM_yyyy_hh_mm_aa.
+
+     Archive backup dir information:
+     *******************************
+
+     - backup.files   : Backup's the files generated by the test
+                        in directory specified by property
+                        'backup.dir'. The default, is false.
+                        The files are identified using the
+                        'first.file' property.
+     - backup.dir     : directory where the files are backed up.
+                        The default is 'results/${feature}'.
+
+
+    Advanced Options:
+    -----------------
+
+     - hyperlink.files: Creates hyperlink of the files displayed
+                        in the 'files modified/created by test'
+                        section. Default is true.
+     - hyperlink.zip.file.name
+                      : zip file name that will be used in
+                        files section of the report. It's useful
+                        when this name is different from
+                        ${zip.file.name} option. It defaults to
+                        the value of ${zip.file.name}.
+
+     Report Formatting:
+     ------------------
+
+     Let's the user control the content of the report
+
+     -report.sections
+            : sections of the report that should be generated
+              It defaults to 'all'. You can specify a comma
+              separated list of the sections that should show up.
+
+              The sections are:
+
+              all - all the sections are displayed
+              report-summary - report summary section
+              result-summary - result summary section
+              result-detail - result detail section
+              error-summary - error summary section
+              error-detail - error detail section
+              setup - setup section
+              help  - help section
+
+     -report.section.order
+           : The following canned order display the sections
+             specified by 'report.sections':
+
+             result-focus
+               : The order is report-summary->result-summary
+                 ->result-detail->error-summary->files->help/info
+                 ->setup->error-detail
+             error-focus
+               : The order is report-summary->result-summary->
+               error-detail->->error-summary->result-detail->
+               files->help/info->setup
+
+             result-focus is the default.
+
+     -show.success.in.error.summary
+           : controls the display of successful test results in
+             error summary section. It's set to false by default.
+
+     -show.filters
+           : Display the filters in each setion. It's set to
+             true by default.
+
+     -report.navigation.tools
+           : controls the navigation tools that will be available
+             in the report. You can specify a comma separated list
+             of the navigation tools
+
+             The navigation tools are:
+
+             all      - all the tools are displayed
+             menu     - menu of the report
+             toolbar  - toolbar of the report
+             top      - top link displayed in different report
+                        sections
+
+     -report.skin
+           : Controls the report skin that will be used. The skin
+             is applied by a cascading style sheet (css). The
+             currently supported skins are:
+             classic - original default skin
+             junit   - same format as the JUnit reports
+             none    - no skin is applied
+
+             junit is the default skin.
+
+
+    Examples:
+    =========
+
+    ----------------------------------------------------------
+    ant -f build-Test.xml test.report
+
+    generates the test report for myrun.gtlf.xml file.
+
+    ----------------------------------------------------------
+    ant -f build-Test.xml test.report -Dfeature=oam
+
+    generates the test report for myrun.gtlf.xml file. The
+    report now contains commands to rerun the test.
+
+    ----------------------------------------------------------
+    ant -f build-Test.xml test.report \
+     -Dgtlf.file=srcW2KServerNativeIO-oam-load.gtlf.xml
+
+     generates test report for the specified gtfl file.
+
+    ----------------------------------------------------------
+    ant -f build-Test.xml test.report \
+     -Dgtlf.file=srcW2KServerNativeIO-oam-load.gtlf.xml \
+     -Dreport.sections=report-summary,report-detail,error-detail \
+     -Dreport.navigation.tools=toolbar,top
+
+     generates test report for the specified gtfl file. The
+     report only displays report summary, report detail and
+     error detail. Only the toolbar and top navigation tool
+     are present in the report.
+    ----------------------------------------------------------
+    'ant -f build-Test.xml test.report -Dfeature=oam \
+     -Dgtlf.file=srcW2KServerNativeIO-oam-load.gtlf.xml'
+
+     generates test report for the specified gtfl file. The
+     report now contains commands to rerun the test
+
+    ----------------------------------------------------------
+    'ant -f build-Test.xml test.report -Dfind.files=false'
+
+    generates the test report for myrun.gtlf.xml file. The files
+    generated by the test are not listed in the files section.
+
+    This option is usually specified, when we have not run the
+    test locally and want to generate report from a gtlf file got
+    from BT or any othe machine.
+
+    ----------------------------------------------------------
+    'ant -f build-Test.xml test.report -Dzip.file=true
+
+     generates the test report and creates a zip of all the
+     test files
+
+    ----------------------------------------------------------
+    'ant -f build-Test.xml test.report -Dbackup.files=true
+
+     generates the test report and then backup the test files in
+     'results' directory.
+
+    ===============================================================
+    </echo>
+  </target>
+
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <target name="test.report">
+    <description>
+      generates test report. For help, use tgt. [test.report.help]
+    </description>
+
+     <!-- get/set the target properties -->
+    <property name="gtlf.file" value="myrun.gtlf.xml"/>
+    <basename property="base.file.temp" file="${gtlf.file}" suffix=".xml"/>
+    <basename property="base.file" file="${base.file.temp}" suffix=".gtlf"/>
+    <property name="output.file" value="${base.file}.html"/>
+    <property name="hyperlink.files" value="true"/>
+    <property name="report.sections" value="all"/>
+    <property name="report.section.order" value="result-focus"/>
+    <property name="report.navigation.tools" value="all"/>
+    <property name="report.skin" value="junit"/>
+
+    <touch file="${output.file}"/>
+
+    <tstamp>
+      <format property="time" pattern="dd_MMMM_yyyy_hh_mm_aa"/>
+    </tstamp>
+    <property name="zip.file.name" value="${base.file}_${time}.zip"/>
+    <property name="hyperlink.zip.file.name" value="${zip.file.name}"/>
+
+    <delete file="${output.file}"/>
+    <delete file="${output.file}.zip"/>
+
+    <condition property="show.feature.info" value="1">
+      <isset property="feature"/>
+    </condition>
+    <condition property="show.test.files" value="1">
+      <isset property="find.the.files"/>
+    </condition>
+
+    <!-- show the filter -->
+    <property name="show.filters" value="true"/>
+    <condition property="show.the.filters" value="1">
+      <istrue value="${show.filters}"/>
+    </condition>
+    <property name="show.the.filters" value="0"/>
+
+    <property name="show.success.in.error.summary" value="false"/>
+    <condition property="show.success.in.error.summary.section" value="1">
+      <istrue value="${show.success.in.error.summary}"/>
+    </condition>
+
+    <!-- load the report skin css -->
+    <loadfile property="css.file"
+              srcfile="${xsl.root.dir}/${report.skin}.css"
+              failonerror="false" />
+
+    <!-- create the test report -->
+    <!-- xsl transform on the gtlf -->
+    <xslt in="${gtlf.file}" out="${output.file}"
+          style="${xsl.root.dir}/TestReport.xsl">
+      <param name="filebasename" expression="${base.file}"/>
+      <param name="feature" expression="${feature}"/>
+      <param name="showFeatureInfo" expression="${show.feature.info}"/>
+      <param name="showTestfiles" expression="${show.test.files}"/>
+      <param name="zipFiles" expression="${zip.files}"/>
+      <param name="zipFileName" expression="${hyperlink.zip.file.name}"/>
+      <param name="gtlfFileName" expression="${gtlf.file}"/>
+      <param name="testFiles" expression="${test.files}"/>
+      <param name="showTheFilters" expression="${show.the.filters}"/>
+      <param name="sections" expression="${report.sections}"/>
+      <param name="navigationTools" expression="${report.navigation.tools}"/>
+      <param name="cssFile" expression="${css.file}"/>
+      <param name="showSuccessInErrorSummary"
+             expression="${show.success.in.error.summary.section}"/>
+      <param name="reportSectionOrder" expression="${report.section.order}"/>
+      <xmlcatalog>
+       <dtd
+         publicId="-//BEA Systems, Inc.//DTD GTLF 1.0//EN"
+         location="${tch.dtd.dir}"/>
+      </xmlcatalog>
+      <outputproperty name="method" value="html"/>
+      <outputproperty name="indent" value="yes"/>
+      <outputproperty name="standalone" value="yes"/>
+    </xslt>
+    <delete file="${xsl.root.dir}/generatedTestReport.xsl"/>
+    <echo message=""/>
+    <echo message="****************************************************"/>
+      <echo message="Generated report [${output.file}]"/>
+    <echo message="*****************************************************"/>
+  </target>
+
+
+</project>

Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/junit.css
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/junit.css      Fri Aug 
 6 15:05:47 2004
@@ -0,0 +1,49 @@
+<style type="text/css">
+      body {
+        font:normal 68% verdana,arial,helvetica;
+        color:#000000;
+      }
+      table tr td, table tr th {
+          font-size: 68%;
+      }
+      table.details tr th{
+        font-weight: bold;
+        text-align:left;
+        background:#a6caf0;
+      }
+      table.details tr td{
+        background:#eeeee0;
+      }
+      
+      p {
+        line-height:1.5em;
+        margin-top:0.5em; margin-bottom:1.0em;
+      }
+      h1 {
+        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
+      }
+      h2 {
+        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% 
verdana,arial,helvetica
+      }
+      h3 {
+        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
+      }
+      h4 {
+        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+      }
+      h5 {
+        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+      }
+      h6 {
+        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+      }
+      .Error {
+        font-weight:bold; color:red;
+      }
+      .Failure {
+        font-weight:bold; color:purple;
+      }
+      .Properties {
+        text-align:right;
+      }
+      </style>

Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/reportutils.jar
==============================================================================
Binary file. No diff available.

Added: 
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/windowFrameScript.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/windowFrameScript.xml  
Fri Aug  6 15:05:47 2004
@@ -0,0 +1,207 @@
+<xsl:template name="windowFrameScripts">
+
+  <!-- HTML structure that will hold vertical and horizontal split data -->
+
+  <!-- HORIZONTAL SPLIT STRUCTURE -->
+  <form id="horizontalForm" style="width:100%;height:96%">
+    <table id="horizontalSpilt" style="width:100%;height:96%"  
+           border="0" cellspacing="0" cellpadding="0">
+      <tr>
+          <td>
+            <iframe id="horizontalFirst" frameborder="1" 
+                    style="width:100%;height:100%" src="">
+            </iframe>
+          </td>
+          <td>
+            <iframe id="horizontalSecond" frameborder="1" 
+                    style="width:100%;height:100%" src="">
+            </iframe>
+          </td>
+      </tr>
+    </table>
+  </form>
+  
+  <!-- VERTICAL SPLIT STRUCTURE -->
+  <form id="verticalForm" style="width:100%;height:96%">
+    <table id="verticalSpilt" style="width:100%;height:100%"  
+           border="0" cellspacing="0" cellpadding="0">
+      <tr>
+        <td>
+           <iframe id="verticalFirst" frameborder="1" 
+                   style="width:100%;height:100%" src="">
+           </iframe>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <iframe id="verticalSecond" frameborder="1" 
+                  style="width:100%;height:100%" src="">
+          </iframe>
+       </td>
+      </tr>
+    </table>
+  </form>
+
+  <script type="text/javascript">
+
+<![CDATA[
+
+//Drop-down Document Viewer- Dynamic Drive (www.dynamicdrive.com)
+//For full source code, 100's more DHTML scripts, and TOS,
+//visit http://www.dynamicdrive.com
+
+
+
+
+//Specify display mode (0 or 1)
+//0 causes document to be displayed in an inline frame, while 1 in a new 
browser window
+//if displaymode=0, configure inline frame attributes (ie: dimensions, intial 
document shown
+
+var displaymode=0
+var verticalSplit = 0
+var horzontalSplit = 0
+
+      document.getElementById("horizontalFirst").style.display="none"
+      document.getElementById("horizontalSecond").style.display="none"
+      document.getElementById("horizontalForm").style.display="none"
+
+      document.getElementById("verticalFirst").style.display="none"
+      document.getElementById("verticalSecond").style.display="none"
+      document.getElementById("verticalForm").style.display="none"
+
+
+function unSplit(){
+  if ( verticalSplit == 1){
+    document.getElementById("verticalFirst").style.display="none"
+    document.getElementById("verticalSecond").style.display="none"
+    document.getElementById("verticalForm").style.display="none"
+  } else if (horizontalSplit == 1){
+    document.getElementById("horizontalFirst").style.display="none"
+    document.getElementById("horizontalSecond").style.display="none"
+    document.getElementById("horizontalForm").style.display="none"
+  }
+
+}
+
+
+function split(doVerticalSplit){
+  var splitUrl = window.location.href
+  verticalSplit = doVerticalSplit
+if (document.getElementById && displaymode==0){
+
+  if ( verticalSplit == 1){
+
+   verticalSplit = 1
+   document.getElementById("horizontalFirst").style.display="none"
+   document.getElementById("horizontalSecond").style.display="none"
+   document.getElementById("horizontalForm").style.display="none"
+
+   document.getElementById("verticalForm").style.display=""
+
+   document.getElementById("verticalSecond").src="http://www.google.com";
+   document.getElementById("verticalFirst").src="http://www.google.com";
+
+   document.getElementById("verticalSecond").style.display=""
+   document.getElementById("verticalSecond").style.display="none"
+   document.getElementById("verticalSecond").style.display=""
+
+   document.getElementById("verticalFirst").style.display=""
+   document.getElementById("verticalFirst").style.display="none"
+   document.getElementById("verticalFirst").style.display=""
+
+   document.getElementById("verticalSecond").src=splitUrl
+   document.getElementById("verticalFirst").src=splitUrl
+
+   document.getElementById("verticalSecond").style.display=""
+   document.getElementById("verticalSecond").style.display="none"
+   document.getElementById("verticalSecond").style.display=""
+
+   document.getElementById("verticalFirst").style.display=""
+   document.getElementById("verticalFirst").style.display="none"
+   document.getElementById("verticalFirst").style.display=""
+
+  } else {
+
+    horizontalSplit = 1
+    document.getElementById("verticalFirst").style.display="none"
+    document.getElementById("verticalSecond").style.display="none"
+    document.getElementById("verticalForm").style.display="none"
+
+    document.getElementById("horizontalForm").style.display=""
+
+    document.getElementById("horizontalSecond").src=splitUrl
+    document.getElementById("horizontalFirst").src=splitUrl
+
+    document.getElementById("horizontalSecond").style.display=""
+    document.getElementById("horizontalSecond").style.display="none"
+    document.getElementById("horizontalSecond").style.display=""
+
+    document.getElementById("horizontalFirst").style.display=""
+    document.getElementById("horizontalFirst").style.display="none"
+    document.getElementById("horizontalFirst").style.display=""
+
+
+  }
+
+
+} else if (document.all && displaymode==0) {
+
+  if ( verticalSplit == 1){
+
+    verticalSplit = 1
+    document.getElementById("horizontalFirst").style.display="none"
+    document.getElementById("horizontalSecond").style.display="none"
+    document.getElementById("horizontalForm").style.display="none"
+
+    document.getElementById("verticalForm").style.display=""
+
+    document.all.verticalSecond.src=splitUrl
+    document.all.verticalFirst.src=splitUrl
+
+    document.getElementById("verticalSecond").style.display="" 
+    document.getElementById("verticalSecond").style.display="none" 
+    document.getElementById("verticalSecond").style.display="" 
+
+    document.getElementById("verticalFirst").style.display=""
+    document.getElementById("verticalFirst").style.display="none"
+    document.getElementById("verticalFirst").style.display=""
+
+  } else {
+
+    horizontalSplit = 1
+    document.getElementById("verticalFirst").style.display="none"
+    document.getElementById("verticalSecond").style.display="none"
+    document.getElementById("verticalForm").style.display="none"
+
+    document.getElementById("horizontalForm").style.display=""
+
+    document.all.horizontalSecond.src=splitUrl
+    document.all.horizontalFirst.src=splitUrl
+
+    document.getElementById("horizontalSecond").style.display="" 
+    document.getElementById("horizontalSecond").style.display="none" 
+    document.getElementById("horizontalSecond").style.display="" 
+
+    document.getElementById("horizontalFirst").style.display=""
+    document.getElementById("horizontalFirst").style.display="none"
+    document.getElementById("horizontalFirst").style.display=""
+
+  }
+
+
+} else{
+  if (!window.win2||win2.closed)
+    win2=window.open(splitUrl)
+  //else if win2 already exists
+  else{
+    win2.location=splitUrl
+    win2.focus()
+  } // if.
+ } // if..
+}  // M - split
+]]>
+
+  </script>
+
+
+</xsl:template>

Added: incubator/beehive/trunk/controls/test/infra/tch/runtime/build.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/runtime/build.xml   Fri Aug 
 6 15:05:47 2004
@@ -0,0 +1,174 @@
+<project name="tch-project" default="usage">
+
+  <property environment="os"/>
+  <property file="${os.BEEHIVE_HOME}/controls/test/common/path.properties"/>
+  
+  <!-- the default base name for the logfiles Blackhawk generates -->
+  <property name="tch.base-logfile-name" value="tch"/>
+
+  <!-- the tch logs go into the dir ant is run from by default -->
+  <property name="log.basedir.default" location="${controls.test.dir}"/>
+
+  <!-- the tch logs go into the dir ant is run from -->
+  <property name="tch.log.basedir" value="${log.basedir.default}"/>
+
+  <!-- may be overridden from the top, a single (lame) system property that -->
+  <!-- should be set -->
+  <property name="test.sysproperty.name" value=""/>
+  <property name="test.sysproperty.value" value=""/>
+
+  <!-- if enabled, at the end of the run, generated an html file -->
+  <!-- from the GTLF log -->
+  <property name="gtlf.transform" value="false"/>
+
+  <!-- if true, generates a valid GTLF header, as far as that's possible -->
+  <property name="gtlf.prepare" value="false"/>
+
+
+  <!-- default for html log file generation, may be overridden from the top -->
+  <property 
+    name="gtlf.base.file" 
+    location="${tch.log.basedir}/${tch.base-logfile-name}"
+  />
+
+  <!-- A few defaults for GTLF -->
+  <property name="gtlf.headerfile" value="gtlf-header-values.txt"/>
+
+  
+
+  <!-- public generate html target -->
+  <target name="generate-html-log">
+    <antcall target="-generate-html-log">
+      <param name="_gtlf.transform" value="true"/>
+    </antcall>
+  </target>
+
+  <!-- private generate html target -->
+  <target name="-generate-html-log" if="_gtlf.transform">
+    <property name="gtlf.file" value="${gtlf.base.file}.xml"/>
+    <property name="output.file" value="${gtlf.base.file}.html"/>
+    
+    <echo message="gtlf.file: ${gtlf.file}"/>
+    <!-- fork Ant because I could not find a more elegant way to get --> 
+    <!-- reportutils.jar onto the classpath -->
+    <java classname="org.apache.tools.ant.Main" fork="true">
+      <classpath>
+        <pathelement path="${java.class.path}"/>
+       <pathelement 
location="${controls.test.infra.dir}/gtlf/xsl/reportutils.jar"/>
+      </classpath>
+      <sysproperty key="gtlf.file" value="${gtlf.file}"/>
+      <sysproperty key="output.file" value="${output.file}"/>
+ 
+      <!-- html customization -->
+      <sysproperty key="show.success.in.error.summary" value="false"/>
+      <sysproperty 
+        key="report.sections" 
+        value="result-summary,result-detail,error-summary,error-detail"
+      />
+      <!--sysproperty key="report.section.order" value="error-focus"/ -->
+      <sysproperty key="report.navigation.tools" value="toolbar,top"/>
+      <sysproperty key="show.filters" value="false"/>
+      <arg value="-f"/>
+      <arg value="${controls.test.infra.dir}/gtlf/xsl/build.xml"/>
+      <arg value="test.report"/>
+      <arg value="-emacs"/>
+    </java>      
+  </target>
+
+  <target name="-init" unless="_init.complete">
+
+    <!-- set up system prop that my be passed from top-->
+    <condition 
+      property="_test.sysproperty.line"
+      value="${test.sysproperty.name}=${test.sysproperty.value}"
+    >
+      <not><equals arg1="${test.sysproperty.name}" arg2=""/></not>
+    </condition>
+    <!-- else set it to empty string -->
+    <property name="_test.sysproperty.line" value=""/>
+
+    <!-- for the message at the end of run, only print dir of logs
+         if it has been reset -->
+    <condition property="_logs.dir" value="${tch.log.basedir}/">
+      <not><equals 
+        arg1="${tch.log.basedir}"
+        arg2="${log.basedir.default}"
+        casesensitive="false"
+      /></not>
+    </condition>
+    <!-- else empty string -->
+    <property name="_logs.dir" value=""/>
+
+    <condition property="_gtlf.transform">
+      <and>
+        <equals  
+          arg1="${gtlf.transform}"  
+          arg2="true"
+          casesensitive="false"
+        />      
+        <!-- don't generate html log if init-mode-only is on -->
+        <equals
+          arg1="${tch.init-mode-only}"
+          arg2="false"
+          casesensitive="false"
+        />
+      </and>
+    </condition>
+
+    <!-- if gtlf logging is disabled explicitly, no need to prepare gtlf -->
+    <!-- however, if upload is enbled, then force prepare also -->
+    <!-- meaning: -->
+    <!-- if ((gtlf.upload || gtlf.prepare) && !tch.log-gtlf==false) -->
+    <condition property="_gtlf.prepare">
+      <and>
+        <or>
+          <equals  
+            arg1="${gtlf.upload}"  
+            arg2="true"
+            casesensitive="false"
+          /> 
+          <equals  
+            arg1="${gtlf.prepare}"  
+            arg2="true"
+            casesensitive="false"
+          />
+        </or> 
+        <not>     
+          <equals  
+            arg1="${tch.log-gtlf}"  
+            arg2="false"
+            casesensitive="false"
+          />      
+        </not>
+      </and>
+    </condition>
+
+    <condition property="_gtlf.upload">
+      <equals  
+        arg1="${gtlf.upload}"  
+        arg2="true"
+        casesensitive="false"
+      />      
+    </condition>
+
+    <property name="_init.complete" value="true"/>
+
+  </target>
+
+  <target name="-write-gtlf-header" if="_gtlf.prepare">
+    <ant dir="${testinfra.gtlf.home}" antfile="build.xml" target="run"/>
+  </target>
+
+  <target name="-validate">
+    <available property="test-suite.exists" file="${test-suite}"/>
+    <fail unless="test-suite.exists" message="Cannot find test-suite with name 
&quot;${test-suite}&quot;. Set the test-suite Ant property (-Dtest-suite) to 
the testfile you want to run."/>
+  </target>
+
+</project>
+
+
+
+
+
+
+

Reply via email to