stevel      2005/08/18 05:32:16

  Modified:    .        WHATSNEW
               src/etc  junit-frames.xsl
  Log:
  bugrep 36226 : error and failure pages.
  
  Revision  Changes    Path
  1.850     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.849
  retrieving revision 1.850
  diff -u -r1.849 -r1.850
  --- WHATSNEW  17 Aug 2005 13:59:28 -0000      1.849
  +++ WHATSNEW  18 Aug 2005 12:32:16 -0000      1.850
  @@ -265,6 +265,9 @@
   
   * New logger, TimestampedLogger, that prints the wall time that a build 
finished/failed
     Use with  -logger org.apache.tools.ant.listener.TimestampedLogger
  +  
  +* <junitreport> now generates pages alltests-errors.html and 
alltests-fails.html, 
  +that list only the errors and failures, respectively. Bugzilla Report: 36226
   
   Changes from Ant 1.6.4 to Ant 1.6.5
   ===================================
  
  
  
  1.26      +171 -15   ant/src/etc/junit-frames.xsl
  
  Index: junit-frames.xsl
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/junit-frames.xsl,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- junit-frames.xsl  21 Jun 2005 12:09:24 -0000      1.25
  +++ junit-frames.xsl  18 Aug 2005 12:32:16 -0000      1.26
  @@ -58,6 +58,25 @@
           <xsl:apply-templates select="." mode="all.classes"/>
       </redirect:write>
   
  +    <!-- create the all-tests.html at the root -->
  +    <redirect:write file="{$output.dir}/all-tests.html">
  +        <xsl:apply-templates select="." mode="all.tests"/>
  +    </redirect:write>
  +
  +    <!-- create the alltests-fails.html at the root -->
  +    <redirect:write file="{$output.dir}/alltests-fails.html">
  +        <xsl:apply-templates select="." mode="all.tests">
  +         <xsl:with-param name="type" select="'fails'"/>
  +     </xsl:apply-templates>
  +    </redirect:write>
  +
  +    <!-- create the alltests-errors.html at the root -->
  +    <redirect:write file="{$output.dir}/alltests-errors.html">
  +        <xsl:apply-templates select="." mode="all.tests">
  +         <xsl:with-param name="type" select="'errors'"/>
  +     </xsl:apply-templates>
  +    </redirect:write>
  +
       <!-- process all packages -->
       <xsl:for-each select="./testsuite[not(./@package = 
preceding-sibling::testsuite/@package)]">
           <xsl:call-template name="package">
  @@ -104,6 +123,20 @@
                   <xsl:value-of disable-output-escaping="yes" 
select="./system-err" />
               </redirect:write>
           </xsl:if>
  +     <xsl:if test="@failures != 0">
  +         <redirect:write file="{$output.dir}/{$package.dir}/[EMAIL 
PROTECTED]@name}-fails.html">
  +             <xsl:apply-templates select="." mode="class.details">
  +                 <xsl:with-param name="type" select="'fails'"/>
  +             </xsl:apply-templates>
  +         </redirect:write>
  +     </xsl:if>
  +     <xsl:if test="@errors != 0">
  +         <redirect:write file="{$output.dir}/{$package.dir}/[EMAIL 
PROTECTED]@name}-errors.html">
  +             <xsl:apply-templates select="." mode="class.details">
  +                 <xsl:with-param name="type" select="'errors'"/>
  +             </xsl:apply-templates>
  +         </redirect:write>
  +     </xsl:if>
       </xsl:for-each>
   </xsl:template>
   
  @@ -179,6 +212,69 @@
   }
   </xsl:template>
   
  +<!-- Create list of all/failed/errored tests -->
  +<xsl:template match="testsuites" mode="all.tests">
  +    <xsl:param name="type" select="'all'"/>
  +    <html>
  +     <xsl:variable name="title">
  +         <xsl:choose>
  +             <xsl:when test="$type = 'fails'">
  +                 <xsl:text>All Failures</xsl:text>
  +             </xsl:when>
  +             <xsl:when test="$type = 'errors'">
  +                 <xsl:text>All Errors</xsl:text>
  +             </xsl:when>
  +             <xsl:otherwise>
  +                 <xsl:text>All Tests</xsl:text>
  +             </xsl:otherwise>
  +         </xsl:choose>
  +     </xsl:variable>
  +     <head>
  +         <title>Unit Test Results: <xsl:value-of select="$title"/></title>
  +         <xsl:call-template name="create.stylesheet.link">
  +                <xsl:with-param name="package.name"/>
  +            </xsl:call-template>
  +     </head>
  +     <body>
  +         <xsl:attribute 
