aboutsummaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorShevek <[email protected]>2008-03-21 23:05:04 +0000
committerShevek <[email protected]>2008-03-21 23:05:04 +0000
commit5ff55648127c8a8e1b9829775045af986e37647c (patch)
treeb28209b1efe12824fbdcabd4ee9073e93ca30636 /etc
parentfca34200881fcaf7b84b4210f7a5f40c8925c4d1 (diff)
move stuff into trunk
Diffstat (limited to 'etc')
-rw-r--r--etc/MANIFEST2
-rw-r--r--etc/build.properties64
-rw-r--r--etc/checkstyle/config.xml178
-rw-r--r--etc/global.xml107
-rw-r--r--etc/junit/xsl/junit-frames.xsl716
-rw-r--r--etc/junit/xsl/junit-noframes.xsl461
-rw-r--r--etc/targets/global-checkstyle.xml23
-rw-r--r--etc/targets/global-clean.xml8
-rw-r--r--etc/targets/global-cobertura.xml35
-rw-r--r--etc/targets/global-compile.xml35
-rw-r--r--etc/targets/global-findbugs.xml47
-rw-r--r--etc/targets/global-inject.xml20
-rw-r--r--etc/targets/global-jar.xml35
-rw-r--r--etc/targets/global-javadoc.xml53
-rw-r--r--etc/targets/global-junit.xml99
-rw-r--r--etc/targets/global-tar.xml84
-rw-r--r--etc/targets/global-taskdefs.xml65
-rw-r--r--etc/targets/global-verify.xml23
-rw-r--r--etc/targets/global-vpp.xml32
19 files changed, 2087 insertions, 0 deletions
diff --git a/etc/MANIFEST b/etc/MANIFEST
new file mode 100644
index 0000000..95dd104
--- /dev/null
+++ b/etc/MANIFEST
@@ -0,0 +1,2 @@
+Class-Path: log4j.jar dnsjava-2.0.0.jar
+Main-Class: org.anarres.iengine.Main
diff --git a/etc/build.properties b/etc/build.properties
new file mode 100644
index 0000000..5b54165
--- /dev/null
+++ b/etc/build.properties
@@ -0,0 +1,64 @@
+global.version = 1.0.8
+global.name = anarres-cpp
+
+global.dir.arch = ${global.dir.root}/arch
+global.dir.etc = ${global.dir.root}/etc
+global.dir.lib = ${global.dir.root}/lib
+global.dir.tmp = ${global.dir.root}/build/tmp
+
+global.dir.licenses = ${global.dir.etc}/licenses
+
+global.dir.src = ${global.dir.root}/src
+global.dir.src.docs = ${global.dir.root}/src/docs
+global.dir.src.java = ${global.dir.root}/src/java
+global.dir.src.resources = ${global.dir.root}/src/resources
+global.dir.src.scripts = ${global.dir.root}/src/scripts
+global.dir.src.sql = ${global.dir.root}/src/sql
+global.dir.src.tests = ${global.dir.root}/src/tests
+global.dir.src.tools = ${global.dir.root}/src/tools
+
+# XXX Add hacks.
+
+global.dir.build = ${global.dir.root}/build
+global.dir.build.classes = ${global.dir.root}/build/classes
+global.dir.build.cobertura = ${global.dir.root}/build/cobertura
+global.dir.build.depcache = ${global.dir.root}/build/depcache
+global.dir.build.dist = ${global.dir.root}/build/dist
+global.dir.build.docs = ${global.dir.root}/build/docs
+global.dir.build.hbm = ${global.dir.root}/build/hbm
+global.dir.build.jar = ${global.dir.root}/build/jar
+global.dir.build.java = ${global.dir.root}/build/java
+global.dir.build.javadoc = ${global.dir.root}/build/javadoc
+global.dir.build.lib = ${global.dir.root}/build/lib
+global.dir.build.reports = ${global.dir.root}/build/reports
+global.dir.build.sql = ${global.dir.root}/build/sql
+global.dir.build.tar = ${global.dir.root}/build/tar
+global.dir.build.test-xml = ${global.dir.root}/build/test-xml
+global.dir.build.tests = ${global.dir.root}/build/tests
+global.dir.build.tools = ${global.dir.root}/build/tools
+global.dir.build.wsdd = ${global.dir.root}/build/wsdd
+global.dir.build.wsdl = ${global.dir.root}/build/wsdl
+global.dir.build.xml = ${global.dir.root}/build/xml
+
+global.file.jar.name = ${global.name}.jar
+global.file.jar = ${global.dir.build.tar}/lib/${global.file.jar.name}
+global.file.bintar.name = ${global.name}-bin-${global.version}.tar.gz
+global.file.bintar = ${global.dir.build.dist}/${global.file.bintar.name}
+global.file.srctar.name = ${global.name}-src-${global.version}.tar.gz
+global.file.srctar = ${global.dir.build.dist}/${global.file.srctar.name}
+
+build.compiler = modern
+system.javac.optimize = true
+system.javac.debug = true
+system.javac.source = 1.5
+system.javac.target = ${system.javac.source}
+system.javac.deprecation = true
+
+# system.javadoc.access = package
+system.javadoc.access = protected
+system.javadoc.source = ${system.javac.source}
+system.javadoc.offline = false
+
+system.jar.compress = true
+
+wsdl.server.http.url = http://localhost:8080/axis
diff --git a/etc/checkstyle/config.xml b/etc/checkstyle/config.xml
new file mode 100644
index 0000000..07ff52a
--- /dev/null
+++ b/etc/checkstyle/config.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+ "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+<!--
+
+ Checkstyle configuration that checks the sun coding conventions from:
+
+ - the Java Language Specification at
+ http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+ - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+ - the Javadoc guidelines at
+ http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+ - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+ - some best practices
+
+ Checkstyle is very configurable. Be sure to read the documentation at
+ http://checkstyle.sf.net (or in your downloaded distribution).
+
+ Most Checks are configurable, be sure to consult the documentation.
+
+ To completely disable a check, just comment it out or delete it from the file.
+
+ Finally, it is worth reading the documentation.
+
+-->
+<!--
+ Modified for karmaphere use
+-->
+
+<module name="Checker">
+
+ <!-- Checks that a package.html file exists for each package. -->
+ <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
+ <!-- Currently too numerous, disabled -->
+ <!--module name="PackageHtml"/-->
+
+ <!-- Checks whether files end with a new line. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+ <module name="NewlineAtEndOfFile"/>
+
+ <!-- Checks that property files contain the same keys. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+ <module name="Translation"/>
+
+
+ <module name="TreeWalker">
+
+ <!-- Checks for Javadoc comments. -->
+ <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+ <!-- Currently too numerous -->
+ <!--module name="JavadocMethod"/-->
+ <!--module name="JavadocType"/-->
+ <!--module name="JavadocVariable"/-->
+ <!--module name="JavadocStyle"/-->
+
+
+ <!-- Checks for Naming Conventions. -->
+ <!-- See http://checkstyle.sf.net/config_naming.html -->
+ <module name="ConstantName"/>
+ <module name="LocalFinalVariableName"/>
+ <module name="LocalVariableName"/>
+ <module name="MemberName"/>
+ <module name="MethodName"/>
+ <module name="PackageName"/>
+ <module name="ParameterName"/>
+ <module name="StaticVariableName"/>
+ <module name="TypeName"/>
+
+
+ <!-- Checks for Headers -->
+ <!-- See http://checkstyle.sf.net/config_header.html -->
+ <!-- <module name="Header"> -->
+ <!-- The follow property value demonstrates the ability -->
+ <!-- to have access to ANT properties. In this case it uses -->
+ <!-- the ${basedir} property to allow Checkstyle to be run -->
+ <!-- from any directory within a project. See property -->
+ <!-- expansion, -->
+ <!-- http://checkstyle.sf.net/config.html#properties -->
+ <!-- <property -->
+ <!-- name="headerFile" -->
+ <!-- value="${basedir}/java.header"/> -->
+ <!-- </module> -->
+
+ <!-- Following interprets the header file as regular expressions. -->
+ <!-- <module name="RegexpHeader"/> -->
+
+
+ <!-- Checks for imports -->
+ <!-- See http://checkstyle.sf.net/config_import.html -->
+ <module name="AvoidStarImport"/>
+ <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+ <module name="RedundantImport"/>
+ <module name="UnusedImports"/>
+
+
+ <!-- Checks for Size Violations. -->
+ <!-- See http://checkstyle.sf.net/config_sizes.html -->
+ <module name="FileLength"/>
+ <module name="LineLength"/>
+ <module name="MethodLength"/>
+ <module name="ParameterNumber"/>
+
+
+ <!-- Checks for whitespace -->
+ <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+ <module name="EmptyForIteratorPad"/>
+ <module name="MethodParamPad"/>
+ <module name="NoWhitespaceAfter"/>
+ <module name="NoWhitespaceBefore"/>
+ <module name="OperatorWrap"/>
+ <module name="ParenPad"/>
+ <module name="TypecastParenPad"/>
+ <!--
+ <module name="TabCharacter"/>
+ <module name="WhitespaceAfter"/>
+ <module name="WhitespaceAround"/>
+ -->
+
+
+ <!-- Modifier Checks -->
+ <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+ <module name="ModifierOrder"/>
+ <module name="RedundantModifier"/>
+
+
+ <!-- Checks for blocks. You know, those {}'s -->
+ <!-- See http://checkstyle.sf.net/config_blocks.html -->
+ <module name="AvoidNestedBlocks"/>
+ <module name="EmptyBlock"/>
+ <module name="LeftCurly"/>
+ <!--module name="NeedBraces"/-->
+ <module name="RightCurly"/>
+
+
+ <!-- Checks for common coding problems -->
+ <!-- See http://checkstyle.sf.net/config_coding.html -->
+ <module name="AvoidInlineConditionals"/>
+ <module name="DoubleCheckedLocking"/> <!-- MY FAVOURITE -->
+ <module name="EmptyStatement"/>
+ <module name="EqualsHashCode"/>
+ <module name="HiddenField"/>
+ <module name="IllegalInstantiation"/>
+ <module name="InnerAssignment"/>
+ <module name="MagicNumber"/>
+ <module name="MissingSwitchDefault"/>
+ <module name="RedundantThrows"/>
+ <module name="SimplifyBooleanExpression"/>
+ <module name="SimplifyBooleanReturn"/>
+
+ <!-- Checks for class design -->
+ <!-- See http://checkstyle.sf.net/config_design.html -->
+ <module name="DesignForExtension"/>
+ <module name="FinalClass"/>
+ <module name="HideUtilityClassConstructor"/>
+ <module name="InterfaceIsType"/>
+ <module name="VisibilityModifier"/>
+
+
+ <!-- Miscellaneous other checks. -->
+ <!-- See http://checkstyle.sf.net/config_misc.html -->
+ <module name="ArrayTypeStyle"/>
+ <module name="FinalParameters"/>
+ <module name="GenericIllegalRegexp">
+ <property name="format" value="\s+$"/>
+ <property name="message" value="Line has trailing spaces."/>
+ </module>
+ <module name="TodoComment"/>
+ <module name="UpperEll"/>
+
+ </module>
+
+</module>
diff --git a/etc/global.xml b/etc/global.xml
new file mode 100644
index 0000000..052ea6b
--- /dev/null
+++ b/etc/global.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global" default="all" basedir=".">
+
+ <dirname property="global.dir.etc" file="${ant.file}"/>
+ <dirname property="global.dir.root" file="${global.dir.etc}"/>
+ <property file="${global.dir.etc}/custom.properties" />
+ <property file="${global.dir.etc}/build.properties" />
+ <property file="${global.dir.etc}/log4j.properties" />
+
+ <path id="compile-classpath">
+ <!--
+ <fileset dir="${global.dir.lib}">
+ <include name="**/*.jar"/>
+ </fileset>
+ -->
+ </path>
+
+ <path id="runtime-classpath">
+ <pathelement path="${global.dir.build.classes}" />
+ <path refid="compile-classpath" />
+ </path>
+
+ <path id="antcontrib-classpath">
+ <fileset dir="${global.dir.lib}/ant">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <path id="checkstyle-classpath">
+ <fileset dir="${global.dir.lib}/checkstyle">
+ <include name="**/*.jar"/>
+ </fileset>
+ </path>
+
+ <path id="vpp-classpath">
+ <fileset dir="${global.dir.lib}/vpp">
+ <include name="**/*.jar" />
+ </fileset>
+ </path>
+
+ <path id="findbugs-classpath">
+ <fileset dir="${global.dir.lib}/findbugs">
+ <include name="**/*.jar" />
+ </fileset>
+ </path>
+
+ <path id="jrat-classpath">
+ <fileset dir="${global.dir.lib}/jrat">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <path id="cobertura-classpath">
+ <fileset dir="${global.dir.lib}/log4j">
+ <include name="log4j-*.jar"/>
+ </fileset>
+ <fileset dir="${global.dir.lib}/cobertura">
+ <include name="**/*.jar" />
+ </fileset>
+ </path>
+
+ <path id="svn-classpath">
+ <fileset dir="${global.dir.lib}/svn">
+ <include name="**/*.jar" />
+ </fileset>
+ </path>
+
+ <!-- classpath for compiling junit tasks -->
+ <path id="junit-compile-classpath">
+ <fileset dir="${global.dir.lib}/junit">
+ <include name="**/*.jar" />
+ </fileset>
+ <path refid="runtime-classpath" />
+ </path>
+
+ <!-- classpath for running junit tasks -->
+ <path id="junit-run-classpath">
+ <pathelement path="${global.dir.build.tests}"/>
+ <pathelement path="${global.dir.build.cobertura}"/>
+ <pathelement path="${global.dir.src.resources}" />
+ <pathelement path="${global.dir.src.tests}" />
+ <path refid="junit-compile-classpath"/>
+ <path refid="cobertura-classpath"/>
+ <path refid="jrat-classpath"/>
+ </path>
+
+
+
+
+
+
+ <import file="${global.dir.etc}/targets/global-checkstyle.xml" />
+ <import file="${global.dir.etc}/targets/global-clean.xml" />
+ <import file="${global.dir.etc}/targets/global-cobertura.xml" />
+ <import file="${global.dir.etc}/targets/global-compile.xml" />
+ <import file="${global.dir.etc}/targets/global-findbugs.xml" />
+ <import file="${global.dir.etc}/targets/global-inject.xml" />
+ <import file="${global.dir.etc}/targets/global-jar.xml" />
+ <import file="${global.dir.etc}/targets/global-javadoc.xml" />
+ <import file="${global.dir.etc}/targets/global-junit.xml" />
+ <import file="${global.dir.etc}/targets/global-tar.xml" />
+ <import file="${global.dir.etc}/targets/global-taskdefs.xml" />
+ <import file="${global.dir.etc}/targets/global-verify.xml" />
+ <import file="${global.dir.etc}/targets/global-vpp.xml" />
+
+</project>
diff --git a/etc/junit/xsl/junit-frames.xsl b/etc/junit/xsl/junit-frames.xsl
new file mode 100644
index 0000000..a9d37a5
--- /dev/null
+++ b/etc/junit/xsl/junit-frames.xsl
@@ -0,0 +1,716 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:redirect="http://xml.apache.org/xalan/redirect"
+ xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
+ extension-element-prefixes="redirect">
+<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
+<xsl:decimal-format decimal-separator="." grouping-separator=","/>
+<!--
+ Copyright 2001-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<!--
+
+ Sample stylesheet to be used with Ant JUnitReport output.
+
+ It creates a set of HTML files a la javadoc where you can browse easily
+ through all packages and classes.
+
+ @author Stephane Bailliez <a href="mailto:[email protected]"/>
+ @author Erik Hatcher <a href="mailto:[email protected]"/>
+ @author Martijn Kruithof <a href="mailto:[email protected]"/>
+
+-->
+<xsl:param name="output.dir" select="'.'"/>
+
+
+<xsl:template match="testsuites">
+ <!-- create the index.html -->
+ <redirect:write file="{$output.dir}/index.html">
+ <xsl:call-template name="index.html"/>
+ </redirect:write>
+
+ <!-- create the stylesheet.css -->
+ <redirect:write file="{$output.dir}/stylesheet.css">
+ <xsl:call-template name="stylesheet.css"/>
+ </redirect:write>
+
+ <!-- create the overview-packages.html at the root -->
+ <redirect:write file="{$output.dir}/overview-summary.html">
+ <xsl:apply-templates select="." mode="overview.packages"/>
+ </redirect:write>
+
+ <!-- create the all-packages.html at the root -->
+ <redirect:write file="{$output.dir}/overview-frame.html">
+ <xsl:apply-templates select="." mode="all.packages"/>
+ </redirect:write>
+
+ <!-- create the all-classes.html at the root -->
+ <redirect:write file="{$output.dir}/allclasses-frame.html">
+ <xsl:apply-templates select="." mode="all.classes"/>
+ </redirect:write>
+
+ <!-- process all packages -->
+ <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+ <xsl:call-template name="package">
+ <xsl:with-param name="name" select="@package"/>
+ </xsl:call-template>
+ </xsl:for-each>
+</xsl:template>
+
+
+<xsl:template name="package">
+ <xsl:param name="name"/>
+ <xsl:variable name="package.dir">
+ <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
+ <xsl:if test="$name = ''">.</xsl:if>
+ </xsl:variable>
+ <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
+ <!-- create a classes-list.html in the package directory -->
+ <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
+ <xsl:call-template name="classes.list">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </redirect:write>
+
+ <!-- create a package-summary.html in the package directory -->
+ <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
+ <xsl:call-template name="package.summary">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </redirect:write>
+
+ <!-- for each class, creates a @name.html -->
+ <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
+ <xsl:for-each select="/testsuites/testsuite[@package = $name]">
+ <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
+ <xsl:apply-templates select="." mode="class.details"/>
+ </redirect:write>
+ <xsl:if test="string-length(./system-out)!=0">
+ <redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.txt">
+ <xsl:value-of select="./system-out" />
+ </redirect:write>
+ </xsl:if>
+ <xsl:if test="string-length(./system-err)!=0">
+ <redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.txt">
+ <xsl:value-of select="./system-err" />
+ </redirect:write>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="index.html">
+<html>
+ <head>
+ <title>Unit Test Results.</title>
+ </head>
+ <frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="overview-frame.html" name="packageListFrame"/>
+ <frame src="allclasses-frame.html" name="classListFrame"/>
+ </frameset>
+ <frame src="overview-summary.html" name="classFrame"/>
+ <noframes>
+ <h2>Frame Alert</h2>
+ <p>
+ This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+ </p>
+ </noframes>
+ </frameset>
+</html>
+</xsl:template>
+
+<!-- this is the stylesheet css to use for nearly everything -->
+<xsl:template name="stylesheet.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;
+}
+</xsl:template>
+
+
+<!-- ======================================================================
+ This page is created for every testsuite class.
+ It prints a summary of the testsuite and detailed information about
+ testcase methods.
+ ====================================================================== -->
+<xsl:template match="testsuite" mode="class.details">
+ <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>
+ <head>
+ <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
+ <xsl:call-template name="create.stylesheet.link">
+ <xsl:with-param name="package.name" select="$package.name"/>
+ </xsl:call-template>
+ <script type="text/javascript" language="JavaScript">
+ var TestCases = new Array();
+ var cur;
+ <xsl:apply-templates select="properties"/>
+ </script>
+ <script type="text/javascript" language="JavaScript"><![CDATA[
+ function displayProperties (name) {
+ var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
+ var doc = win.document.open();
+ doc.write("<html><head><title>Properties of " + name + "</title>");
+ doc.write("<style type=\"text/css\">");
+ doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
+ doc.write("table tr td, table tr th { font-size: 68%; }");
+ doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
+ doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
+ doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
+ doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
+ doc.write("</style>");
+ doc.write("</head><body>");
+ doc.write("<h3>Properties of " + name + "</h3>");
+ doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
+ doc.write("<table class='properties'>");
+ doc.write("<tr><th>Name</th><th>Value</th></tr>");
+ for (prop in TestCases[name]) {
+ doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
+ }
+ doc.write("</table>");
+ doc.write("</body></html>");
+ doc.close();
+ win.focus();
+ }
+ ]]>
+ </script>
+ </head>
+ <body>
+ <xsl:call-template name="pageHeader"/>
+ <h3>Class <xsl:value-of select="$class.name"/></h3>
+
+
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+ <xsl:apply-templates select="." mode="print.test"/>
+ </table>
+
+ <h2>Tests</h2>
+ <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: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"/>
+ </table>
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
+ Properties &#187;
+ </a>
+ </div>
+ <xsl:if test="string-length(./system-out)!=0">
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">./<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
+ System.out &#187;
+ </a>
+ </div>
+ </xsl:if>
+ <xsl:if test="string-length(./system-err)!=0">
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">./<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
+ System.err &#187;
+ </a>
+ </div>
+ </xsl:if>
+ </body>
+ </html>
+</xsl:template>
+
+ <!--
+ Write properties into a JavaScript data structure.
+ This is based on the original idea by Erik Hatcher ([email protected])
+ -->
+ <xsl:template match="properties">
+ cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
+ <xsl:for-each select="property">
+ <xsl:sort select="@name"/>
+ cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
+ </xsl:for-each>
+ </xsl:template>
+
+
+<!-- ======================================================================
+ This page is created for every package.
+ It prints the name of all classes that belongs to this package.
+ @param name the package name to print classes.
+ ====================================================================== -->
+<!-- list of classes in a package -->
+<xsl:template name="classes.list">
+ <xsl:param name="name"/>
+ <html>
+ <head>
+ <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
+ <xsl:call-template name="create.stylesheet.link">
+ <xsl:with-param name="package.name" select="$name"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <table width="100%">
+ <tr>
+ <td nowrap="nowrap">
+ <h2><a href="package-summary.html" target="classFrame">
+ <xsl:value-of select="$name"/>
+ <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
+ </a></h2>
+ </td>
+ </tr>
+ </table>
+
+ <h2>Classes</h2>
+ <table width="100%">
+ <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
+ <xsl:sort select="@name"/>
+ <tr>
+ <td nowrap="nowrap">
+ <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </body>
+ </html>
+</xsl:template>
+
+
+<!--
+ Creates an all-classes.html file that contains a link to all package-summary.html
+ on each class.
+-->
+<xsl:template match="testsuites" mode="all.classes">
+ <html>
+ <head>
+ <title>All Unit Test Classes</title>
+ <xsl:call-template name="create.stylesheet.link">
+ <xsl:with-param name="package.name"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <h2>Classes</h2>
+ <table width="100%">
+ <xsl:apply-templates select="testsuite" mode="all.classes">
+ <xsl:sort select="@name"/>
+ </xsl:apply-templates>
+ </table>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="all.classes">
+ <xsl:variable name="package.name" select="@package"/>
+ <tr>
+ <td nowrap="nowrap">
+ <a target="classFrame">
+ <xsl:attribute name="href">
+ <xsl:if test="not($package.name='')">
+ <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
+ </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </a>
+ </td>
+ </tr>
+</xsl:template>
+
+
+<!--
+ Creates an html file that contains a link to all package-summary.html files on
+ each package existing on testsuites.
+ @bug there will be a problem here, I don't know yet how to handle unnamed package :(
+-->
+<xsl:template match="testsuites" mode="all.packages">
+ <html>
+ <head>
+ <title>All Unit Test Packages</title>
+ <xsl:call-template name="create.stylesheet.link">
+ <xsl:with-param name="package.name"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
+ <h2>Packages</h2>
+ <table width="100%">
+ <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
+ <xsl:sort select="@package"/>
+ </xsl:apply-templates>
+ </table>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="all.packages">
+ <tr>
+ <td nowrap="nowrap">
+ <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
+ <xsl:value-of select="@package"/>
+ <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
+ </a>
+ </td>
+ </tr>
+</xsl:template>
+
+
+<xsl:template match="testsuites" mode="overview.packages">
+ <html>
+ <head>
+ <title>Unit Test Results: Summary</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>Summary</h2>
+ <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+ <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+ <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+ <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+ <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <tr valign="top">
+ <th>Tests</th>
+ <th>Failures</th>
+ <th>Errors</th>
+ <th>Success rate</th>
+ <th>Time</th>
+ </tr>
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+ <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+ <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>
+ <xsl:call-template name="display-percent">
+ <xsl:with-param name="value" select="$successRate"/>
+ </xsl:call-template>
+ </td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="$timeCount"/>
+ </xsl:call-template>
+ </td>
+
+ </tr>
+ </table>
+ <table border="0" width="95%">
+ <tr>
+ <td style="text-align: justify;">
+ Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
+ </td>
+ </tr>
+ </table>
+
+ <h2>Packages</h2>
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+ <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+ <xsl:sort select="@package" order="ascending"/>
+ <!-- get the node set containing all testsuites that have the same package -->
+ <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
+ <tr valign="top">
+ <!-- display a failure if there is any failure/error in the package -->
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
+ <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
+ <xsl:otherwise>Pass</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><a href="./{translate(@package,'.','/')}/package-summary.html">
+ <xsl:value-of select="@package"/>
+ <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
+ </a></td>
+ <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
+ <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
+ <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </body>
+ </html>
+</xsl:template>
+
+
+<xsl:template name="package.summary">
+ <xsl:param name="name"/>
+ <html>
+ <head>
+ <xsl:call-template name="create.stylesheet.link">
+ <xsl:with-param name="package.name" select="$name"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
+ <xsl:call-template name="pageHeader"/>
+ <h3>Package <xsl:value-of select="$name"/></h3>
+
+ <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="class.metrics.header"/>
+ <xsl:apply-templates select="." mode="print.metrics"/>
+ </table-->
+
+ <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
+ <xsl:if test="count($insamepackage) &gt; 0">
+ <h2>Classes</h2>
+ <p>
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+ <xsl:apply-templates select="$insamepackage" mode="print.test">
+ <xsl:sort select="@name"/>
+ </xsl:apply-templates>
+ </table>
+ </p>
+ </xsl:if>
+ </body>
+ </html>
+</xsl:template>
+
+
+<!--
+ transform string like a.b.c to ../../../
+ @param path the path to transform into a descending directory path
+-->
+<xsl:template name="path">
+ <xsl:param name="path"/>
+ <xsl:if test="contains($path,'.')">
+ <xsl:text>../</xsl:text>
+ <xsl:call-template name="path">
+ <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="not(contains($path,'.')) and not($path = '')">
+ <xsl:text>../</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+
+<!-- create the link to the stylesheet based on the package name -->
+<xsl:template name="create.stylesheet.link">
+ <xsl:param name="package.name"/>
+ <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
+</xsl:template>
+
+
+<!-- Page HEADER -->
+<xsl:template name="pageHeader">
+ <h1>Unit Test Results</h1>
+ <table width="100%">
+ <tr>
+ <td align="left"></td>
+ <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://jakarta.apache.org/">Ant</a>.</td>
+ </tr>
+ </table>
+ <hr size="1"/>
+</xsl:template>
+
+<!-- class header -->
+<xsl:template name="testsuite.test.header">
+ <tr valign="top">
+ <th width="80%">Name</th>
+ <th>Tests</th>
+ <th>Errors</th>
+ <th>Failures</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+<!-- method header -->
+<xsl:template name="testcase.test.header">
+ <tr valign="top">
+ <th>Name</th>
+ <th>Status</th>
+ <th width="80%">Type</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+
+<!-- class information -->
+<xsl:template match="testsuite" mode="print.test">
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
+ <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
+ <xsl:otherwise>Pass</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><a href="{@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><xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="@time"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.test">
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="error">Error</xsl:when>
+ <xsl:when test="failure">Failure</xsl:when>
+ <xsl:otherwise>TableRowColor</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><xsl:value-of select="concat( @classname, '.', @name)"/></td>
+ <xsl:choose>
+ <xsl:when test="failure">
+ <td>Failure</td>
+ <td><xsl:apply-templates select="failure"/></td>
+ </xsl:when>
+ <xsl:when test="error">
+ <td>Error</td>
+ <td><xsl:apply-templates select="error"/></td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>Success</td>
+ <td></td>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="@time"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+</xsl:template>
+
+
+<!-- Note : the below template error and failure are the same style
+ so just call the same style store in the toolkit template -->
+<xsl:template match="failure">
+ <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="error">
+ <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<!-- Style for the error and failure in the testcase 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 -->
+ <br/><br/>
+ <code>
+ <xsl:call-template name="br-replace">
+ <xsl:with-param name="word" select="."/>
+ </xsl:call-template>
+ </code>
+ <!-- the latter is better but might be problematic for non-21" monitors... -->
+ <!--pre><xsl:value-of select="."/></pre-->
+</xsl:template>
+
+<xsl:template name="JS-escape">
+ <xsl:param name="string"/>
+ <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
+ <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
+ <xsl:value-of select="$tmp2"/>
+</xsl:template>
+
+
+<!--
+ template that will convert a carriage return into a br tag
+ @param word the text from which to convert CR to BR tag
+-->
+<xsl:template name="br-replace">
+ <xsl:param name="word"/>
+ <xsl:param name="br"><br/></xsl:param>
+ <xsl:value-of select='stringutils:replace(string($word),"&#xA;",$br)'/>
+</xsl:template>
+
+<xsl:template name="display-time">
+ <xsl:param name="value"/>
+ <xsl:value-of select="format-number($value,'0.000')"/>
+</xsl:template>
+
+<xsl:template name="display-percent">
+ <xsl:param name="value"/>
+ <xsl:value-of select="format-number($value,'0.00%')"/>
+</xsl:template>
+</xsl:stylesheet>
+
diff --git a/etc/junit/xsl/junit-noframes.xsl b/etc/junit/xsl/junit-noframes.xsl
new file mode 100644
index 0000000..25487f8
--- /dev/null
+++ b/etc/junit/xsl/junit-noframes.xsl
@@ -0,0 +1,461 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+ xmlns:lxslt="http://xml.apache.org/xslt"
+ xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils">
+<xsl:output method="html" indent="yes" encoding="US-ASCII"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
+<xsl:decimal-format decimal-separator="." grouping-separator="," />
+<!--
+ Copyright 2001-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<!--
+
+ Sample stylesheet to be used with Ant JUnitReport output.
+
+ It creates a non-framed report that can be useful to send via
+ e-mail or such.
+
+ @author Stephane Bailliez <a href="mailto:[email protected]"/>
+ @author Erik Hatcher <a href="mailto:[email protected]"/>
+
+-->
+<xsl:template match="testsuites">
+ <html>
+ <head>
+ <title>Unit Test Results</title>
+ <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>
+ <script type="text/javascript" language="JavaScript">
+ var TestCases = new Array();
+ var cur;
+ <xsl:for-each select="./testsuite">
+ <xsl:apply-templates select="properties"/>
+ </xsl:for-each>
+
+ </script>
+ <script type="text/javascript" language="JavaScript"><![CDATA[
+ function displayProperties (name) {
+ var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
+ var doc = win.document.open();
+ doc.write("<html><head><title>Properties of " + name + "</title>");
+ doc.write("<style>")
+ doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
+ doc.write("table tr td, table tr th { font-size: 68%; }");
+ doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
+ doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
+ doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
+ doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
+ doc.write("</style>");
+ doc.write("</head><body>");
+ doc.write("<h3>Properties of " + name + "</h3>");
+ doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
+ doc.write("<table class='properties'>");
+ doc.write("<tr><th>Name</th><th>Value</th></tr>");
+ for (prop in TestCases[name]) {
+ doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
+ }
+ doc.write("</table>");
+ doc.write("</body></html>");
+ doc.close();
+ win.focus();
+ }
+ ]]>
+ </script>
+ </head>
+ <body>
+ <a name="top"></a>
+ <xsl:call-template name="pageHeader"/>
+
+ <!-- Summary part -->
+ <xsl:call-template name="summary"/>
+ <hr size="1" width="95%" align="left"/>
+
+ <!-- Package List part -->
+ <xsl:call-template name="packagelist"/>
+ <hr size="1" width="95%" align="left"/>
+
+ <!-- For each package create its part -->
+ <xsl:call-template name="packages"/>
+ <hr size="1" width="95%" align="left"/>
+
+ <!-- For each class create the part -->
+ <xsl:call-template name="classes"/>
+
+ </body>
+ </html>
+</xsl:template>
+
+
+
+ <!-- ================================================================== -->
+ <!-- Write a list of all packages with an hyperlink to the anchor of -->
+ <!-- of the package name. -->
+ <!-- ================================================================== -->
+ <xsl:template name="packagelist">
+ <h2>Packages</h2>
+ Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+ <!-- list all packages recursively -->
+ <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+ <xsl:sort select="@package"/>
+ <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
+ <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
+ <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
+ <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
+ <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
+
+ <!-- write a summary for the package -->
+ <tr valign="top">
+ <!-- set a nice color depending if there is an error/failure -->
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+ <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
+ <td><xsl:value-of select="$testCount"/></td>
+ <td><xsl:value-of select="$errorCount"/></td>
+ <td><xsl:value-of select="$failureCount"/></td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="$timeCount"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
+
+
+ <!-- ================================================================== -->
+ <!-- Write a package level report -->
+ <!-- It creates a table with values from the document: -->
+ <!-- Name | Tests | Errors | Failures | Time -->
+ <!-- ================================================================== -->
+ <xsl:template name="packages">
+ <!-- create an anchor to this package name -->
+ <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+ <xsl:sort select="@package"/>
+ <a name="{@package}"></a>
+ <h3>Package <xsl:value-of select="@package"/></h3>
+
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+
+ <!-- match the testsuites of this package -->
+ <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
+ </table>
+ <a href="#top">Back to top</a>
+ <p/>
+ <p/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="classes">
+ <xsl:for-each select="testsuite">
+ <xsl:sort select="@name"/>
+ <!-- create an anchor to this class name -->
+ <a name="{@name}"></a>
+ <h3>TestCase <xsl:value-of select="@name"/></h3>
+
+ <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: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"/>
+ </table>
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
+ Properties &#187;
+ </a>
+ </div>
+ <p/>
+
+ <a href="#top">Back to top</a>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="summary">
+ <h2>Summary</h2>
+ <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+ <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+ <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+ <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+ <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <tr valign="top">
+ <th>Tests</th>
+ <th>Failures</th>
+ <th>Errors</th>
+ <th>Success rate</th>
+ <th>Time</th>
+ </tr>
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+ <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+ </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>
+ <xsl:call-template name="display-percent">
+ <xsl:with-param name="value" select="$successRate"/>
+ </xsl:call-template>
+ </td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="$timeCount"/>
+ </xsl:call-template>
+ </td>
+
+ </tr>
+ </table>
+ <table border="0" width="95%">
+ <tr>
+ <td style="text-align: justify;">
+ Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!--
+ Write properties into a JavaScript data structure.
+ This is based on the original idea by Erik Hatcher ([email protected])
+ -->
+ <xsl:template match="properties">
+ cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
+ <xsl:for-each select="property">
+ <xsl:sort select="@name"/>
+ cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
+ </xsl:for-each>
+ </xsl:template>
+
+<!-- Page HEADER -->
+<xsl:template name="pageHeader">
+ <h1>Unit Test Results</h1>
+ <table width="100%">
+ <tr>
+ <td align="left"></td>
+ <td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
+ </tr>
+ </table>
+ <hr size="1"/>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="header">
+ <tr valign="top">
+ <th width="80%">Name</th>
+ <th>Tests</th>
+ <th>Errors</th>
+ <th>Failures</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+<!-- class header -->
+<xsl:template name="testsuite.test.header">
+ <tr valign="top">
+ <th width="80%">Name</th>
+ <th>Tests</th>
+ <th>Errors</th>
+ <th>Failures</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+<!-- method header -->
+<xsl:template name="testcase.test.header">
+ <tr valign="top">
+ <th>Name</th>
+ <th>Status</th>
+ <th width="80%">Type</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+
+<!-- class information -->
+<xsl:template match="testsuite" mode="print.test">
+ <tr valign="top">
+ <!-- set a nice color depending if there is an error/failure -->
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
+ <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <!-- print testsuite information -->
+ <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
+ <td><xsl:value-of select="@tests"/></td>
+ <td><xsl:value-of select="@errors"/></td>
+ <td><xsl:value-of select="@failures"/></td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="@time"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.test">
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="failure | error">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><xsl:value-of select="@name"/></td>
+ <xsl:choose>
+ <xsl:when test="failure">
+ <td>Failure</td>
+ <td><xsl:apply-templates select="failure"/></td>
+ </xsl:when>
+ <xsl:when test="error">
+ <td>Error</td>
+ <td><xsl:apply-templates select="error"/></td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>Success</td>
+ <td></td>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="@time"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+</xsl:template>
+
+
+<xsl:template match="failure">
+ <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="error">
+ <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<!-- 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 -->
+ <code>
+ <br/><br/>
+ <xsl:call-template name="br-replace">
+ <xsl:with-param name="word" select="."/>
+ </xsl:call-template>
+ </code>
+ <!-- the later is better but might be problematic for non-21" monitors... -->
+ <!--pre><xsl:value-of select="."/></pre-->
+</xsl:template>
+
+<xsl:template name="JS-escape">
+ <xsl:param name="string"/>
+ <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
+ <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
+ <xsl:value-of select="$tmp2"/>
+</xsl:template>
+
+
+<!--
+ template that will convert a carriage return into a br tag
+ @param word the text from which to convert CR to BR tag
+-->
+<xsl:template name="br-replace">
+ <xsl:param name="word"/>
+ <xsl:param name="br"><br/></xsl:param>
+ <xsl:value-of select='stringutils:replace(string($word),"&#xA;",$br)'/>
+</xsl:template>
+
+<xsl:template name="display-time">
+ <xsl:param name="value"/>
+ <xsl:value-of select="format-number($value,'0.000')"/>
+</xsl:template>
+
+<xsl:template name="display-percent">
+ <xsl:param name="value"/>
+ <xsl:value-of select="format-number($value,'0.00%')"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/etc/targets/global-checkstyle.xml b/etc/targets/global-checkstyle.xml
new file mode 100644
index 0000000..5c15352
--- /dev/null
+++ b/etc/targets/global-checkstyle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-checkstyle" basedir=".">
+
+ <target name="global-checkstyle" depends="global-vpp"
+ unless="test.no.checkstyle">
+
+ <mkdir dir="${global.dir.build.reports}" />
+
+ <!-- XXX: Stupid checkstyle task doesn't expand it's parameters -->
+ <checkstyle config="etc/checkstyle/config.xml"
+ failOnViolation="false">
+ <classpath refid="checkstyle-classpath" />
+ <fileset dir="${global.dir.build.java}" />
+ <formatter type="xml"
+ toFile="${global.dir.build.reports}/checkstyle.xml" />
+ <formatter type="plain"
+ toFile="${global.dir.build.reports}/checkstyle.txt" />
+ </checkstyle>
+
+ </target>
+
+</project>
diff --git a/etc/targets/global-clean.xml b/etc/targets/global-clean.xml
new file mode 100644
index 0000000..246a2d0
--- /dev/null
+++ b/etc/targets/global-clean.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-clean" basedir=".">
+ <target name="global-clean">
+ <delete dir="${global.dir.root}/build" />
+ <delete dir="${global.dir.root}/webroot" />
+ </target>
+</project>
diff --git a/etc/targets/global-cobertura.xml b/etc/targets/global-cobertura.xml
new file mode 100644
index 0000000..425a9fd
--- /dev/null
+++ b/etc/targets/global-cobertura.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-cobertura" basedir=".">
+
+ <target name="global-cobertura-instrument" depends="global-taskdefs"
+ unless="test.no.cobertura">
+ <delete dir="${global.dir.build.cobertura}" />
+ <mkdir dir="${global.dir.build.cobertura}" />
+
+ <cobertura-instrument
+ todir="${global.dir.build.cobertura}"
+ datafile="${global.dir.build.cobertura}/cobertura.ser">
+ <fileset dir="${global.dir.build.classes}">
+ <include name="**/*.class" />
+ <exclude name="**/Main.class" />
+ <exclude name="**/cmd/**" />
+ <exclude name="**/soap/port/*/*PortSoapBindingStub.class" />
+ <exclude name="**/soap/port/*/*PortServiceLocator.class" />
+ <exclude name="**/soap/port/*/*PortService.class" />
+ </fileset>
+ </cobertura-instrument>
+
+ </target>
+
+ <target name="global-cobertura-report" depends="global-taskdefs"
+ unless="test.no.cobertura">
+ <cobertura-report
+ format="html"
+ datafile="${global.dir.build.cobertura}/cobertura.ser"
+ destdir="${global.dir.build.reports}/cobertura"
+ srcdir="${global.dir.build.java}" />
+ </target>
+
+
+</project>
diff --git a/etc/targets/global-compile.xml b/etc/targets/global-compile.xml
new file mode 100644
index 0000000..b226041
--- /dev/null
+++ b/etc/targets/global-compile.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-compile" basedir=".">
+
+ <target name="global-compile" depends="global-vpp">
+ <mkdir dir="${global.dir.build.classes}" />
+ <mkdir dir="${global.dir.build.depcache}" />
+ <mkdir dir="${global.dir.build.java}" />
+
+ <depend
+ srcdir="${global.dir.build.java}"
+ destdir="${global.dir.build.classes}"
+ cache="${global.dir.build.depcache}"
+ closure="yes">
+ </depend>
+
+ <javac
+ srcdir="${global.dir.build.java}"
+ destdir="${global.dir.build.classes}"
+ optimize="${system.javac.optimize}"
+ debug="${system.javac.debug}"
+ source="${system.javac.source}"
+ target="${system.javac.target}"
+ deprecation="${system.javac.deprecation}"
+ >
+ <classpath refid="compile-classpath" />
+ <!--
+ <compilerarg compiler="modern" value="-Xlint:unchecked" />
+ -->
+ <compilerarg compiler="modern" value="-Xlint:deprecation" />
+ <compilerarg compiler="modern" value="-Xlint:finally" />
+ </javac>
+ </target>
+
+</project>
diff --git a/etc/targets/global-findbugs.xml b/etc/targets/global-findbugs.xml
new file mode 100644
index 0000000..9a06996
--- /dev/null
+++ b/etc/targets/global-findbugs.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-findbugs" basedir=".">
+
+ <!-- Used to depend on compile. -->
+ <target name="global-findbugs" depends="global-taskdefs">
+ <delete dir="${global.dir.build.reports}/findbugs-output" />
+ <mkdir dir="${global.dir.build.reports}/findbugs-output" />
+ <findbugs
+ home="${global.dir.lib}/findbugs"
+ output="xml"
+ outputFile="${global.dir.build.reports}/findbugs-output/findbugs.xml" >
+ <sourcePath path="${global.dir.build.java}" />
+ <class location="${global.dir.build.classes}" />
+ <auxClasspath refid="compile-classpath" />
+ </findbugs>
+
+ </target>
+
+ <target name="global-findbugs-report" depends="global-taskdefs">
+ <xslt
+ basedir="${global.dir.build.reports}/findbugs-output"
+ destdir="${global.dir.build.reports}/findbugs"
+ extension=".html"
+ style="${global.dir.lib}/findbugs/xsl/plain.xsl">
+ </xslt>
+ </target>
+
+ <target name="global-findbugs-gui" depends="global-taskdefs">
+ <java
+ fork="true"
+ spawn="true"
+ classname="edu.umd.cs.findbugs.gui.FindBugsFrame">
+ <classpath>
+ <fileset dir="${global.dir.lib}/findbugs/lib" />
+ </classpath>
+ <sysproperty
+ key="findbugs.home"
+ value="${global.dir.lib}/findbugs" />
+ <jvmarg value="-Xmx768m" />
+ <arg value="-loadbugs" />
+ <arg value="${global.dir.build.reports}/findbugs-output/findbugs.xml" />
+ </java>
+ </target>
+
+
+</project>
diff --git a/etc/targets/global-inject.xml b/etc/targets/global-inject.xml
new file mode 100644
index 0000000..e707b04
--- /dev/null
+++ b/etc/targets/global-inject.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-inject" basedir=".">
+
+ <target name="global-inject">
+ <inject>
+ <fileset dir="${global.dir.build.classes}">
+ <include name="**/*.class" />
+ </fileset>
+ <criteria>
+ <!-- <includeClass class="org.jboss.util.stream.*"/> -->
+ <!-- <excludeClass class="java.lang.reflect.*"/> -->
+ <!-- <excludeMethod method="get*"/> -->
+ <!-- <excludeMethod method="set*"/> -->
+ </criteria>
+ </inject>
+
+ </target>
+
+</project>
diff --git a/etc/targets/global-jar.xml b/etc/targets/global-jar.xml
new file mode 100644
index 0000000..22b6cd4
--- /dev/null
+++ b/etc/targets/global-jar.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-jar" basedir=".">
+
+ <target name="global-jar" depends="global-compile">
+ <delete dir="${global.dir.build.jar}" />
+ <mkdir dir="${global.dir.build.jar}" />
+ <mkdir dir="${global.dir.build.tar}/lib" />
+ <mkdir dir="${global.dir.src.resources}" />
+
+ <copy todir="${global.dir.build.jar}">
+ <fileset dir="${global.dir.build.java}">
+ <include name="**/*.dat" />
+ </fileset>
+ <fileset dir="${global.dir.build.classes}">
+ <include name="**" />
+ </fileset>
+ <fileset dir="${global.dir.src.resources}">
+ <include name="log4j.properties" />
+ </fileset>
+ </copy>
+
+ <jar
+ destfile="${global.file.jar}"
+ manifest="etc/MANIFEST"
+ index="true"
+ compress="${system.jar.compress}">
+ <fileset dir="${global.dir.build.jar}" />
+ <manifest>
+ <attribute name="Built-By" value="${user.name}" />
+ </manifest>
+ </jar>
+ </target>
+
+</project>
diff --git a/etc/targets/global-javadoc.xml b/etc/targets/global-javadoc.xml
new file mode 100644
index 0000000..db48b03
--- /dev/null
+++ b/etc/targets/global-javadoc.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-javadoc" basedir=".">
+
+ <target name="global-javadoc" depends="global-vpp" unless="build.no.javadoc">
+ <javadoc
+ sourcepath="${global.dir.build.java}:${global.dir.src.docs}/javadoc"
+ destdir="${global.dir.build.javadoc}"
+ classpathref="compile-classpath"
+ source="${system.javac.source}"
+ access="${system.javadoc.access}"
+ use="true"
+ splitindex="false"
+ failonerror="true"
+ windowtitle="Anarres C Preprocessor version ${global.version}"
+ >
+
+ <package name="org.anarres.cpp" />
+ <packageset dir="${global.dir.build.java}" />
+
+ <link
+ href="http://java.sun.com/j2se/1.5.0/docs/api/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://java.sun.com/j2ee/1.4/docs/api/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://java.sun.com/products/servlet/2.3/javadoc/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://ws.apache.org/axis/java/apiDocs/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://www.jdom.org/docs/apidocs/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://www.junit.org/junit/javadoc/3.8.1/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://jakarta.apache.org/commons/configuration/apidocs/"
+ offline="${system.javadoc.offline}" />
+ <link
+ href="http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/"
+ offline="${system.javadoc.offline}" />
+<!-- href="http://www.cs.bris.ac.uk/Teaching/Resources/General/ant/docs/manual/api/" -->
+ <tag dir="${global.dir.etc}/javadoc" />
+
+ <bottom><![CDATA[Copyright &#169; 2007 <a href="http://www.anarres.org/">Shevek, Anarres</a>. All Rights Reserved.]]></bottom>
+ </javadoc>
+
+ </target>
+
+</project>
diff --git a/etc/targets/global-junit.xml b/etc/targets/global-junit.xml
new file mode 100644
index 0000000..e53c5a7
--- /dev/null
+++ b/etc/targets/global-junit.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-junit" basedir=".">
+
+ <target name="global-junit" depends="global-taskdefs">
+ <runtarget target="global-junit-compile" />
+ <runtarget target="global-cobertura-instrument" />
+
+ <mkdir dir="${global.dir.build.reports}/junit-output" />
+ <!-- This only sets the properties if they aren't set
+ - already. -->
+ <property name="test.package" value="" />
+ <property name="test.case" value="" />
+ <property name="test.all" value="" />
+ <property name="test.root" value="${global.dir.build.tests}"/>
+ <property name="jrat.configuration" value="${global.dir.src.resources}/jrat.xml" />
+
+ <runtarget target="global-junit-cleanup" />
+
+ <junit
+ printsummary="yes"
+ showoutput="yes"
+ haltonfailure="no"
+ fork="yes"
+ forkmode="once"
+ >
+ <jvmarg value="-Xbootclasspath/p:${global.dir.build}/hacks/lib/boot.jar"/>
+ <classpath refid="junit-run-classpath"/>
+ <formatter type="plain" />
+ <formatter type="xml" />
+ <sysproperty key="net.sourceforge.cobertura.datafile"
+ file="${global.dir.build.cobertura}/cobertura.ser" />
+ <sysproperty key="test.package" value="${test.package}" />
+ <sysproperty key="test.case" value="${test.case}" />
+ <sysproperty key="test.root" value="${test.root}" />
+ <sysproperty key="test.all" value="${test.all}" />
+ <sysproperty key="global.dir.build.classes"
+ value="${global.dir.build.classes}" />
+ <sysproperty key="jrat.configuration" value="${jrat.configuration}" />
+
+ <assertions>
+ <enable/>
+ </assertions>
+
+ <batchtest fork="yes" todir="${global.dir.build.reports}/junit-output">
+ <fileset dir="${global.dir.build.tests}">
+ <include name="AutoTestSuite.class" />
+ </fileset>
+ </batchtest>
+ </junit>
+
+ <delete dir="${global.dir.root}/webroot" />
+ <delete dir="${global.dir.src.resources}/webapp/WEB-INF" />
+
+
+ <runtarget target="global-junit-report" />
+ <runtarget target="global-cobertura-report" />
+ </target>
+
+ <target name="global-junit-cleanup">
+ <delete dir="${global.dir.root}/webroot" />
+ </target>
+
+ <target name="global-junit-compile">
+ <delete dir="${global.dir.build.tests}" />
+ <mkdir dir="${global.dir.src.tests}" />
+ <mkdir dir="${global.dir.build.tests}" />
+
+ <javac
+ srcdir="${global.dir.src.tests}"
+ destdir="${global.dir.build.tests}"
+ optimize="false"
+ debug="true"
+ source="${system.javac.source}"
+ target="${system.javac.target}"
+ deprecation="${system.javac.deprecation}"
+ classpathref="junit-compile-classpath"
+ >
+ <!--
+ <exclude name="**/master/**" />
+ <exclude name="**/slave/**" />
+ <exclude name="**/old/**" />
+ -->
+ </javac>
+ </target>
+
+ <target name="global-junit-report" depends="global-taskdefs">
+ <junitreport
+ todir="${global.dir.build.reports}/junit-output">
+ <fileset dir="${global.dir.build.reports}/junit-output">
+ <include name="*.xml" />
+ <exclude name="TESTS-TestSuites.xml" />
+ </fileset>
+ <report format="frames" todir="${global.dir.build.reports}/junit"
+ styledir="${global.dir.etc}/junit/xsl"/>
+ </junitreport>
+ </target>
+
+</project>
diff --git a/etc/targets/global-tar.xml b/etc/targets/global-tar.xml
new file mode 100644
index 0000000..1b053ae
--- /dev/null
+++ b/etc/targets/global-tar.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-tar" basedir=".">
+
+ <target name="global-tar" depends="global-jar,global-javadoc">
+ <mkdir dir="${global.dir.build.dist}" />
+ <mkdir dir="${global.dir.build.tar}/lib" />
+ <mkdir dir="${global.dir.build.tar}/bin" />
+ <mkdir dir="${global.dir.build.javadoc}" />
+
+ <copy todir="${global.dir.build.tar}/lib">
+ <fileset dir="${global.dir.lib}/log4j">
+ <include name="**/*.jar" />
+ </fileset>
+ <mapper type="flatten" />
+ </copy>
+
+ <copy todir="${global.dir.build.tar}">
+ <fileset dir="${global.dir.src.scripts}">
+ <include name="cpp.sh" />
+ </fileset>
+ <fileset dir="${global.dir.root}">
+ <include name="LICENSE" />
+ </fileset>
+ </copy>
+
+ <copy todir="${global.dir.build.tar}/docs/api">
+ <fileset dir="${global.dir.build.javadoc}" />
+ </copy>
+
+<!--
+ <copy todir="${global.dir.build.tar}/docs/examples">
+ <fileset
+ dir="${global.dir.build.java}/org/anarres/cpp/examples">
+ <include name="**" />
+ </fileset>
+ </copy>
+-->
+
+ <chmod perm="a+x">
+ <fileset dir="${global.dir.build.tar}/bin">
+ <include name="**/*.pl"/>
+ </fileset>
+ <fileset dir="${global.dir.build.tar}">
+ <include name="*.sh"/>
+ </fileset>
+ </chmod>
+
+ <!-- <runtarget target="global-inject" /> -->
+
+ <tar
+ destfile="${global.file.bintar}"
+ compression="gzip"
+ longfile="gnu">
+ <tarfileset
+ dir="${global.dir.build.tar}"
+ prefix="${global.name}-bin-${global.version}"
+ username="root" group="root"
+ uid="0" gid="0"
+ >
+ <include name="**" />
+ </tarfileset>
+ </tar>
+
+ <tar
+ destfile="${global.file.srctar}"
+ compression="gzip"
+ longfile="gnu">
+ <tarfileset
+ dir="${global.dir.root}"
+ prefix="${global.name}-src-${global.version}"
+ username="root" group="root"
+ uid="0" gid="0"
+ >
+ <include name="**" />
+ <exclude name="build/**" />
+ <exclude name="**/.*.swp" />
+ <exclude name="src/scripts/release.sh" />
+ </tarfileset>
+ </tar>
+
+ </target>
+
+</project>
diff --git a/etc/targets/global-taskdefs.xml b/etc/targets/global-taskdefs.xml
new file mode 100644
index 0000000..8218c91
--- /dev/null
+++ b/etc/targets/global-taskdefs.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-taskdefs">
+
+ <target name="global-taskdefs" unless="global.taskdefs.done">
+
+ <taskdef
+ resource="net/sf/antcontrib/antlib.xml"
+ classpathref="antcontrib-classpath"
+ loaderref="ant" />
+
+ <taskdef
+ resource="net/sf/antcontrib/antcontrib.properties"
+ classpathref="antcontrib-classpath"
+ loaderref="ant" />
+
+ <taskdef
+ resource="checkstyletask.properties"
+ classpathref="checkstyle-classpath"
+ loaderref="checkstyle"
+ />
+
+ <taskdef
+ resource="foundrylogic/vpp/taskdef.properties"
+ classpathref="vpp-classpath"
+ loaderref="vpp" />
+
+ <!--
+ velocity-tools-generic-1.4.jar
+ jtidy-r8-21122004.jar
+ -->
+
+ <taskdef name="injectcopy"
+ classname="org.shiftone.jrat.inject.ant.InjectCopyTask"
+ classpathref="jrat-classpath"
+ loaderref="jrat" />
+
+ <taskdef name="inject"
+ classname="org.shiftone.jrat.inject.ant.InjectTask"
+ classpathref="jrat-classpath"
+ loaderref="jrat" />
+
+ <taskdef
+ classpathref="cobertura-classpath"
+ resource="tasks.properties"
+ loaderref="cobratura"
+ />
+
+ <taskdef name="findbugs"
+ classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
+ classpathref="findbugs-classpath"
+ loaderref="findbugs" />
+
+ <taskdef
+ name="svn"
+ classname="org.tigris.subversion.svnant.SvnTask"
+ classpathref="svn-classpath"
+ loaderref="svn"
+ />
+
+ <property name="global.taskdefs.done" value="true" />
+
+ </target>
+
+</project>
diff --git a/etc/targets/global-verify.xml b/etc/targets/global-verify.xml
new file mode 100644
index 0000000..11c8674
--- /dev/null
+++ b/etc/targets/global-verify.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-verify" basedir=".">
+
+ <target name="global-verify" depends="global-taskdefs">
+ <!-- "master-jar,slave-jar,client-jar" -->
+ <mkdir dir="${global.dir.build.reports}" />
+
+ <verifydesign
+ design="${global.dir.etc}/design.xml"
+ jar="${master.file.jar}" />
+
+ <verifydesign
+ design="${global.dir.etc}/design.xml"
+ jar="${slave.file.jar}" />
+
+ <verifydesign
+ design="${global.dir.etc}/design.xml"
+ jar="${client.file.jar}" />
+
+ </target>
+
+</project>
diff --git a/etc/targets/global-vpp.xml b/etc/targets/global-vpp.xml
new file mode 100644
index 0000000..6ffc23d
--- /dev/null
+++ b/etc/targets/global-vpp.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="global-vpp">
+
+ <target name="global-vpp" depends="global-taskdefs">
+ <mkdir dir="${global.dir.build.java}" />
+
+ <vppcopy todir="${global.dir.build.java}">
+ <fileset dir="${global.dir.src.java}">
+ <include name="**/*.java" />
+ </fileset>
+ <config>
+ <context>
+ <!-- Avoid subversion and RCS tags. -->
+ <property key="Revision" value="\$Revision" />
+ <property key="Id" value="\$Id" />
+ <property key="Author" value="\$Author" />
+ <property key="Date" value="\$Date" />
+ <property key="URL" value="\$URL" />
+ <property key="Rev" value="\$Rev" />
+ <property key="SOA" value="\$SOA" />
+ <property key="TTL" value="\$TTL" />
+ <property key="DATASET" value="$DATASET" />
+ <property key="_" value="\$_" />
+
+ <property key="version" value="${global.version}" />
+ </context>
+ </config>
+ </vppcopy>
+ </target>
+
+</project>