diff options
Diffstat (limited to 'Resources/Libraries/luaunit/junitxml/XMLJUnitResultFormatter.java.txt')
-rw-r--r-- | Resources/Libraries/luaunit/junitxml/XMLJUnitResultFormatter.java.txt | 301 |
1 files changed, 0 insertions, 301 deletions
diff --git a/Resources/Libraries/luaunit/junitxml/XMLJUnitResultFormatter.java.txt b/Resources/Libraries/luaunit/junitxml/XMLJUnitResultFormatter.java.txt deleted file mode 100644 index 5e3d1d7..0000000 --- a/Resources/Libraries/luaunit/junitxml/XMLJUnitResultFormatter.java.txt +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - * - */ - -package org.apache.tools.ant.taskdefs.optional.junit; - -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Properties; -import java.util.Date; -import java.net.InetAddress; -import java.net.UnknownHostException; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import junit.framework.AssertionFailedError; -import junit.framework.Test; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.util.DOMElementWriter; -import org.apache.tools.ant.util.DateUtils; -import org.apache.tools.ant.util.FileUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Text; - - -/** - * Prints XML output of the test to a specified Writer. - * - * @see FormatterElement - */ - -public class XMLJUnitResultFormatter implements JUnitResultFormatter, XMLConstants { - - private static final double ONE_SECOND = 1000.0; - - /** constant for unnnamed testsuites/cases */ - private static final String UNKNOWN = "unknown"; - - private static DocumentBuilder getDocumentBuilder() { - try { - return DocumentBuilderFactory.newInstance().newDocumentBuilder(); - } catch (Exception exc) { - throw new ExceptionInInitializerError(exc); - } - } - - /** - * The XML document. - */ - private Document doc; - /** - * The wrapper for the whole testsuite. - */ - private Element rootElement; - /** - * Element for the current test. - */ - private Hashtable testElements = new Hashtable(); - /** - * tests that failed. - */ - private Hashtable failedTests = new Hashtable(); - /** - * Timing helper. - */ - private Hashtable testStarts = new Hashtable(); - /** - * Where to write the log to. - */ - private OutputStream out; - - /** No arg constructor. */ - public XMLJUnitResultFormatter() { - } - - /** {@inheritDoc}. */ - public void setOutput(OutputStream out) { - this.out = out; - } - - /** {@inheritDoc}. */ - public void setSystemOutput(String out) { - formatOutput(SYSTEM_OUT, out); - } - - /** {@inheritDoc}. */ - public void setSystemError(String out) { - formatOutput(SYSTEM_ERR, out); - } - - /** - * The whole testsuite started. - * @param suite the testsuite. - */ - public void startTestSuite(JUnitTest suite) { - doc = getDocumentBuilder().newDocument(); - rootElement = doc.createElement(TESTSUITE); - String n = suite.getName(); - rootElement.setAttribute(ATTR_NAME, n == null ? UNKNOWN : n); - - //add the timestamp - final String timestamp = DateUtils.format(new Date(), - DateUtils.ISO8601_DATETIME_PATTERN); - rootElement.setAttribute(TIMESTAMP, timestamp); - //and the hostname. - rootElement.setAttribute(HOSTNAME, getHostname()); - - // Output properties - Element propsElement = doc.createElement(PROPERTIES); - rootElement.appendChild(propsElement); - Properties props = suite.getProperties(); - if (props != null) { - Enumeration e = props.propertyNames(); - while (e.hasMoreElements()) { - String name = (String) e.nextElement(); - Element propElement = doc.createElement(PROPERTY); - propElement.setAttribute(ATTR_NAME, name); - propElement.setAttribute(ATTR_VALUE, props.getProperty(name)); - propsElement.appendChild(propElement); - } - } - } - - /** - * get the local hostname - * @return the name of the local host, or "localhost" if we cannot work it out - */ - private String getHostname() { - try { - return InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - return "localhost"; - } - } - - /** - * The whole testsuite ended. - * @param suite the testsuite. - * @throws BuildException on error. - */ - public void endTestSuite(JUnitTest suite) throws BuildException { - rootElement.setAttribute(ATTR_TESTS, "" + suite.runCount()); - rootElement.setAttribute(ATTR_FAILURES, "" + suite.failureCount()); - rootElement.setAttribute(ATTR_ERRORS, "" + suite.errorCount()); - rootElement.setAttribute( - ATTR_TIME, "" + (suite.getRunTime() / ONE_SECOND)); - if (out != null) { - Writer wri = null; - try { - wri = new BufferedWriter(new OutputStreamWriter(out, "UTF8")); - wri.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); - (new DOMElementWriter()).write(rootElement, wri, 0, " "); - } catch (IOException exc) { - throw new BuildException("Unable to write log file", exc); - } finally { - if (wri != null) { - try { - wri.flush(); - } catch (IOException ex) { - // ignore - } - } - if (out != System.out && out != System.err) { - FileUtils.close(wri); - } - } - } - } - - /** - * Interface TestListener. - * - * <p>A new Test is started. - * @param t the test. - */ - public void startTest(Test t) { - testStarts.put(t, new Long(System.currentTimeMillis())); - } - - /** - * Interface TestListener. - * - * <p>A Test is finished. - * @param test the test. - */ - public void endTest(Test test) { - // Fix for bug #5637 - if a junit.extensions.TestSetup is - // used and throws an exception during setUp then startTest - // would never have been called - if (!testStarts.containsKey(test)) { - startTest(test); - } - - Element currentTest = null; - if (!failedTests.containsKey(test)) { - currentTest = doc.createElement(TESTCASE); - String n = JUnitVersionHelper.getTestCaseName(test); - currentTest.setAttribute(ATTR_NAME, - n == null ? UNKNOWN : n); - // a TestSuite can contain Tests from multiple classes, - // even tests with the same name - disambiguate them. - currentTest.setAttribute(ATTR_CLASSNAME, - JUnitVersionHelper.getTestCaseClassName(test)); - rootElement.appendChild(currentTest); - testElements.put(test, currentTest); - } else { - currentTest = (Element) testElements.get(test); - } - - Long l = (Long) testStarts.get(test); - currentTest.setAttribute(ATTR_TIME, - "" + ((System.currentTimeMillis() - - l.longValue()) / ONE_SECOND)); - } - - /** - * Interface TestListener for JUnit <= 3.4. - * - * <p>A Test failed. - * @param test the test. - * @param t the exception. - */ - public void addFailure(Test test, Throwable t) { - formatError(FAILURE, test, t); - } - - /** - * Interface TestListener for JUnit > 3.4. - * - * <p>A Test failed. - * @param test the test. - * @param t the assertion. - */ - public void addFailure(Test test, AssertionFailedError t) { - addFailure(test, (Throwable) t); - } - - /** - * Interface TestListener. - * - * <p>An error occurred while running the test. - * @param test the test. - * @param t the error. - */ - public void addError(Test test, Throwable t) { - formatError(ERROR, test, t); - } - - private void formatError(String type, Test test, Throwable t) { - if (test != null) { - endTest(test); - failedTests.put(test, test); - } - - Element nested = doc.createElement(type); - Element currentTest = null; - if (test != null) { - currentTest = (Element) testElements.get(test); - } else { - currentTest = rootElement; - } - - currentTest.appendChild(nested); - - String message = t.getMessage(); - if (message != null && message.length() > 0) { - nested.setAttribute(ATTR_MESSAGE, t.getMessage()); - } - nested.setAttribute(ATTR_TYPE, t.getClass().getName()); - - String strace = JUnitTestRunner.getFilteredTrace(t); - Text trace = doc.createTextNode(strace); - nested.appendChild(trace); - } - - private void formatOutput(String type, String output) { - Element nested = doc.createElement(type); - rootElement.appendChild(nested); - nested.appendChild(doc.createCDATASection(output)); - } - -} // XMLJUnitResultFormatter |