name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
  +            <xsl:call-template name="pageHeader"/>
  +            <h2><xsl:value-of select="$title"/></h2>
  +
  +            <table class="details" border="0" cellpadding="5" 
cellspacing="2" width="95%">
  +             <xsl:call-template name="testcase.test.header">
  +                 <xsl:with-param name="show.class" select="'yes'"/>
  +             </xsl:call-template>
  +             <!--
  +                test can even not be started at all (failure to load the 
class)
  +             so report the error directly
  +             -->
  +                <xsl:if test="./error">
  +                    <tr class="Error">
  +                        <td colspan="4"><xsl:apply-templates 
select="./error"/></td>
  +                    </tr>
  +                </xsl:if>
  +             <xsl:choose>
  +                 <xsl:when test="$type = 'fails'">
  +                     <xsl:apply-templates select=".//testcase[failure]" 
mode="print.test">
  +                         <xsl:with-param name="show.class" select="'yes'"/>
  +                     </xsl:apply-templates>
  +                 </xsl:when>
  +                 <xsl:when test="$type = 'errors'">
  +                     <xsl:apply-templates select=".//testcase[error]" 
mode="print.test">
  +                         <xsl:with-param name="show.class" select="'yes'"/>
  +                     </xsl:apply-templates>
  +                 </xsl:when>
  +                 <xsl:otherwise>
  +                     <xsl:apply-templates select=".//testcase" 
mode="print.test">
  +                         <xsl:with-param name="show.class" select="'yes'"/>
  +                     </xsl:apply-templates>
  +                 </xsl:otherwise>
  +             </xsl:choose>
  +            </table>
  +        </body>
  +    </html>
  +</xsl:template>
  +
   
   <!-- ======================================================================
       This page is created for every testsuite class.
  @@ -186,6 +282,7 @@
       testcase methods.
        ====================================================================== 
-->
   <xsl:template match="testsuite" mode="class.details">
  +    <xsl:param name="type" select="'all'"/>
       <xsl:variable name="package.name" select="@package"/>
       <xsl:variable name="class.name"><xsl:if test="not($package.name = 
'')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of 
select="@name"/></xsl:variable>
       <html>
  @@ -239,19 +336,39 @@
                   <xsl:apply-templates select="." mode="print.test"/>
               </table>
   
  -            <h2>Tests</h2>
  +         <xsl:choose>
  +             <xsl:when test="$type = 'fails'">
  +                 <h2>Failures</h2>
  +             </xsl:when>
  +             <xsl:when test="$type = 'errors'">
  +                 <h2>Errors</h2>
  +             </xsl:when>
  +             <xsl:otherwise>
  +                 <h2>Tests</h2>
  +             </xsl:otherwise>
  +         </xsl:choose>
               <table class="details" border="0" cellpadding="5" 
cellspacing="2" width="95%">
  -        <xsl:call-template name="testcase.test.header"/>
  -              <!--
  -              test can even not be started at all (failure to load the class)
  -              so report the error directly
  -              -->
  +             <xsl:call-template name="testcase.test.header"/>
  +             <!--
  +                test can even not be started at all (failure to load the 
class)
  +             so report the error directly
  +             -->
                   <xsl:if test="./error">
                       <tr class="Error">
                           <td colspan="4"><xsl:apply-templates 
select="./error"/></td>
                       </tr>
                   </xsl:if>
  -                <xsl:apply-templates select="./testcase" mode="print.test"/>
  +             <xsl:choose>
  +                 <xsl:when test="$type = 'fails'">
  +                     <xsl:apply-templates select="./testcase[failure]" 
mode="print.test"/>
  +                 </xsl:when>
  +                 <xsl:when test="$type = 'errors'">
  +                     <xsl:apply-templates select="./testcase[error]" 
mode="print.test"/>
  +                 </xsl:when>
  +                 <xsl:otherwise>
  +                     <xsl:apply-templates select="./testcase" 
