JBoss Portal SVN: r8738 - branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2007-10-22 10:30:42 -0400 (Mon, 22 Oct 2007)
New Revision: 8738
Modified:
branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/portlets.xhtml
Log:
Removed broken change
Modified: branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/portlets.xhtml
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/portlets.xhtml 2007-10-22 14:05:00 UTC (rev 8737)
+++ branches/JBoss_Portal_Branch_2_6/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/portlets.xhtml 2007-10-22 14:30:42 UTC (rev 8738)
@@ -42,7 +42,6 @@
<tr
class="#{portlet.context.id == portletmgr.selectedPortlet.context.id ? 'portlet-section-selected' : (status.index % 2 == 0 ? 'portlet-section-body' : 'portlet-section-alternate')}">
<td>
- <img src="#{portlet.iconLocation}" width="30px" height="30px" align="middle"/>
<h:commandLink
action="#{portletmgr.selectPortlet}"
title="#{portlet.context.id}">
16 years, 7 months
JBoss Portal SVN: r8737 - modules/test/trunk/remote/src/main/org/jboss/unit/remote/driver.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-10-22 10:05:00 -0400 (Mon, 22 Oct 2007)
New Revision: 8737
Modified:
modules/test/trunk/remote/src/main/org/jboss/unit/remote/driver/CompositeRemoteTestDriver.java
Log:
support constructor with test suite name in composite remote test driver
Modified: modules/test/trunk/remote/src/main/org/jboss/unit/remote/driver/CompositeRemoteTestDriver.java
===================================================================
--- modules/test/trunk/remote/src/main/org/jboss/unit/remote/driver/CompositeRemoteTestDriver.java 2007-10-22 13:46:11 UTC (rev 8736)
+++ modules/test/trunk/remote/src/main/org/jboss/unit/remote/driver/CompositeRemoteTestDriver.java 2007-10-22 14:05:00 UTC (rev 8737)
@@ -40,6 +40,15 @@
public class CompositeRemoteTestDriver extends CompositeTestDriver implements RemoteTestDriver
{
+ public CompositeRemoteTestDriver()
+ {
+ }
+
+ public CompositeRemoteTestDriver(String name)
+ {
+ super(name);
+ }
+
public void pushContext(TestId testId, RequestContext requestContext)
{
String name = testId.getName(0);
16 years, 7 months
JBoss Portal SVN: r8736 - in modules/identity/trunk: testsuite and 1 other directory.
by portal-commits@lists.jboss.org
Author: bdaw
Date: 2007-10-22 09:46:11 -0400 (Mon, 22 Oct 2007)
New Revision: 8736
Modified:
modules/identity/trunk/identity/build.xml
modules/identity/trunk/testsuite/build.xml
Log:
- use jboss unit html reporting in testsuite
Modified: modules/identity/trunk/identity/build.xml
===================================================================
--- modules/identity/trunk/identity/build.xml 2007-10-22 13:31:27 UTC (rev 8735)
+++ modules/identity/trunk/identity/build.xml 2007-10-22 13:46:11 UTC (rev 8736)
@@ -348,7 +348,8 @@
</tests>
<reports>
- <xml toDir="output/tests"/>
+ <xml toDir="output/tests/xml"/>
+ <html toDir="output/tests/html"/>
</reports>
<classpath>
@@ -356,13 +357,5 @@
</classpath>
</jboss-unit >
- <!--<junitreport todir="output/tests">-->
- <!--<fileset dir="output/tests">-->
- <!--<include name="TEST-*.xml"/>-->
- <!--</fileset>-->
- <!--<report format="frames"-->
- <!--todir="output/tests"/>-->
- <!--</junitreport>-->
</target>
-
</project>
Modified: modules/identity/trunk/testsuite/build.xml
===================================================================
--- modules/identity/trunk/testsuite/build.xml 2007-10-22 13:31:27 UTC (rev 8735)
+++ modules/identity/trunk/testsuite/build.xml 2007-10-22 13:46:11 UTC (rev 8736)
@@ -80,11 +80,16 @@
<!-- copy all reports to testsuite/output/reports -->
<target name="copy-reports">
- <copy todir="${reports.dir}">
- <fileset dir="../${module}/output/tests">
- <include name="TEST-*.xml"/>
+ <copy todir="${reports.dir}/xml">
+ <fileset dir="../${module}/output/tests/xml">
+ <include name="*"/>
</fileset>
</copy>
+ <copy todir="${reports.dir}/html">
+ <fileset dir="../${module}/output/tests/html">
+ <include name="*"/>
+ </fileset>
+ </copy>
</target>
<target name="run-tests">
@@ -124,18 +129,18 @@
<!--<antcall target="agent-undeploy"/>-->
</sequential>
<server:stop name="default"/>
- <antcall target="reports"/>
+ <!--<antcall target="reports"/>-->
</target>
- <target name="reports">
- <junitreport todir="${reports.dir}">
- <fileset dir="${reports.dir}">
- <include name="TEST-*.xml"/>
- </fileset>
- <report format="frames"
- todir="${reports.dir}"/>
- </junitreport>
- </target>
+ <!--<target name="reports">-->
+ <!--<junitreport todir="${reports.dir}">-->
+ <!--<fileset dir="${reports.dir}">-->
+ <!--<include name="TEST-*.xml"/>-->
+ <!--</fileset>-->
+ <!--<report format="frames"-->
+ <!--todir="${reports.dir}"/>-->
+ <!--</junitreport>-->
+ <!--</target>-->
<target name="clean">
<!-- remove generated test xml files -->
16 years, 7 months
JBoss Portal SVN: r8735 - modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-10-22 09:31:27 -0400 (Mon, 22 Oct 2007)
New Revision: 8735
Modified:
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java
Log:
skip empty reports
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java 2007-10-22 13:22:14 UTC (rev 8734)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java 2007-10-22 13:31:27 UTC (rev 8735)
@@ -109,60 +109,64 @@
{
TestSuiteReport report = entry.getValue();
- report.elements.add(testsuitesDocument.createElement(XMLConstants.PROPERTIES));
- Element systemError = testsuitesDocument.createElement(XMLConstants.SYSTEM_ERR);
- systemError.appendChild(testsuitesDocument.createCDATASection(report.err.toString()));
- report.elements.add(systemError);
- Element systemOutElement = testsuitesDocument.createElement(XMLConstants.SYSTEM_OUT);
- systemOutElement.appendChild(testsuitesDocument.createCDATASection(report.out.toString()));
- report.elements.add(systemOutElement);
+ // We filter and keep only meaningful results
+ if (report.elements.size() > 0)
+ {
+ report.elements.add(testsuitesDocument.createElement(XMLConstants.PROPERTIES));
+ Element systemError = testsuitesDocument.createElement(XMLConstants.SYSTEM_ERR);
+ systemError.appendChild(testsuitesDocument.createCDATASection(report.err.toString()));
+ report.elements.add(systemError);
+ Element systemOutElement = testsuitesDocument.createElement(XMLConstants.SYSTEM_OUT);
+ systemOutElement.appendChild(testsuitesDocument.createCDATASection(report.out.toString()));
+ report.elements.add(systemOutElement);
- //
- Element testSuiteElt = testsuitesDocument.createElement(XMLConstants.TESTSUITE);
+ //
+ Element testSuiteElt = testsuitesDocument.createElement(XMLConstants.TESTSUITE);
- //
- testSuiteElt.setAttribute(XMLConstants.HOSTNAME, getHostName());
- testSuiteElt.setAttribute(XMLConstants.ATTR_PACKAGE, entry.getKey().packageName);
- testSuiteElt.setAttribute(XMLConstants.ATTR_NAME, entry.getKey().className);
- testSuiteElt.setAttribute(XMLConstants.ATTR_TESTS, Integer.toString(report.tests));
- testSuiteElt.setAttribute(XMLConstants.ATTR_ERRORS, Integer.toString(report.errors));
- testSuiteElt.setAttribute(XMLConstants.ATTR_FAILURES, Integer.toString(report.failures));
- testSuiteElt.setAttribute(XMLConstants.ATTR_TIME, DURATION_FORMAT.format(report.durationMillis / 1000.0));
+ //
+ testSuiteElt.setAttribute(XMLConstants.HOSTNAME, getHostName());
+ testSuiteElt.setAttribute(XMLConstants.ATTR_PACKAGE, entry.getKey().packageName);
+ testSuiteElt.setAttribute(XMLConstants.ATTR_NAME, entry.getKey().className);
+ testSuiteElt.setAttribute(XMLConstants.ATTR_TESTS, Integer.toString(report.tests));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_ERRORS, Integer.toString(report.errors));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_FAILURES, Integer.toString(report.failures));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_TIME, DURATION_FORMAT.format(report.durationMillis / 1000.0));
- //
- for (Element elt : report.elements)
- {
- testSuiteElt.appendChild(elt);
- }
+ //
+ for (Element elt : report.elements)
+ {
+ testSuiteElt.appendChild(elt);
+ }
- //
- if (xmlReportDir != null)
- {
- Document tmp = createDocument();
- Element copy = (Element)tmp.importNode(testSuiteElt, true);
- tmp.appendChild(copy);
- String a = copy.getAttribute("package");
- String b = copy.getAttribute("name");
- String c = a.length() == 0 ? b : a + "." + b;
- copy.setAttribute("name", c);
- copy.removeAttribute("package");
- try
+ //
+ if (xmlReportDir != null)
{
- File f = new File(xmlReportDir, TEST_FILE_NAME_PREFIX + c + ".xml");
- if (!f.exists())
+ Document tmp = createDocument();
+ Element copy = (Element)tmp.importNode(testSuiteElt, true);
+ tmp.appendChild(copy);
+ String a = copy.getAttribute("package");
+ String b = copy.getAttribute("name");
+ String c = a.length() == 0 ? b : a + "." + b;
+ copy.setAttribute("name", c);
+ copy.removeAttribute("package");
+ try
{
- f.createNewFile();
+ File f = new File(xmlReportDir, TEST_FILE_NAME_PREFIX + c + ".xml");
+ if (!f.exists())
+ {
+ f.createNewFile();
+ }
+ serializeNode(tmp, f);
}
- dump(tmp, f);
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
}
- catch (IOException e)
- {
- e.printStackTrace();
- }
+
+ //
+ testsuitesElement.appendChild(testSuiteElt);
}
-
- //
- testsuitesElement.appendChild(testSuiteElt);
}
//
@@ -187,7 +191,7 @@
//
File tmp = new File(htmlReportDir, "TESTS-TestSuites.xml");
- dump(testsuitesElement, tmp);
+ serializeNode(testsuitesElement, tmp);
}
}
@@ -250,7 +254,7 @@
report.durationMillis += testSuite.durationMillis;
}
- private void dump(Node node, File dest)
+ private void serializeNode(Node node, File dest)
{
try
{
@@ -294,7 +298,7 @@
failureType = XMLConstants.ERROR;
}
- test.appendChild(addError(failureType, failure.getStackTrace()));
+ test.appendChild(addGeneralError(failureType, failure.getStackTrace()));
}
//
@@ -317,7 +321,7 @@
}
- private Element addError(String type, Throwable t)
+ private Element addGeneralError(String type, Throwable t)
{
Element error = testsuitesDocument.createElement(type);
@@ -453,5 +457,4 @@
private long durationMillis;
}
-
}
\ No newline at end of file
16 years, 7 months
JBoss Portal SVN: r8734 - modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-10-22 09:22:14 -0400 (Mon, 22 Oct 2007)
New Revision: 8734
Modified:
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java
Log:
implemented aggregation of same testsuite in junit reporter
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java 2007-10-22 13:11:05 UTC (rev 8733)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java 2007-10-22 13:22:14 UTC (rev 8734)
@@ -207,7 +207,7 @@
int errors;
/** The failed count */
- int failed;
+ int failures;
/** The started Tests */
Map<TestId, TestInfo> startedTests = new HashMap<TestId, TestInfo>();
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java 2007-10-22 13:11:05 UTC (rev 8733)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java 2007-10-22 13:22:14 UTC (rev 8734)
@@ -79,20 +79,14 @@
/** The document */
private Document testsuitesDocument;
- /** The root element */
- private Element testsuitesElement;
-
/** . */
- private Map<TestSuite, List<Element>> testSuiteListMap = new HashMap<TestSuite, List<Element>>();
-
- /** . */
private File htmlReportDir;
/** . */
private File xmlReportDir;
/** . */
- private Map<String, Integer> fileNameCounters = new HashMap<String, Integer>();
+ private Map<TestSuiteKey, TestSuiteReport> reportMap = new HashMap<TestSuiteKey, TestSuiteReport>();
public JUnitTestsuiteReport(File xmlReportDir, File htmlReportDir)
{
@@ -103,11 +97,75 @@
protected void startRunner()
{
testsuitesDocument = createDocument();
- testsuitesElement = testsuitesDocument.createElement(XMLConstants.TESTSUITES);
}
protected void endRunner()
{
+ Element testsuitesElement = testsuitesDocument.createElement(XMLConstants.TESTSUITES);
+ testsuitesDocument.appendChild(testsuitesElement);
+
+ //
+ for (Map.Entry<TestSuiteKey, TestSuiteReport> entry : reportMap.entrySet())
+ {
+ TestSuiteReport report = entry.getValue();
+
+ report.elements.add(testsuitesDocument.createElement(XMLConstants.PROPERTIES));
+ Element systemError = testsuitesDocument.createElement(XMLConstants.SYSTEM_ERR);
+ systemError.appendChild(testsuitesDocument.createCDATASection(report.err.toString()));
+ report.elements.add(systemError);
+ Element systemOutElement = testsuitesDocument.createElement(XMLConstants.SYSTEM_OUT);
+ systemOutElement.appendChild(testsuitesDocument.createCDATASection(report.out.toString()));
+ report.elements.add(systemOutElement);
+
+ //
+ Element testSuiteElt = testsuitesDocument.createElement(XMLConstants.TESTSUITE);
+
+ //
+ testSuiteElt.setAttribute(XMLConstants.HOSTNAME, getHostName());
+ testSuiteElt.setAttribute(XMLConstants.ATTR_PACKAGE, entry.getKey().packageName);
+ testSuiteElt.setAttribute(XMLConstants.ATTR_NAME, entry.getKey().className);
+ testSuiteElt.setAttribute(XMLConstants.ATTR_TESTS, Integer.toString(report.tests));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_ERRORS, Integer.toString(report.errors));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_FAILURES, Integer.toString(report.failures));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_TIME, DURATION_FORMAT.format(report.durationMillis / 1000.0));
+
+ //
+ for (Element elt : report.elements)
+ {
+ testSuiteElt.appendChild(elt);
+ }
+
+ //
+ if (xmlReportDir != null)
+ {
+ Document tmp = createDocument();
+ Element copy = (Element)tmp.importNode(testSuiteElt, true);
+ tmp.appendChild(copy);
+ String a = copy.getAttribute("package");
+ String b = copy.getAttribute("name");
+ String c = a.length() == 0 ? b : a + "." + b;
+ copy.setAttribute("name", c);
+ copy.removeAttribute("package");
+ try
+ {
+ File f = new File(xmlReportDir, TEST_FILE_NAME_PREFIX + c + ".xml");
+ if (!f.exists())
+ {
+ f.createNewFile();
+ }
+ dump(tmp, f);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ //
+ testsuitesElement.appendChild(testSuiteElt);
+ }
+
+ //
if (htmlReportDir != null)
{
try
@@ -141,21 +199,29 @@
errorElt.appendChild(testsuitesDocument.createCDATASection(stackToString(failure.getStackTrace())));
//
- testSuiteListMap.get(testSuite).add(errorElt);
+ get(testSuite).elements.add(errorElt);
}
protected void startTestSuite(TestSuite testSuite)
{
- List<Element> elements = new ArrayList<Element>();
- testSuiteListMap.put(testSuite, elements);
}
+ private TestSuiteReport get(TestSuite testSuite)
+ {
+ TestSuiteKey key = new TestSuiteKey(testSuite);
+ TestSuiteReport report = reportMap.get(key);
+ if (report == null)
+ {
+ report = new TestSuiteReport();
+ reportMap.put(key, report);
+ }
+ return report;
+ }
+
protected void endTestSuite(TestSuite testSuite)
{
- StringBuffer fqn = testSuite.getFQN();
+ TestSuiteReport report = get(testSuite);
- List<Element> elements = testSuiteListMap.remove(testSuite);
-
//
if( testSuite.startedTests.size() > 0 )
{
@@ -163,94 +229,25 @@
{
Element errorNotEnded = testsuitesDocument.createElement(XMLConstants.ERROR);
errorNotEnded.setAttribute(XMLConstants.ATTR_MESSAGE, "Testcase: " + id + " was not ended properly. (No EndTestEvent)");
- elements.add(errorNotEnded);
+ report.elements.add(errorNotEnded);
}
}
//
- int pos = fqn.lastIndexOf(".");
- String packageName = (pos == -1) ? "" : fqn.substring(0, pos);
- String className = (pos == -1) ? fqn.toString() : fqn.substring(pos + 1);
-
- //
- StringWriter out = new StringWriter();
- StringWriter err = new StringWriter();
try
{
- testSuite.view.writeTo(out, err);
+ testSuite.view.writeTo(report.out, report.err);
}
catch (IOException e)
{
e.printStackTrace();
}
- Element systemError = testsuitesDocument.createElement(XMLConstants.SYSTEM_ERR);
- systemError.appendChild(testsuitesDocument.createCDATASection(err.toString()));
- Element systemOutElement = testsuitesDocument.createElement(XMLConstants.SYSTEM_OUT);
- systemOutElement.appendChild(testsuitesDocument.createCDATASection(out.toString()));
-
//
- Element testSuiteElt = testsuitesDocument.createElement(XMLConstants.TESTSUITE);
-
- //
- testSuiteElt.setAttribute(XMLConstants.TIMESTAMP, createTimestamp());
- testSuiteElt.setAttribute(XMLConstants.HOSTNAME, getHostName());
- testSuiteElt.setAttribute(XMLConstants.ATTR_PACKAGE, packageName);
- testSuiteElt.setAttribute(XMLConstants.ATTR_NAME, className);
- testSuiteElt.setAttribute(XMLConstants.ATTR_TESTS, Integer.toString(testSuite.tests));
- testSuiteElt.setAttribute(XMLConstants.ATTR_ERRORS, Integer.toString(testSuite.errors));
- testSuiteElt.setAttribute(XMLConstants.ATTR_FAILURES, Integer.toString(testSuite.failed));
- testSuiteElt.setAttribute(XMLConstants.ATTR_TIME, DURATION_FORMAT.format(testSuite.durationMillis / 1000.0));
-
- //
- for (Element elt : elements)
- {
- testSuiteElt.appendChild(elt);
- }
-
- //
- testSuiteElt.appendChild(testsuitesDocument.createElement(XMLConstants.PROPERTIES));
- testSuiteElt.appendChild(systemError);
- testSuiteElt.appendChild(systemOutElement);
-
- //
- if (xmlReportDir != null)
- {
- Document tmp = createDocument();
- Element copy = (Element)tmp.importNode(testSuiteElt, true);
- tmp.appendChild(copy);
- String a = copy.getAttribute("package");
- String b = copy.getAttribute("name");
- String c = a.length() == 0 ? b : a + "." + b;
- copy.setAttribute("name", c);
- copy.removeAttribute("package");
- try
- {
- Integer counter = fileNameCounters.get(c);
- if (counter == null)
- {
- counter = 0;
- }
- else
- {
- counter = counter + 1;
- }
- fileNameCounters.put(c, counter);
- File f = new File(xmlReportDir, TEST_FILE_NAME_PREFIX + c + (counter == 0 ? "" : "_" + counter) + ".xml");
- if (!f.exists())
- {
- f.createNewFile();
- }
- dump(tmp, f);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
-
- //
- testsuitesElement.appendChild(testSuiteElt);
+ report.tests += testSuite.tests;
+ report.failures += testSuite.failures;
+ report.errors += testSuite.errors;
+ report.durationMillis += testSuite.durationMillis;
}
private void dump(Node node, File dest)
@@ -288,7 +285,7 @@
// Check failure type (failed, error)
if(FailureType.ASSERTION == failure.getType())
{
- testSuite.failed++;
+ testSuite.failures++;
failureType = XMLConstants.FAILURE;
}
else
@@ -301,7 +298,7 @@
}
//
- testSuiteListMap.get(testSuite).add(test);
+ get(testSuite).elements.add(test);
//
@@ -379,4 +376,82 @@
throw new Error(e);
}
}
+
+ private static class TestSuiteKey
+ {
+
+ /** . */
+ private final String packageName;
+
+ /** . */
+ private final String className;
+
+ private TestSuiteKey(TestSuite testSuite)
+ {
+ StringBuffer fqn = testSuite.getFQN();
+ int pos = fqn.lastIndexOf(".");
+ packageName = (pos == -1) ? "" : fqn.substring(0, pos);
+ className = (pos == -1) ? fqn.toString() : fqn.substring(pos + 1);
+ }
+
+ private TestSuiteKey(String packageName, String className)
+ {
+ if (packageName == null)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (className == null)
+ {
+ throw new IllegalArgumentException();
+ }
+ this.packageName = packageName;
+ this.className = className;
+ }
+
+ public boolean equals(Object o)
+ {
+ if (o == this)
+ {
+ return true;
+ }
+ if (o instanceof TestSuiteKey)
+ {
+ TestSuiteKey that = (TestSuiteKey)o;
+ return that.packageName.equals(packageName) && that.className.equals(className);
+ }
+ return false;
+ }
+
+ public int hashCode()
+ {
+ return packageName.hashCode() * 41 + className.hashCode();
+ }
+ }
+
+ private static class TestSuiteReport
+ {
+
+ /** . */
+ private final List<Element> elements = new ArrayList<Element>();
+
+ /** . */
+ private final StringWriter out = new StringWriter();
+
+ /** . */
+ private final StringWriter err = new StringWriter();
+
+ /** . */
+ private int tests;
+
+ /** . */
+ private int errors;
+
+ /** . */
+ private int failures;
+
+ /** . */
+ private long durationMillis;
+
+ }
+
}
\ No newline at end of file
16 years, 7 months
JBoss Portal SVN: r8733 - branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/dtd.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2007-10-22 09:11:05 -0400 (Mon, 22 Oct 2007)
New Revision: 8733
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/dtd/portal-object_2_6.dtd
Log:
JBPORTAL-1300: Modified DTD
Modified: branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/dtd/portal-object_2_6.dtd
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/dtd/portal-object_2_6.dtd 2007-10-22 13:09:16 UTC (rev 8732)
+++ branches/JBoss_Portal_Branch_2_6/core/src/resources/portal-core-sar/dtd/portal-object_2_6.dtd 2007-10-22 13:11:05 UTC (rev 8733)
@@ -176,7 +176,7 @@
The region and height defines how the window is placed in the page.
-->
-<!ELEMENT window (window-name,(instance-ref|content),region,height,properties?,listener?)>
+<!ELEMENT window (window-name,(instance-ref|content),region,height,initial-window-state?,initial-mode?,properties?,listener?)>
<!--
The window name value.
@@ -229,6 +229,16 @@
<!ELEMENT region (#PCDATA)>
<!--
+The window state to use when the window is first accessed
+-->
+<!ELEMENT initial-window-state (#PCDATA)>
+
+<!--
+The mode to use when the window is first accessed
+-->
+<!ELEMENT initial-mode (#PCDATA)>
+
+<!--
The height of the window in the particular region.
-->
<!ELEMENT height (#PCDATA)>
16 years, 7 months
JBoss Portal SVN: r8732 - branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2007-10-22 09:09:16 -0400 (Mon, 22 Oct 2007)
New Revision: 8732
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PageMetaData.java
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/WindowMetaData.java
Log:
JBPORTAL-1300: Let the user define an initial window-state and mode on a window by specifying something lie:
<initial-window-state>maximized</initial-window-state>
<initial-mode>edit</initial-mode>
Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PageMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PageMetaData.java 2007-10-22 10:25:33 UTC (rev 8731)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/PageMetaData.java 2007-10-22 13:09:16 UTC (rev 8732)
@@ -22,21 +22,28 @@
******************************************************************************/
package org.jboss.portal.core.model.portal.metadata;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.jboss.logging.Logger;
+import org.jboss.portal.WindowState;
import org.jboss.portal.common.xml.XMLTools;
+import org.jboss.portal.core.model.content.spi.ContentProviderRegistry;
import org.jboss.portal.core.model.portal.PageContainer;
import org.jboss.portal.core.model.portal.PortalObject;
-import org.jboss.portal.core.model.content.spi.ContentProviderRegistry;
import org.w3c.dom.Element;
-import java.util.List;
-
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @author <a href="mailto:theute@jboss.org">Thoams Heute</a>
* @version $Revision$
*/
public class PageMetaData extends PortalObjectMetaData
{
-
+ private static final Logger logger = Logger.getLogger(PageMetaData.class);
+
public PageMetaData()
{
}
@@ -75,6 +82,9 @@
e.printStackTrace();
}
}
+
+ // Log errors if any
+ checkConstraints(pageMD);
// Add the contained pages
List pageElts = XMLTools.getChildren(pageElt, "page");
@@ -95,6 +105,48 @@
//
return pageMD;
}
+
+ private static boolean checkConstraints(PageMetaData pageMD)
+ {
+ // Check that no more than 1 window has been defined as maximized
+ Collection values = pageMD.getChildren().values();
+ List maximizedWindows = new ArrayList();
+ if (values != null)
+ {
+ Iterator it = values.iterator();
+ while (it.hasNext())
+ {
+ PortalObjectMetaData poMetaData =(PortalObjectMetaData)it.next();
+ if (poMetaData instanceof WindowMetaData)
+ {
+ WindowMetaData windowMetaData = (WindowMetaData)poMetaData;
+ if (WindowState.MAXIMIZED.toString().equals(windowMetaData.getInitialWindowState()))
+ {
+ maximizedWindows.add(windowMetaData);
+ if (maximizedWindows.size() > 1)
+ {
+ logger.debug("Set initial window state to NORMAL for window '" + windowMetaData + "'");
+ windowMetaData.setInitialWindowState(WindowState.NORMAL.toString());
+ }
+ }
+ }
+ }
+ }
+ if (maximizedWindows.size() > 1)
+ {
+ StringBuffer windowsList = new StringBuffer();
+ Iterator it = maximizedWindows.iterator();
+ while (it.hasNext())
+ {
+ WindowMetaData windowMD = (WindowMetaData)it.next();
+ windowsList.append(windowMD.toString() + "\n");
+ }
+ logger.error("More than one window is defined as maximized for page '" + pageMD.getName() + "'. The following windows" +
+ " have been defined as maximized:\n" + windowsList);
+ return false;
+ }
+ return true;
+ }
public String toString()
{
Modified: branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/WindowMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/WindowMetaData.java 2007-10-22 10:25:33 UTC (rev 8731)
+++ branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/model/portal/metadata/WindowMetaData.java 2007-10-22 13:09:16 UTC (rev 8732)
@@ -22,6 +22,9 @@
******************************************************************************/
package org.jboss.portal.core.model.portal.metadata;
+import org.jboss.logging.Logger;
+import org.jboss.portal.WindowState;
+import org.jboss.portal.core.impl.model.portal.WindowImpl;
import org.jboss.portal.core.model.portal.Page;
import org.jboss.portal.core.model.portal.PortalObject;
import org.jboss.portal.core.model.portal.Window;
@@ -37,13 +40,21 @@
*/
public class WindowMetaData extends PortalObjectMetaData
{
-
+
+ private static final Logger logger = Logger.getLogger(WindowMetaData.class);
+
/** The window region. */
protected String region;
/** The window order. */
protected int order;
+ /** The initial window state. */
+ protected String initialWindowState;
+
+ /** The initial window state. */
+ protected String initialMode;
+
/** The window content. */
protected ContentMetaData content;
@@ -89,7 +100,27 @@
{
this.contentType = contentType;
}
+
+ public String getInitialWindowState()
+ {
+ return initialWindowState;
+ }
+
+ public void setInitialWindowState(String initialWindowState)
+ {
+ this.initialWindowState = initialWindowState;
+ }
+ public String getInitialMode()
+ {
+ return initialMode;
+ }
+
+ public void setInitialMode(String initialMode)
+ {
+ this.initialMode = initialMode;
+ }
+
protected PortalObject newInstance(BuildContext buildContext, PortalObject parent) throws Exception
{
if (!(parent instanceof Page))
@@ -103,7 +134,15 @@
//
window.setDeclaredProperty(ThemeConstants.PORTAL_PROP_REGION, region);
window.setDeclaredProperty(ThemeConstants.PORTAL_PROP_ORDER, "" + order);
-
+ if (initialWindowState != null)
+ {
+ window.setDeclaredProperty(WindowImpl.PORTAL_INITIAL_WINDOW_STATE, "" + initialWindowState);
+ }
+ if (initialMode != null)
+ {
+ window.setDeclaredProperty(WindowImpl.PORTAL_INITIAL_MODE, "" + initialMode);
+ }
+
//
return window;
}
@@ -120,6 +159,31 @@
String region = XMLTools.asString(XMLTools.getUniqueChild(windowElt, "region", true));
windowMD.setRegion(region);
+ // Get initial window state
+ Element element = XMLTools.getUniqueChild(windowElt, "initial-window-state", false);
+ if (element != null)
+ {
+ String initialWindowState = XMLTools.asString(element);
+ if (initialWindowState.toLowerCase().equals(WindowState.MAXIMIZED.toString())
+ || (initialWindowState.toLowerCase().equals(WindowState.MINIMIZED.toString()))
+ || (initialWindowState.toLowerCase().equals(WindowState.NORMAL.toString())))
+ {
+ windowMD.setInitialWindowState(initialWindowState);
+ }
+ else
+ {
+ logger.error("initial-window-state for '" + windowName + "' must be one of 'MAXIMIZED', 'MINIMIZED' or 'NORMAL'");
+ }
+ }
+
+ // Get initial mode
+ element = XMLTools.getUniqueChild(windowElt, "initial-mode", false);
+ if (element != null)
+ {
+ String initialMode = XMLTools.asString(element);
+ windowMD.setInitialMode(initialMode);
+ }
+
//
int height = Integer.parseInt(XMLTools.asString(XMLTools.getUniqueChild(windowElt, "height", true)));
windowMD.setOrder(height);
16 years, 7 months
JBoss Portal SVN: r8731 - in modules/test/trunk: tooling/src/main/org/jboss/unit/tooling/ant and 7 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-10-22 06:25:33 -0400 (Mon, 22 Oct 2007)
New Revision: 8731
Added:
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/StringUtils.java
modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/
modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/impl/
modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/impl/junit/
modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/impl/junit/junit-frames.xsl
Modified:
modules/test/trunk/tooling/build.xml
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/HTMLReportsType.java
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ReportsType.java
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java
modules/test/trunk/unit/src/main/org/jboss/test/unit/sample/SampleTests.java
modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitReporter.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/ByteArrayOutputStreamExt.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputManager.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputView.java
Log:
- improved JUnit XML reporting
- implemented HTML reporting
Modified: modules/test/trunk/tooling/build.xml
===================================================================
--- modules/test/trunk/tooling/build.xml 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/tooling/build.xml 2007-10-22 10:25:33 UTC (rev 8731)
@@ -266,10 +266,10 @@
<reports>
<!-- if toDir for xml reports doesn't exist it'll be created -->
<!-- at the moment it produces xmls in junit format -->
- <xml toDir="./output/test-results"/>
+ <xml toDir="./output/test-results/xml"/>
<!-- html reports uses junit reporting task and will reuse reports generated by <xml> task-->
- <html toDir="./output/test-results"/>
+ <html toDir="./output/test-results/html"/>
</reports>
<sysproperty key="toto" value="totoValue"/>
Modified: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/HTMLReportsType.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/HTMLReportsType.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/HTMLReportsType.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -43,5 +43,4 @@
{
this.toDir = toDir;
}
-
}
Modified: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ReportsType.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ReportsType.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ReportsType.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -56,12 +56,12 @@
htmlReports = html;
}
- public XMLReportsType getXmlReports()
+ public XMLReportsType getXMLReports()
{
return xmlReports;
}
- public HTMLReportsType getHtmlReports()
+ public HTMLReportsType getHTMLReports()
{
return htmlReports;
}
Modified: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -187,14 +187,16 @@
javaTask.createArg().setValue(OPT_SUITE_NAME + "=" + getSuiteName());
}
-
-
- if (getReports() != null && getReports().getXmlReports() != null)
+ if (getReports() != null && getReports().getXMLReports() != null)
{
- javaTask.createArg().setValue(OPT_XML_REPORT_DIR + "=" + getReports().getXmlReports().getToDir());
+ javaTask.createArg().setValue(OPT_XML_REPORT_DIR + "=" + getReports().getXMLReports().getToDir());
}
-
+ if (getReports() != null && getReports().getHTMLReports() != null)
+ {
+ javaTask.createArg().setValue(OPT_HTML_REPORT_DIR + "=" + getReports().getHTMLReports().getToDir());
+ }
+
Set<String> includeIds = new HashSet<String>();
Set<String> includeKeywords = new HashSet<String>();
@@ -203,9 +205,6 @@
Set<String> excludeKeywords = new HashSet<String>();
-
-
-
for (IncludeType include : includes)
{
//Check attributes consistency
Modified: modules/test/trunk/unit/src/main/org/jboss/test/unit/sample/SampleTests.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/test/unit/sample/SampleTests.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/test/unit/sample/SampleTests.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -22,22 +22,23 @@
******************************************************************************/
package org.jboss.test.unit.sample;
+import org.jboss.unit.report.impl.junit.JUnitTestsuiteReport;
import org.jboss.unit.report.impl.writer.PrintListener;
-import org.jboss.unit.report.impl.junit.JUnitReporter;
import org.jboss.unit.runner.TestRunner;
import org.jboss.unit.runner.TestRunnerEventListener;
+import org.jboss.unit.runner.impl.TestRunnerContextSupport;
import org.jboss.unit.runner.impl.TestRunnerEventBroadcaster;
-import org.jboss.unit.runner.impl.TestRunnerContextSupport;
+import org.jboss.unit.runner.model.BuilderException;
import org.jboss.unit.runner.model.ModelBuilder;
import org.jboss.unit.runner.model.TestSuiteDef;
-import org.jboss.unit.runner.model.BuilderException;
import org.jboss.unit.tooling.SystemOutputManager;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
-import java.io.IOException;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -86,9 +87,34 @@
TestRunner runner = suite.createRunner();
- TestRunnerEventListener junitReporter = new JUnitReporter("output/tests", SampleTests.class.getName());
- // add listeners
+ File xmlDir = new File("output/tests/xml");
+ File htmlDir = new File("output/tests/html");
+ if (!xmlDir.exists())
+ {
+ xmlDir.mkdirs();
+ }
+ else
+ {
+ if (!xmlDir.isDirectory())
+ {
+ throw new AssertionError();
+ }
+ }
+ if (!htmlDir.exists())
+ {
+ htmlDir.mkdirs();
+ }
+ else
+ {
+ if (!htmlDir.isDirectory())
+ {
+ throw new AssertionError();
+ }
+ }
+
+ TestRunnerEventListener junitReporter = new JUnitTestsuiteReport(xmlDir, htmlDir);
+
TestRunnerEventBroadcaster broadcaster = new TestRunnerEventBroadcaster();
broadcaster.addListener(junitReporter);
broadcaster.addListener(new PrintListener());
Added: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java (rev 0)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/AbstractJUnitReport.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -0,0 +1,264 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.unit.report.impl.junit;
+
+import org.jboss.unit.Failure;
+import org.jboss.unit.TestId;
+import org.jboss.unit.info.TestInfo;
+import org.jboss.unit.runner.TestResult;
+import org.jboss.unit.runner.TestRunnerEvent;
+import org.jboss.unit.runner.TestRunnerEventListener;
+import org.jboss.unit.runner.event.EndRunnerEvent;
+import org.jboss.unit.runner.event.EndTestCaseEvent;
+import org.jboss.unit.runner.event.EndTestSuiteEvent;
+import org.jboss.unit.runner.event.RunnerFailureEvent;
+import org.jboss.unit.runner.event.StartRunnerEvent;
+import org.jboss.unit.runner.event.StartTestCaseEvent;
+import org.jboss.unit.runner.event.StartTestSuiteEvent;
+import org.jboss.unit.tooling.SystemOutputManager;
+import org.jboss.unit.tooling.SystemOutputView;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractJUnitReport implements TestRunnerEventListener
+{
+
+ /** The tested classes stack. */
+ private TestSuite current;
+
+ public void onEvent(TestRunnerEvent event)
+ {
+ if (event instanceof StartRunnerEvent)
+ {
+ handle((StartRunnerEvent) event);
+ }
+ else if (event instanceof EndRunnerEvent)
+ {
+ handle((EndRunnerEvent)event);
+ }
+ else if (event instanceof RunnerFailureEvent)
+ {
+ handle((RunnerFailureEvent) event);
+ }
+ else if (event instanceof StartTestSuiteEvent)
+ {
+ handle((StartTestSuiteEvent)event);
+ }
+ else if (event instanceof EndTestSuiteEvent)
+ {
+ handle((EndTestSuiteEvent)event);
+ }
+ else if (event instanceof StartTestCaseEvent)
+ {
+ handle((StartTestCaseEvent) event);
+ }
+ else if (event instanceof EndTestCaseEvent)
+ {
+ handle((EndTestCaseEvent) event);
+ }
+ }
+
+ protected abstract void startRunner();
+
+ protected abstract void endRunner();
+
+ protected abstract void runnerFailure(TestSuite testSuite, Failure failure);
+
+ protected abstract void endTestCase(TestSuite testSuite, String testName, TestResult result);
+
+ protected abstract void startTestSuite(TestSuite testSuite);
+
+ protected abstract void endTestSuite(TestSuite testSuite);
+
+ private void handle(StartRunnerEvent event)
+ {
+ current = new TestSuite(null, "");
+
+ //
+ startTestSuite(current);
+
+ //
+ startRunner();
+ }
+
+ private void handle(EndRunnerEvent event)
+ {
+ TestSuite tmp = current;
+ current = null;
+
+ //
+ endTestSuite(tmp);
+
+ //
+ endRunner();
+ }
+
+ private void handle(StartTestSuiteEvent event)
+ {
+ current = new TestSuite(current, event.getTestInfo().getName());
+
+ //
+ startTestSuite(current);
+ }
+
+ private void handle(EndTestSuiteEvent event)
+ {
+ TestSuite testSuite = current;
+ current = current.parent;
+
+ //
+ endTestSuite(testSuite);
+ }
+
+ private void handle(StartTestCaseEvent event)
+ {
+ current.startedTests.put(event.getTestId(), event.getTestInfo());
+ }
+
+ private void handle(RunnerFailureEvent event)
+ {
+ current.tests++;
+ current.errors++;
+
+ //
+ runnerFailure(current, event.getFailure());
+ }
+
+ private void handle(EndTestCaseEvent event)
+ {
+ TestId testId = event.getTestId();
+ TestResult result = event.getTestResult();
+ TestInfo info = current.startedTests.get(testId);
+
+ // remove test from started List
+ current.startedTests.remove(testId);
+
+ /** Adding testcase name */
+ StringBuffer testName = new StringBuffer(info.getName());
+ Iterator<String> i = result.getParametrization().keySet().iterator();
+ if (i.hasNext())
+ {
+ testName.append("?");
+ while (i.hasNext())
+ {
+ String parameterName = i.next();
+ String value = result.getParametrization().get(parameterName);
+ testName.append(parameterName).append("=").append(value);
+ if(i.hasNext())
+ {
+ testName.append("&");
+ }
+ }
+ }
+
+ //
+ current.durationMillis += result.getDurationMillis();
+ current.tests++;
+
+ //
+ endTestCase(current, testName.toString(), result);
+ }
+
+ public class TestSuite
+ {
+
+ /** . */
+ final TestSuite parent;
+
+ /** . */
+ final String name;
+
+ /** . */
+ long durationMillis;
+
+ /** The test count */
+ int tests;
+
+ /** The error count */
+ int errors;
+
+ /** The failed count */
+ int failed;
+
+ /** The started Tests */
+ Map<TestId, TestInfo> startedTests = new HashMap<TestId, TestInfo>();
+
+// /** . */
+// List<Element> children = new ArrayList<Element>();
+
+ /** The view of the system output. */
+ SystemOutputView view = SystemOutputManager.getInstance().createView(false);
+
+ /**
+ * Todo: set properties
+ *
+ * @param name
+ */
+ TestSuite(TestSuite parent, String name)
+ {
+ this.parent = parent;
+ this.name = name;
+ }
+
+ public StringBuffer getFQN()
+ {
+ if (parent == null)
+ {
+ return new StringBuffer("_none_");
+ }
+ else
+ {
+ List<TestSuite> tmp = new ArrayList<TestSuite>();
+ for (TestSuite current = this;current.parent != null;current = current.parent)
+ {
+ tmp.add(current);
+ }
+
+ //
+ Collections.reverse(tmp);
+
+ // Skip the first top that will not participate in the name
+ StringBuffer nb = new StringBuffer();
+ for (Iterator<TestSuite> i = tmp.iterator();i.hasNext();)
+ {
+ TestSuite testSuite = i.next();
+ nb.append(testSuite.name);
+ if (i.hasNext())
+ {
+ nb.append(".");
+ }
+ }
+ return nb;
+ }
+ }
+ }
+}
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitReporter.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitReporter.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitReporter.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -76,7 +76,7 @@
if (event instanceof StartRunnerEvent)
{
report.startJUnitTestSuite((StartRunnerEvent) event);
- view = SystemOutputManager.getInstance().createView();
+ view = SystemOutputManager.getInstance().createView(false);
}
else if (event instanceof EndRunnerEvent)
{
Added: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java (rev 0)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/JUnitTestsuiteReport.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -0,0 +1,382 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.unit.report.impl.junit;
+
+import org.jboss.unit.Failure;
+import org.jboss.unit.FailureType;
+import org.jboss.unit.TestId;
+import org.jboss.unit.runner.TestResult;
+import org.jboss.unit.runner.results.TestFailure;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:emuckenh@redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class JUnitTestsuiteReport extends AbstractJUnitReport
+{
+
+ /** */
+ public static final String TEST_FILE_NAME_PREFIX = "TEST-";
+
+ /** The formatter for timestamps.*/
+ private static final SimpleDateFormat TIMESTAMP_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+
+ /** The formatter for durations.*/
+ private static final NumberFormat DURATION_FORMAT = NumberFormat.getInstance();
+
+ /** The document */
+ private Document testsuitesDocument;
+
+ /** The root element */
+ private Element testsuitesElement;
+
+ /** . */
+ private Map<TestSuite, List<Element>> testSuiteListMap = new HashMap<TestSuite, List<Element>>();
+
+ /** . */
+ private File htmlReportDir;
+
+ /** . */
+ private File xmlReportDir;
+
+ /** . */
+ private Map<String, Integer> fileNameCounters = new HashMap<String, Integer>();
+
+ public JUnitTestsuiteReport(File xmlReportDir, File htmlReportDir)
+ {
+ this.xmlReportDir = xmlReportDir;
+ this.htmlReportDir = htmlReportDir;
+ }
+
+ protected void startRunner()
+ {
+ testsuitesDocument = createDocument();
+ testsuitesElement = testsuitesDocument.createElement(XMLConstants.TESTSUITES);
+ }
+
+ protected void endRunner()
+ {
+ if (htmlReportDir != null)
+ {
+ try
+ {
+ InputStream xslIn = getClass().getResourceAsStream("/org/jboss/unit/report/impl/junit/junit-frames.xsl");
+ Source xmlSource = new DOMSource(testsuitesElement);
+ Source xslSource = new StreamSource(xslIn);
+ TransformerFactory transFact = TransformerFactory.newInstance();
+ Transformer trans = transFact.newTransformer(xslSource);
+ OutputStream os = new ByteArrayOutputStream();
+ Result result = new StreamResult(os);
+ trans.setParameter("output.dir", htmlReportDir.getAbsolutePath());
+ trans.transform(xmlSource, result);
+ }
+ catch (TransformerException e)
+ {
+ e.printStackTrace();
+ }
+
+ //
+ File tmp = new File(htmlReportDir, "TESTS-TestSuites.xml");
+ dump(testsuitesElement, tmp);
+ }
+ }
+
+ protected void runnerFailure(TestSuite testSuite, Failure failure)
+ {
+ Element errorElt = testsuitesDocument.createElement(XMLConstants.ERROR);
+ errorElt.setAttribute(XMLConstants.ATTR_TYPE, failure.getType().name());
+ errorElt.setAttribute(XMLConstants.ATTR_MESSAGE, failure.getMessage());
+ errorElt.appendChild(testsuitesDocument.createCDATASection(stackToString(failure.getStackTrace())));
+
+ //
+ testSuiteListMap.get(testSuite).add(errorElt);
+ }
+
+ protected void startTestSuite(TestSuite testSuite)
+ {
+ List<Element> elements = new ArrayList<Element>();
+ testSuiteListMap.put(testSuite, elements);
+ }
+
+ protected void endTestSuite(TestSuite testSuite)
+ {
+ StringBuffer fqn = testSuite.getFQN();
+
+ List<Element> elements = testSuiteListMap.remove(testSuite);
+
+ //
+ if( testSuite.startedTests.size() > 0 )
+ {
+ for(TestId id : testSuite.startedTests.keySet())
+ {
+ Element errorNotEnded = testsuitesDocument.createElement(XMLConstants.ERROR);
+ errorNotEnded.setAttribute(XMLConstants.ATTR_MESSAGE, "Testcase: " + id + " was not ended properly. (No EndTestEvent)");
+ elements.add(errorNotEnded);
+ }
+ }
+
+ //
+ int pos = fqn.lastIndexOf(".");
+ String packageName = (pos == -1) ? "" : fqn.substring(0, pos);
+ String className = (pos == -1) ? fqn.toString() : fqn.substring(pos + 1);
+
+ //
+ StringWriter out = new StringWriter();
+ StringWriter err = new StringWriter();
+ try
+ {
+ testSuite.view.writeTo(out, err);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ Element systemError = testsuitesDocument.createElement(XMLConstants.SYSTEM_ERR);
+ systemError.appendChild(testsuitesDocument.createCDATASection(err.toString()));
+ Element systemOutElement = testsuitesDocument.createElement(XMLConstants.SYSTEM_OUT);
+ systemOutElement.appendChild(testsuitesDocument.createCDATASection(out.toString()));
+
+ //
+ Element testSuiteElt = testsuitesDocument.createElement(XMLConstants.TESTSUITE);
+
+ //
+ testSuiteElt.setAttribute(XMLConstants.TIMESTAMP, createTimestamp());
+ testSuiteElt.setAttribute(XMLConstants.HOSTNAME, getHostName());
+ testSuiteElt.setAttribute(XMLConstants.ATTR_PACKAGE, packageName);
+ testSuiteElt.setAttribute(XMLConstants.ATTR_NAME, className);
+ testSuiteElt.setAttribute(XMLConstants.ATTR_TESTS, Integer.toString(testSuite.tests));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_ERRORS, Integer.toString(testSuite.errors));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_FAILURES, Integer.toString(testSuite.failed));
+ testSuiteElt.setAttribute(XMLConstants.ATTR_TIME, DURATION_FORMAT.format(testSuite.durationMillis / 1000.0));
+
+ //
+ for (Element elt : elements)
+ {
+ testSuiteElt.appendChild(elt);
+ }
+
+ //
+ testSuiteElt.appendChild(testsuitesDocument.createElement(XMLConstants.PROPERTIES));
+ testSuiteElt.appendChild(systemError);
+ testSuiteElt.appendChild(systemOutElement);
+
+ //
+ if (xmlReportDir != null)
+ {
+ Document tmp = createDocument();
+ Element copy = (Element)tmp.importNode(testSuiteElt, true);
+ tmp.appendChild(copy);
+ String a = copy.getAttribute("package");
+ String b = copy.getAttribute("name");
+ String c = a.length() == 0 ? b : a + "." + b;
+ copy.setAttribute("name", c);
+ copy.removeAttribute("package");
+ try
+ {
+ Integer counter = fileNameCounters.get(c);
+ if (counter == null)
+ {
+ counter = 0;
+ }
+ else
+ {
+ counter = counter + 1;
+ }
+ fileNameCounters.put(c, counter);
+ File f = new File(xmlReportDir, TEST_FILE_NAME_PREFIX + c + (counter == 0 ? "" : "_" + counter) + ".xml");
+ if (!f.exists())
+ {
+ f.createNewFile();
+ }
+ dump(tmp, f);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ //
+ testsuitesElement.appendChild(testSuiteElt);
+ }
+
+ private void dump(Node node, File dest)
+ {
+ try
+ {
+ Source source = new DOMSource(node);
+ Transformer xtrans = TransformerFactory.newInstance().newTransformer();
+ xtrans.setOutputProperty(OutputKeys.INDENT, "yes");
+ xtrans.setOutputProperty(OutputKeys.METHOD, "xml");
+ xtrans.setOutputProperty(OutputKeys.STANDALONE, "yes");
+ Result result = new StreamResult(dest);
+ xtrans.transform(source, result);
+ }
+ catch (TransformerException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ protected void endTestCase(TestSuite testSuite, String testName, TestResult result)
+ {
+ Element test = testsuitesDocument.createElement(XMLConstants.TESTCASE);
+ test.setAttribute(XMLConstants.ATTR_CLASSNAME, testSuite.getFQN().toString());
+ test.setAttribute(XMLConstants.ATTR_NAME, testName);
+ test.setAttribute(XMLConstants.ATTR_TIME, DURATION_FORMAT.format(result.getDurationMillis() / 1000.0));
+
+ /** If testcase failed */
+ if (result instanceof TestFailure)
+ {
+ TestFailure testFailure = (TestFailure) result;
+ Failure failure = testFailure.getFailure();
+
+ String failureType;
+ // Check failure type (failed, error)
+ if(FailureType.ASSERTION == failure.getType())
+ {
+ testSuite.failed++;
+ failureType = XMLConstants.FAILURE;
+ }
+ else
+ {
+ testSuite.errors++;
+ failureType = XMLConstants.ERROR;
+ }
+
+ test.appendChild(addError(failureType, failure.getStackTrace()));
+ }
+
+ //
+ testSuiteListMap.get(testSuite).add(test);
+
+
+ //
+// if (info != null)
+// {
+//
+//
+// }
+// else
+// {
+// // If test is not started - add error message
+// Element errorNotStarted = document.createElement(XMLConstants.ERROR);
+// errorNotStarted.setAttribute(XMLConstants.ATTR_MESSAGE, "TestCase: " + testId + " was not started properly. (No StartTestEvent)");
+// test.appendChild(errorNotStarted);
+// }
+ }
+
+
+ private Element addError(String type, Throwable t)
+ {
+ Element error = testsuitesDocument.createElement(type);
+
+ // Testcase error message
+ error.setAttribute(XMLConstants.ATTR_MESSAGE, t.getMessage());
+
+ // Testcase error type
+ error.setAttribute(XMLConstants.ATTR_TYPE, t.getClass().getName());
+
+ // Testcase stacktrace
+ error.appendChild(testsuitesDocument.createCDATASection(stackToString(t)));
+
+ //
+ return error;
+ }
+
+ private static String stackToString(Throwable t)
+ {
+ Writer writer = new StringWriter();
+ PrintWriter printWriter = new PrintWriter(writer);
+ t.printStackTrace(printWriter);
+ printWriter.close();
+ return writer.toString();
+ }
+
+ /**
+ * Generates a new timestamp string.
+ *
+ * @return a newly create timestamp string
+ */
+ private static String createTimestamp()
+ {
+ return TIMESTAMP_FORMAT.format(new Date());
+ }
+
+ private static String getHostName()
+ {
+ try
+ {
+ return InetAddress.getLocalHost().getHostName();
+ }
+ catch(UnknownHostException e)
+ {
+ return "localhost";
+ }
+ }
+
+ private static Document createDocument()
+ {
+ try
+ {
+ return DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+ }
+ catch(ParserConfigurationException e)
+ {
+ throw new Error(e);
+ }
+ }
+}
\ No newline at end of file
Added: modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/StringUtils.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/StringUtils.java (rev 0)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/report/impl/junit/StringUtils.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -0,0 +1,35 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.unit.report.impl.junit;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class StringUtils
+{
+ public static String replace(String data, String from, String to)
+ {
+ return data.replace(from, to);
+ }
+}
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/ByteArrayOutputStreamExt.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/ByteArrayOutputStreamExt.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/ByteArrayOutputStreamExt.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -42,7 +42,7 @@
public int writeTo(Writer out, int from) throws IOException, ArrayIndexOutOfBoundsException
{
- String s = new String(buf, from, count);
+ String s = new String(buf, from, count - from);
out.write(s);
return count;
}
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -165,11 +165,9 @@
this.parameters = parameters;
}
- private SystemOutputManager systemManager;
-
public void execute() throws Exception
{
- systemManager = new SystemOutputManager();
+ SystemOutputManager systemManager = new SystemOutputManager();
systemManager.start();
//
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -23,6 +23,7 @@
package org.jboss.unit.tooling;
import org.jboss.unit.report.impl.junit.JUnitReporter;
+import org.jboss.unit.report.impl.junit.JUnitTestsuiteReport;
import org.jboss.unit.runner.TestRunner;
import org.jboss.unit.runner.TestRunnerEventListener;
import org.jboss.unit.runner.impl.NullFilter;
@@ -32,7 +33,6 @@
import org.jboss.unit.tooling.filter.ExcludeTestFilter;
import org.jboss.unit.tooling.filter.IncludeTestFilter;
import org.jboss.unit.tooling.filter.MainTestFilter;
-import org.jboss.unit.tooling.report.DelegatingReporter;
import org.xml.sax.InputSource;
import java.io.File;
@@ -40,10 +40,10 @@
import java.io.InputStream;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.LinkedList;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
@@ -499,32 +499,20 @@
//add PrintListener by default
- DelegatingReporter reporter = new DelegatingReporter(noConsole);
-
+ //
+ File htmlReportFile = null;
+ if (htmlReportDir != null)
+ {
+ htmlReportFile = checkCreateOutputDirectory(htmlReportDir);
+ }
+ File xmlReportFile = null;
if (xmlReportDir != null)
{
-
- //XML Output directory must exists
- checkCreateOutputDirectory(xmlReportDir);
-
- JUnitReporter xmlReporter = null;
- if (getSuiteName() != null)
- {
- xmlReporter = new JUnitReporter(xmlReportDir, getSuiteName());
- }
- else
- {
- xmlReporter = new JUnitReporter(xmlReportDir);
- }
-
- reporter.setXmlReporter(xmlReporter);
+ xmlReportFile = checkCreateOutputDirectory(xmlReportDir);
}
+ JUnitTestsuiteReport fileReporter = new JUnitTestsuiteReport(xmlReportFile, htmlReportFile);
+ broadcaster.addListener(fileReporter);
- broadcaster.addListener(reporter);
-
-
-
-
MainTestFilter filter = new MainTestFilter();
if (keywords.size() == 0 && names.size() == 0 && namePatterns.size() == 0)
@@ -545,22 +533,18 @@
filter.addExcludeFilter(new ExcludeTestFilter(excludeKeywords, excludeNames, excludeNamePatterns));
}
-
return new Main(runner, filter, broadcaster, suite, properties, getParameters());
}
- public static void checkCreateOutputDirectory(String dir) throws Exception
+ public static File checkCreateOutputDirectory(String dir) throws Exception
{
- File output = null;
-
try
{
- output = new File(dir);
+ File output = new File(dir);
- //Check if the dir exits and if not create it
+ // heck if the dir exits and if not create it
if (!output.exists())
{
-
output.mkdirs();
}
else
@@ -571,15 +555,13 @@
}
}
+ //
+ return output;
}
catch (Exception e)
{
throw new IllegalStateException("Failed to use provided output directory: '" + dir + "'", e);
}
-
}
-
-
-
}
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputManager.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputManager.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputManager.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -56,9 +56,9 @@
return instance;
}
- public SystemOutputView createView()
+ public SystemOutputView createView(boolean fullHistory)
{
- return new SystemOutputView(baosOut, baosErr);
+ return new SystemOutputView(baosOut, baosErr, fullHistory);
}
public void start()
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputView.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputView.java 2007-10-21 15:33:41 UTC (rev 8730)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/SystemOutputView.java 2007-10-22 10:25:33 UTC (rev 8731)
@@ -45,12 +45,12 @@
/** . */
private int errCount;
- public SystemOutputView(ByteArrayOutputStreamExt out, ByteArrayOutputStreamExt err)
+ public SystemOutputView(ByteArrayOutputStreamExt out, ByteArrayOutputStreamExt err, boolean fullHistory)
{
this.out = out;
this.err = err;
- this.outCount = 0;
- this.errCount = 0;
+ this.outCount = fullHistory ? 0 : out.size();
+ this.errCount = fullHistory ? 0 : err.size();
}
public void writeTo(OutputStream toOut, OutputStream toErr) throws IOException
Added: modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/impl/junit/junit-frames.xsl
===================================================================
--- modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/impl/junit/junit-frames.xsl (rev 0)
+++ modules/test/trunk/unit/src/resources/jboss-unit-jar/org/jboss/unit/report/impl/junit/junit-frames.xsl 2007-10-22 10:25:33 UTC (rev 8731)
@@ -0,0 +1,712 @@
+<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="org.jboss.unit.report.impl.junit.StringUtils"
+ extension-element-prefixes="redirect">
+<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
+<xsl:decimal-format decimal-separator="." grouping-separator=","/>
+<!--
+ Copyright 2001-2005 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.
+
+-->
+<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}/{@id}_{(a)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}/{@id}_{(a)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}/{@id}_{(a)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 »
+ </a>
+ </div>
+ <xsl:if test="string-length(./system-out)!=0">
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
+ System.out »
+ </a>
+ </div>
+ </xsl:if>
+ <xsl:if test="string-length(./system-err)!=0">
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
+ System.err »
+ </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 (ehatcher(a)apache.org)
+ -->
+ <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 = ''"><none></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="{@id}_{(a)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="@id"/>_<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 = ''"><none></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 > 0">Error</xsl:when>
+ <xsl:when test="$failureCount > 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) > 0">Error</xsl:when>
+ <xsl:when test="sum($insamepackage/@failures) > 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 = ''"><none></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) > 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[.> 0]">Error</xsl:when>
+ <xsl:when test="@failures[.> 0]">Failure</xsl:when>
+ <xsl:otherwise>Pass</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><a href="{@id}_{(a)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="@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),"'","\'")"/>
+ <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),"
",$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>
+
16 years, 7 months
JBoss Portal SVN: r8730 - in modules/test/trunk: tooling/src/main/org/jboss/test/unit/tooling and 4 other directories.
by portal-commits@lists.jboss.org
Author: bdaw
Date: 2007-10-21 11:33:41 -0400 (Sun, 21 Oct 2007)
New Revision: 8730
Added:
modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/
modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/SimpleTest1.java
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ParameterType.java
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ValueType.java
modules/test/trunk/tooling/src/resources/test/simple-tests.xml
Removed:
modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/BoboTest1.java
Modified:
modules/test/trunk/tooling/build.xml
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/JBossUnitTask.java
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java
modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ToolingConstants.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java
modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java
Log:
- enable tooling to handle parameters from system properties
Modified: modules/test/trunk/tooling/build.xml
===================================================================
--- modules/test/trunk/tooling/build.xml 2007-10-21 15:23:23 UTC (rev 8729)
+++ modules/test/trunk/tooling/build.xml 2007-10-21 15:33:41 UTC (rev 8730)
@@ -217,34 +217,47 @@
<jboss-unit>
- <tests config="./output/resources/test/bobo-tests.xml" suiteName="one">
+ <tests config="./output/resources/test/simple-tests.xml" suiteName="one">
<!-- no include tag means invoke all -->
<!-- but you can still exclude some tests -->
<property name="propName" value="propValue"/>
+
+ <parameter name="param1">
+ <value>one</value>
+ <value>two</value>
+ <value>three</value>
+ </parameter>
+
+ <parameter name="param2">
+ <value>2one</value>
+ <value>2two</value>
+ <value>2three</value>
+ </parameter>
+
<exclude id="otherTestTwo"/>
</tests>
<tests config="./output/resources/test/assertkeyword-unit.xml">
</tests>
- <!--<tests config="./output/resources/test/bobo-tests.xml">
+ <!--<tests config="./output/resources/test/simple-tests.xml">
<include id="testOne"/>
<include id="otherTestOne"/>
<exclude ids="testOne,testTwo"/>
</tests>
- <tests config="output/resources/test/bobo-tests.xml" suiteName="three">
+ <tests config="output/resources/test/simple-tests.xml" suiteName="three">
<include id="otherTestOne"/>
<include id="testOne"/>
<include id="otherTestTwo"/>
</tests>
- <tests config="output/resources/test/bobo-tests.xml" suiteName="four">
+ <tests config="output/resources/test/simple-tests.xml" suiteName="four">
<include keywords="simpleTag"/>
</tests>-->
- <!--<tests config="output/resources/test/bobo-tests.xml">-->
+ <!--<tests config="output/resources/test/simple-tests.xml">-->
<!-- this one should fail as attribute 'id' is exclusive -->
<!--<include id="otherTestOne" ids="testOne,testTwo" keywords="lola,lolo,loli"/>-->
<!--</tests>-->
Copied: modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple (from rev 8674, modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/bobo)
Deleted: modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/BoboTest1.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/bobo/BoboTest1.java 2007-10-17 11:11:09 UTC (rev 8674)
+++ modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/BoboTest1.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -1,62 +0,0 @@
-/*
-* JBoss, a division of Red Hat
-* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-
-package org.jboss.test.unit.tooling.bobo;
-
-import org.jboss.unit.api.pojo.annotations.Test;
-import org.jboss.unit.api.pojo.annotations.Tag;
-
-/**
- * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
- * @version $Revision: 0.1 $
- */
-public class BoboTest1
-{
- @Test(name = "testOne")
- @Tag("simpleTag")
- public void test1()
- {
- System.out.println("Executed testOne");
- }
-
- @Test(name = "testTwo")
- @Tag("simpleTag")
- public void test2()
- {
- System.out.println("Executed testTwo");
-
- }
-
- @Test(name = "otherTestOne")
- @Tag({"simpleTag", "anotherTag"})
- public void test3()
- {
- System.out.println("Executed otherTestOne");
- }
-
- @Test(name = "otherTestTwo")
- @Tag("simpleTag")
- public void test4()
- {
- System.out.println("Executed otherTestTwo");
- }
-}
Added: modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/SimpleTest1.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/SimpleTest1.java (rev 0)
+++ modules/test/trunk/tooling/src/main/org/jboss/test/unit/tooling/simple/SimpleTest1.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -0,0 +1,62 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.test.unit.tooling.simple;
+
+import org.jboss.unit.api.pojo.annotations.Test;
+import org.jboss.unit.api.pojo.annotations.Tag;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version $Revision: 0.1 $
+ */
+public class SimpleTest1
+{
+ @Test(name = "testOne")
+ @Tag("simpleTag")
+ public void test1()
+ {
+ System.out.println("Executed testOne");
+ }
+
+ @Test(name = "testTwo")
+ @Tag("simpleTag")
+ public void test2()
+ {
+ System.out.println("Executed testTwo");
+
+ }
+
+ @Test(name = "otherTestOne")
+ @Tag({"simpleTag", "anotherTag"})
+ public void test3()
+ {
+ System.out.println("Executed otherTestOne");
+ }
+
+ @Test(name = "otherTestTwo")
+ @Tag("simpleTag")
+ public void test4()
+ {
+ System.out.println("Executed otherTestTwo");
+ }
+}
Modified: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/JBossUnitTask.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/JBossUnitTask.java 2007-10-21 15:23:23 UTC (rev 8729)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/JBossUnitTask.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -51,6 +51,8 @@
private Set<Environment.Variable> sysproperties = new HashSet<Environment.Variable>();
+ private Set<ParameterType> parameters = new HashSet<ParameterType>();
+
public JBossUnitTask()
{
}
@@ -72,10 +74,14 @@
this.reports = reports;
}
+ public void addConfiguredParameter(ParameterType param)
+ {
+ this.parameters.add(param);
+ }
+
public void execute() throws BuildException
{
- //System.out.println("Executing JBossUnit. tests: " + testsTypes.size());
for (TestsType testsType : testsTypes)
{
@@ -92,12 +98,21 @@
}
+ // Merge system properties
Set<Environment.Variable> propCopy = new HashSet<Environment.Variable>();
propCopy.addAll(sysproperties);
-
propCopy.addAll(testsType.getSysproperties());
testsType.setSysproperties(propCopy);
+
+ // Merge runtime parameters
+ Set<ParameterType> paramCopy = new HashSet<ParameterType>();
+ paramCopy.addAll(parameters);
+ paramCopy.addAll(testsType.getParameters());
+ testsType.setParameters(paramCopy);
+
testsType.execute();
+
+
}
Added: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ParameterType.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ParameterType.java (rev 0)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ParameterType.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -0,0 +1,89 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.unit.tooling.ant;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class ParameterType
+{
+
+ private String name;
+
+ private List<String> values = new LinkedList<String>();
+
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ ParameterType that = (ParameterType)o;
+
+ if (!name.equals(that.name))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public int hashCode()
+ {
+ int result;
+ result = name.hashCode();
+ result = 31 * result + (values != null ? values.hashCode() : 0);
+ return result;
+ }
+
+ public void addConfiguredValue(ValueType value)
+ {
+ values.add(value.toString());
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public List<String> getValues()
+ {
+ return values;
+ }
+
+
+}
Modified: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java 2007-10-21 15:23:23 UTC (rev 8729)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/TestsType.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -69,6 +69,10 @@
private Set<Environment.Variable> sysproperties = new HashSet<Environment.Variable>();
+ private Set<ParameterType> parameters = new HashSet<ParameterType>();
+
+
+
public TestsType()
{
}
@@ -308,8 +312,198 @@
javaTask.createArg().setValue(OPT_PROPERTIES + "=" + props);
}
+
+ Map<String,List<String>> sysParameters = new HashMap<String, List<String>>();
+
+ Map<String,List<String>> mergedParameters = new HashMap<String, List<String>>();
+
+ for (ParameterType parameter : parameters)
+ {
+ List<String> values;
+
+ if (mergedParameters.containsKey(parameter.getName()))
+ {
+ values = mergedParameters.get(parameter.getName());
+ }
+ else
+ {
+ values = new LinkedList<String>();
+ }
+
+ values.addAll(parameter.getValues());
+
+ mergedParameters.put(parameter.getName(), values);
+ }
+
+ updateParameters(sysParameters);
+
+ mergedParameters.putAll(sysParameters);
+
+
+ if (!mergedParameters.isEmpty())
+ {
+ StringBuilder params = new StringBuilder("[");
+
+ Set<String> paramNames = mergedParameters.keySet();
+
+ for (Iterator<String> stringIterator = paramNames.iterator(); stringIterator.hasNext();)
+ {
+ String name = stringIterator.next();
+
+
+ List<String> paramValues = mergedParameters.get(name);
+
+ for (Iterator<String> iterator = paramValues.iterator(); iterator.hasNext();)
+ {
+ String value = iterator.next();
+
+
+ params.append(name)
+ .append("=")
+ .append(value);
+
+ if (iterator.hasNext())
+ {
+ params.append(",");
+ }
+ }
+
+ if (stringIterator.hasNext())
+ {
+ params.append(",");
+ }
+ else
+ {
+ params.append("]");
+ }
+
+ }
+
+ javaTask.createArg().setValue(OPT_PARAMETERS + "=" + params);
+
+ }
+
+
+
+
}
+ private void updateParameters(Map<String, List<String>> taskParameters)
+ {
+ Hashtable<String, String> sysProps = (Hashtable<String,String>)getProject().getProperties();
+
+ String sysParameters = sysProps.get(JBOSS_UNIT_PARAMETERS);
+
+ if (sysParameters != null && sysParameters.length() > 0)
+ {
+
+ Map<String,List<String>> parsedParams = parseParameters(sysParameters);
+
+ taskParameters.putAll(parsedParams);
+ }
+
+ for (String sysPropKey : sysProps.keySet())
+ {
+ if (sysPropKey.startsWith(JBOSS_UNIT_PARAMETER + "."))
+ {
+ String propertyString = sysPropKey + "=" + sysProps.get(sysPropKey);
+
+ propertyString = propertyString.replaceFirst(JBOSS_UNIT_PARAMETER + "\\.", "");
+
+
+ //
+ String[] parameter = propertyString.split("=",2);
+
+ //
+ if (parameter.length != 2)
+ {
+ throw new IllegalArgumentException("Property not accepted, it should match a=b and it is " + propertyString);
+ }
+
+
+ List parameterValues = new LinkedList<String>();
+
+ if (parameter[1].matches("\\[.+(,.+)*\\]"))
+ {
+
+
+
+ String valuesString = parameter[1];
+
+ valuesString = valuesString.replaceAll("\\[","").replaceAll("\\]","");
+
+ String[] values = valuesString.split(",");
+
+ for (String value : values)
+ {
+ parameterValues.add(value);
+ }
+
+ }
+ else
+ {
+ parameterValues.add(parameter[1]);
+ }
+
+ if (taskParameters.containsKey(parameter[0]))
+ {
+ taskParameters.get(parameter[0]).addAll(parameterValues);
+ }
+ else
+ {
+ taskParameters.put(parameter[0], parameterValues);
+ }
+ }
+ }
+ }
+
+ private Map<String, List<String>> parseParameters(String parametersString)
+ {
+
+ if (!parametersString.matches("\\[.+=.+(,.+=.+)*\\]"))
+ {
+ throw new IllegalArgumentException("Parameters don't follow proper format: [a=b,c=d,e=f]");
+ }
+
+ Map<String,List<String>> parsedParams = new HashMap<String,List<String>>();
+
+ parametersString = parametersString.replaceAll("\\[","").replaceAll("\\]","");
+
+ String parameterGroups[] = parametersString.split(",");
+
+ for (String parameterGroup : parameterGroups)
+ {
+
+ String parameter[] = parameterGroup.split("=");
+
+ //
+ if (parameter.length != 2)
+ {
+ throw new IllegalArgumentException("Parameter not accepted, it should match a=b and it is " + parameter);
+ }
+
+ List<String> values;
+
+ if (parsedParams.containsKey(parameter[0]))
+ {
+ values = parsedParams.get(parameter[0]);
+ }
+ else
+ {
+ values = new LinkedList<String>();
+ }
+
+ values.add(parameter[1]);
+
+ parsedParams.put(parameter[0], values);
+ }
+
+ return parsedParams;
+
+
+ }
+
+
private void addUnparsedString(Set<String> set, String valueString)
{
if (valueString == null)
@@ -384,7 +578,7 @@
{
if (!propertiesString.matches("\\[.+=.+(,.+=.+)*\\]"))
{
- throw new IllegalArgumentException("Parameters don't follow proper format: [a=b,c=d,e=f]");
+ throw new IllegalArgumentException("Properties don't follow proper format: [a=b,c=d,e=f]");
}
Map<String,String> parsedProps = new HashMap<String,String>();
@@ -440,6 +634,21 @@
this.properties.add(property);
}
+ public void addConfiguredParameter(ParameterType param)
+ {
+ this.parameters.add(param);
+ }
+
+ public Set<ParameterType> getParameters()
+ {
+ return parameters;
+ }
+
+ public void setParameters(Set<ParameterType> parameters)
+ {
+ this.parameters = parameters;
+ }
+
public String getConfig()
{
return config;
Modified: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ToolingConstants.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ToolingConstants.java 2007-10-21 15:23:23 UTC (rev 8729)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ToolingConstants.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -63,5 +63,9 @@
public static final String OPT_PROPERTIES = "--properties";
+ public static final String OPT_PARAMETER = "--parameter";
+ public static final String OPT_PARAMETERS = "--parameters";
+
+
}
Added: modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ValueType.java
===================================================================
--- modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ValueType.java (rev 0)
+++ modules/test/trunk/tooling/src/main/org/jboss/unit/tooling/ant/ValueType.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -0,0 +1,47 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.unit.tooling.ant;
+
+/**
+ * @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class ValueType
+{
+ private String value;
+
+ public void addText(String text)
+ {
+ this.value = text;
+ }
+
+ public String getValue()
+ {
+ return value;
+ }
+
+ public String toString()
+ {
+ return this.value;
+ }
+}
Copied: modules/test/trunk/tooling/src/resources/test/simple-tests.xml (from rev 8728, modules/test/trunk/tooling/src/resources/test/bobo-tests.xml)
===================================================================
--- modules/test/trunk/tooling/src/resources/test/simple-tests.xml (rev 0)
+++ modules/test/trunk/tooling/src/resources/test/simple-tests.xml 2007-10-21 15:33:41 UTC (rev 8730)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jboss-unit
+ xmlns="urn:jboss:jboss-unit:1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:jboss-unit:1.0 jboss-unit_1_0.xsd">
+ <pojo>
+ <test>
+ <class name="org.jboss.test.unit.tooling.simple.SimpleTest1"/>
+ </test>
+ </pojo>
+</jboss-unit>
\ No newline at end of file
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java 2007-10-21 15:23:23 UTC (rev 8729)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/Main.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -52,6 +52,8 @@
private final Map<String,String> properties;
+ private final Map<String, String[]> parameters;
+
private final TestRunnerEventBroadcaster broadcaster;
public static final String JBOSS_UNIT_PROPERTIES = "jboss.unit.properties";
@@ -93,6 +95,10 @@
public static final String OPT_PROPERTIES = "--properties";
+ public static final String OPT_PARAMETER = "--parameter";
+
+ public static final String OPT_PARAMETERS = "--parameters";
+
public static final Set options;
public static final Set options_no_arg;
@@ -119,7 +125,7 @@
options_no_arg = Collections.unmodifiableSet(opts);
}
- public Main(TestRunner runner, MainTestFilter mainFilter, TestRunnerEventBroadcaster broadcaster, TestSuiteDef suiteDef, Map<String,String> properties)
+ public Main(TestRunner runner, MainTestFilter mainFilter, TestRunnerEventBroadcaster broadcaster, TestSuiteDef suiteDef, Map<String,String> properties, Map<String, String[]> parameters)
{
if (runner == null)
{
@@ -146,11 +152,17 @@
throw new IllegalArgumentException("properties cannot be null");
}
+ if (parameters == null)
+ {
+ throw new IllegalArgumentException("parameters cannot be null");
+ }
+
this.mainFilter = mainFilter;
this.runner = runner;
this.suiteDef = suiteDef;
this.properties = properties;
this.broadcaster = broadcaster;
+ this.parameters = parameters;
}
private SystemOutputManager systemManager;
@@ -177,7 +189,7 @@
StringWriter sw = new StringWriter();
broadcaster.addListener(new PrintListener(sw));
- TestRunnerContextSupport runnerContext = new TestRunnerContextSupport(properties, new ParametrizationSet(), mainFilter, broadcaster);
+ TestRunnerContextSupport runnerContext = new TestRunnerContextSupport(properties, new ParametrizationSet(parameters), mainFilter, broadcaster);
runner.run(runnerContext);
sw.close();
@@ -274,10 +286,10 @@
builder.setHTMLReportDir(arguments.get(OPT_HTML_REPORT_DIR));
}
- if (argument.startsWith(OPT_PROPERTY))
+ if (argument.startsWith(OPT_PROPERTY) && !argument.equals(OPT_PROPERTIES))
{
- //pass whole --properties.name=value to be parsed
+ // Pass whole --properties.name=value to be parsed
builder.addUnparsedProperty(argument + arguments.get(OPT_PROPERTY));
}
@@ -285,6 +297,18 @@
{
builder.addUnparsedProperties(arguments.get(OPT_PROPERTIES));
}
+
+ if (argument.startsWith(OPT_PARAMETER) && !argument.equals(OPT_PARAMETERS))
+ {
+
+ // Pass whole --parameter.name=value/values to be parsed
+ builder.addUnparsedParameter(argument + arguments.get(OPT_PARAMETER));
+ }
+
+ if (argument.equals(OPT_PARAMETERS))
+ {
+ builder.addUnparsedParameters(arguments.get(OPT_PARAMETERS));
+ }
}
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java 2007-10-21 15:23:23 UTC (rev 8729)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/tooling/MainBuilder.java 2007-10-21 15:33:41 UTC (rev 8730)
@@ -22,26 +22,28 @@
package org.jboss.unit.tooling;
+import org.jboss.unit.report.impl.junit.JUnitReporter;
+import org.jboss.unit.runner.TestRunner;
import org.jboss.unit.runner.TestRunnerEventListener;
-import org.jboss.unit.runner.TestRunner;
+import org.jboss.unit.runner.impl.NullFilter;
import org.jboss.unit.runner.impl.TestRunnerEventBroadcaster;
-import org.jboss.unit.runner.impl.NullFilter;
import org.jboss.unit.runner.model.ModelBuilder;
import org.jboss.unit.runner.model.TestSuiteDef;
-import org.jboss.unit.report.impl.junit.JUnitReporter;
import org.jboss.unit.tooling.filter.ExcludeTestFilter;
import org.jboss.unit.tooling.filter.IncludeTestFilter;
import org.jboss.unit.tooling.filter.MainTestFilter;
import org.jboss.unit.tooling.report.DelegatingReporter;
import org.xml.sax.InputSource;
-import java.util.Set;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
-import java.util.HashMap;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.File;
+import java.util.Set;
+import java.util.LinkedList;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
@@ -76,7 +78,9 @@
private Map<String,String> properties = new HashMap<String, String>();
+ private Map<String, List<String>> parameters = new HashMap<String, List<String>>();
+
private MainBuilder()
{
@@ -352,8 +356,103 @@
return parsedProps;
}
+ public void addUnparsedParameter(String paramString)
+ {
+ paramString = paramString.replaceFirst(Main.OPT_PARAMETER + "\\.", "");
+ //
+ String[] parameter = paramString.split("=",2);
+ //
+ if (parameter.length != 2)
+ {
+ throw new IllegalArgumentException("Parameter not accepted, it should match a=b and it is " + paramString);
+ }
+
+
+ List<String> parameterValues = new LinkedList<String>();
+
+ if (parameter[1].matches("\\[.+(,.+)*\\]"))
+ {
+
+ String valuesString = parameter[1];
+
+ valuesString = valuesString.replaceAll("\\[","").replaceAll("\\]","");
+
+ String[] values = valuesString.split(",");
+
+ for (String value : values)
+ {
+ parameterValues.add(value);
+ }
+
+ }
+ else
+ {
+ parameterValues.add(parameter[1]);
+ }
+
+ if (parameters.containsKey(parameter[0]))
+ {
+ parameters.get(parameter[0]).addAll(parameterValues);
+ }
+ else
+ {
+ parameters.put(parameter[0], parameterValues);
+ }
+
+ }
+
+ public void addUnparsedParameters(String parametersString)
+ {
+
+ parametersString = parametersString.replaceAll("\\[","").replaceAll("\\]","");
+
+ String parameterGroups[] = parametersString.split(",");
+
+ for (String parameterGroup : parameterGroups)
+ {
+
+ String parameter[] = parameterGroup.split("=");
+
+ //
+ if (parameter.length != 2)
+ {
+ throw new IllegalArgumentException("Parameter not accepted, it should match a=b and it is " + parameter);
+ }
+
+ List<String> values;
+
+ if (parameters.containsKey(parameter[0]))
+ {
+ values = parameters.get(parameter[0]);
+ }
+ else
+ {
+ values = new LinkedList<String>();
+ }
+
+ values.add(parameter[1]);
+
+ parameters.put(parameter[0], values);
+ }
+ }
+
+ public Map<String, String[]> getParameters()
+ {
+ Map<String, String[]> params = new HashMap<String,String[]>();
+
+ for (String paramKey : parameters.keySet())
+ {
+ List<String> values = parameters.get(paramKey);
+ params.put(paramKey, values.toArray(new String[values.size()]));
+ }
+
+ return params;
+
+ }
+
+
public String getSuiteName()
{
return suiteName;
@@ -447,7 +546,7 @@
}
- return new Main(runner, filter, broadcaster, suite, properties);
+ return new Main(runner, filter, broadcaster, suite, properties, getParameters());
}
public static void checkCreateOutputDirectory(String dir) throws Exception
@@ -481,5 +580,6 @@
}
+
}
16 years, 7 months
JBoss Portal SVN: r8729 - modules/identity/trunk/identity/src/resources/test.
by portal-commits@lists.jboss.org
Author: bdaw
Date: 2007-10-21 11:23:23 -0400 (Sun, 21 Oct 2007)
New Revision: 8729
Modified:
modules/identity/trunk/identity/src/resources/test/jboss-unit.xml
Log:
- disable non defined OpenLDAP test from the matrix
Modified: modules/identity/trunk/identity/src/resources/test/jboss-unit.xml
===================================================================
--- modules/identity/trunk/identity/src/resources/test/jboss-unit.xml 2007-10-20 22:33:04 UTC (rev 8728)
+++ modules/identity/trunk/identity/src/resources/test/jboss-unit.xml 2007-10-21 15:23:23 UTC (rev 8729)
@@ -68,6 +68,12 @@
<class name="org.jboss.portal.test.identity.ldap.LDAPStaticRoleMembershipModuleTest"/>
<parameter name="directories" value="directories-staticrolemembership.xml"/>
+ <parameter name="directoryName">
+ <value>OpenDS</value>
+ <value>Sun DS</value>
+ <value>RedHatDS</value>
+ <!--<value>OpenLDAP</value>-->
+ </parameter>
</test>
<test>
16 years, 7 months