You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Michael Giroux <ml...@gmail.com> on 2007/01/03 22:20:37 UTC

Re: Invalid use of string utils in

Antoine,
Sorry for the long delay in response.  I'm just back from 3 weeks of
vacation.

I have installed ANT 1.7 and retested with the new template.  The good news
is that the new br-replace template does successfully replace newline with
<br> tags.  There is an important difference between the results produced
with this approach, and the approach I posted in the initial message (using
<pre> ... </pre> tags to wrap the output.  The difference is that in HTML,
multiple spaces are suppressed by most browsers resulting in output that is
not indented as originally produced by Exception.printStackTrace().

For example, the results using the ANT 1.7 version of the template is one
very long line of exception trace with <br/> tags as below:
junit.framework.AssertionFailedError: 38 compile Errors in
SimpleClassesJUnitTest project.<br/> at junit.framework.Assert.fail(
Assert.java:47)<br/>

this results in display as below (note lack of indenting for 2nd and
subsequent lines):
junit.framework.AssertionFailedError: Build Errors expected:<0> but was:<38>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:282)
at junit.framework.Assert.assertEquals(Assert.java:64)

The expected output would have been (note indenting):
junit.framework.AssertionFailedError: Build Errors expected:<0> but was:<38>
  at junit.framework.Assert.fail(Assert.java:47)
  at junit.framework.Assert.failNotEquals(Assert.java:282)
  at junit.framework.Assert.assertEquals(Assert.java:64)

The desired output is achieved using the technique I posted in the initial
message and shown here for your convenience.  Note the addition of <pre> ...
</pre> tags, and the xsl:value-of select="." to include the exception data.
If you can view this message in HTML, the changes are color coded tho
highlight them.


<!-- Style for the error and failure in the tescase template -->
<xsl:template name="display-failures">
    <xsl:choose>
        <xsl:when test="not(@message)">N/A</xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="@message"/>
        </xsl:otherwise>
    </xsl:choose>
    <!-- display the stacktrace -->
*    <pre>  <!-- mg -->*
    <code>
        <br/>
     *   <xsl:value-of select="." />  <!-- mg -->*
*        <!--  mg *
*            remove the original call to br-replace template
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="."/>
        </xsl:call-template>
         -->
*    </code>
*    </pre>  <!-- mg -->*
    <!-- the later is better but might be problematic for non-21"
monitors... -->
    <!--pre><xsl:value-of select="."/></pre-->
</xsl:template>


The original code (below) does not use <pre> and calls br-replace to replace
NL w/ <br> tags.

    <!-- display the stacktrace -->
    <code>
        <br/><br/>
        <xsl:call-template name="br-replace">
            <xsl:with-param name="word" select="."/>
        </xsl:call-template>
    </code>
Do you still need this posted to bugzilla?

Michael