mode="print.test"/>
  +                 </xsl:otherwise>
  +             </xsl:choose>
               </table>
               <div class="Properties">
                   <a>
  @@ -445,9 +562,9 @@
                       <xsl:otherwise>Pass</xsl:otherwise>
                   </xsl:choose>
               </xsl:attribute>
  -            <td><xsl:value-of select="$testCount"/></td>
  -            <td><xsl:value-of select="$failureCount"/></td>
  -            <td><xsl:value-of select="$errorCount"/></td>
  +            <td><a title="Display all tests" 
href="all-tests.html"><xsl:value-of select="$testCount"/></a></td>
  +            <td><a title="Display all failures" 
href="alltests-fails.html"><xsl:value-of select="$failureCount"/></a></td>
  +            <td><a title="Display all errors" 
href="alltests-errors.html"><xsl:value-of select="$errorCount"/></a></td>
               <td>
                   <xsl:call-template name="display-percent">
                       <xsl:with-param name="value" select="$successRate"/>
  @@ -593,7 +710,11 @@
   
   <!-- method header -->
   <xsl:template name="testcase.test.header">
  +    <xsl:param name="show.class" select="''"/>
       <tr valign="top">
  +     <xsl:if test="boolean($show.class)">
  +         <th>Class</th>
  +     </xsl:if>
           <th>Name</th>
           <th>Status</th>
           <th width="80%">Type</th>
  @@ -612,10 +733,28 @@
                   <xsl:otherwise>Pass</xsl:otherwise>
               </xsl:choose>
           </xsl:attribute>
  -        <td><a href="[EMAIL PROTECTED]@name}.html"><xsl:value-of 
select="@name"/></a></td>
  -        <td><xsl:apply-templates select="@tests"/></td>
  -        <td><xsl:apply-templates select="@errors"/></td>
  -        <td><xsl:apply-templates select="@failures"/></td>
  +        <td><a title="Display all tests" href="[EMAIL 
PROTECTED]@name}.html"><xsl:value-of select="@name"/></a></td>
  +        <td><a title="Display all tests" href="[EMAIL 
PROTECTED]@name}.html"><xsl:apply-templates select="@tests"/></a></td>
  +        <td>
  +         <xsl:choose>
  +             <xsl:when test="@errors != 0">
  +                 <a title="Display only errors" href="[EMAIL 
PROTECTED]@name}-errors.html"><xsl:apply-templates select="@errors"/></a>
  +             </xsl:when>
  +             <xsl:otherwise>
  +                 <xsl:apply-templates select="@errors"/>
  +             </xsl:otherwise>
  +         </xsl:choose>
  +     </td>
  +        <td>
  +         <xsl:choose>
  +             <xsl:when test="@failures != 0">
  +                 <a title="Display only failures" href="[EMAIL 
PROTECTED]@name}-fails.html"><xsl:apply-templates select="@failures"/></a>
  +             </xsl:when>
  +             <xsl:otherwise>
  +                 <xsl:apply-templates select="@failures"/>
  +             </xsl:otherwise>
  +         </xsl:choose>
  +     </td>
           <td><xsl:call-template name="display-time">
                   <xsl:with-param name="value" select="@time"/>
               </xsl:call-template>
  @@ -626,6 +765,7 @@
   </xsl:template>
   
   <xsl:template match="testcase" mode="print.test">
  +    <xsl:param name="show.class" select="''"/>
       <tr valign="top">
           <xsl:attribute name="class">
               <xsl:choose>
  @@ -634,7 +774,23 @@
                   <xsl:otherwise>TableRowColor</xsl:otherwise>
               </xsl:choose>
           </xsl:attribute>
  -        <td><xsl:value-of select="@name"/></td>
  +     <xsl:variable name="class.href">
  +         <xsl:value-of select="concat(translate(../@package,'.','/'), '/', 
../@id, '_', ../@name, '.html')"/>
  +     </xsl:variable>
  +     <xsl:if test="boolean($show.class)">
  +         <td><a href="{$class.href}"><xsl:value-of 
select="../@name"/></a></td>
  +     </xsl:if>
  +        <td>
  +         <a name="[EMAIL PROTECTED]"/>
  +         <xsl:choose>
  +             <xsl:when test="boolean($show.class)">
  +                 <a href="{concat($class.href, '#', @name)}"><xsl:value-of 
select="@name"/></a>
  +             </xsl:when>
  +             <xsl:otherwise>
  +                 <xsl:value-of select="@name"/>
  +             </xsl:otherwise>
  +         </xsl:choose>
  +     </td>
           <xsl:choose>
               <xsl:when test="failure">
                   <td>Failure</td>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to