You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by li...@apache.org on 2012/09/13 17:21:28 UTC

svn commit: r1384366 - in /incubator/ooo/trunk/test/testcommon/source/org/openoffice/test: Runner.java common/CSVReporter.java common/FileUtil.java common/SystemUtil.java common/XMLReporter.java

Author: liuzhe
Date: Thu Sep 13 15:21:27 2012
New Revision: 1384366

URL: http://svn.apache.org/viewvc?rev=1384366&view=rev
Log:
Add test runner

Added:
    incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/Runner.java
    incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/CSVReporter.java
    incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/XMLReporter.java
Modified:
    incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java
    incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/SystemUtil.java

Added: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/Runner.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/Runner.java?rev=1384366&view=auto
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/Runner.java (added)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/Runner.java Thu Sep 13 15:21:27 2012
@@ -0,0 +1,55 @@
+package org.openoffice.test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+
+import org.junit.runner.Description;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
+import org.openoffice.test.common.CSVReporter;
+import org.openoffice.test.common.Logger;
+import org.openoffice.test.common.XMLReporter;
+
+public class Runner {
+	private static Logger log = Logger.getLogger(Runner.class);
+
+	public static void main(String... args) {
+		JUnitCore core = new JUnitCore();
+		core.addListener(new XMLReporter());
+		core.addListener(new CSVReporter());
+		String prop = System.getProperty("listener");
+		if (prop != null) {
+			String[] listeners = prop.split(",");
+			for (String l : listeners) {
+				try {
+					l = l.trim();
+					Class<?> klass = Class.forName(l);
+					Object obj = klass.newInstance();
+					core.addListener((RunListener) obj);
+				} catch (Exception e) {
+					log.log(Level.SEVERE, "Listener is not added!", e);
+				}
+			}
+		}
+
+		List<Class<?>> classes = new ArrayList<Class<?>>();
+		List<Failure> missingClasses = new ArrayList<Failure>();
+		for (String each : args)
+			try {
+				classes.add(Class.forName(each));
+			} catch (ClassNotFoundException e) {
+				Description description = Description.createSuiteDescription(each);
+				Failure failure = new Failure(description, e);
+				missingClasses.add(failure);
+			}
+
+		Result result = core.run(classes.toArray(new Class[0]));
+		for (Failure each : missingClasses)
+			result.getFailures().add(each);
+
+		System.exit(result.wasSuccessful() ? 0 : 1);
+	}
+}

Added: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/CSVReporter.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/CSVReporter.java?rev=1384366&view=auto
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/CSVReporter.java (added)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/CSVReporter.java Thu Sep 13 15:21:27 2012
@@ -0,0 +1,45 @@
+package org.openoffice.test.common;
+
+import org.junit.runner.Description;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
+
+public class CSVReporter extends RunListener {
+
+	@Override
+	public void testAssumptionFailure(Failure failure) {
+		super.testAssumptionFailure(failure);
+	}
+
+	@Override
+	public void testFailure(Failure failure) throws Exception {
+		super.testFailure(failure);
+	}
+
+	@Override
+	public void testFinished(Description description) throws Exception {
+		super.testFinished(description);
+	}
+
+	@Override
+	public void testIgnored(Description description) throws Exception {
+		super.testIgnored(description);
+	}
+
+	@Override
+	public void testRunFinished(Result result) throws Exception {
+		super.testRunFinished(result);
+	}
+
+	@Override
+	public void testRunStarted(Description description) throws Exception {
+		super.testRunStarted(description);
+	}
+
+	@Override
+	public void testStarted(Description description) throws Exception {
+		super.testStarted(description);
+	}
+
+}

Modified: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java?rev=1384366&r1=1384365&r2=1384366&view=diff
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java (original)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java Thu Sep 13 15:21:27 2012
@@ -24,7 +24,6 @@
 package org.openoffice.test.common;
 
 import java.io.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -46,6 +45,14 @@ import java.util.zip.ZipInputStream;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+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.xpath.XPath;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
@@ -85,6 +92,34 @@ public class FileUtil {
 	}
 	
 	/**
+	 * Create a new xml document
+	 * @return
+	 */
+	public static Document newXML() {
+		try {
+			DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
+			dbfac.setNamespaceAware(true);
+			DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
+			return docBuilder.newDocument();
+		} catch (Exception e) {
+			return null;
+		}
+	}
+	
+	public static boolean storeXML(Document doc, File file) {
+	    try {
+	        Source source = new DOMSource(doc);
+	        file.getParentFile().mkdirs();
+	        Result result = new StreamResult(file);
+	        Transformer xformer = TransformerFactory.newInstance().newTransformer();
+	        xformer.transform(source, result);
+	        return true;
+	    } catch (Exception e) {
+	    	return false;
+	    } 
+	}
+	
+	/**
 	 * Get a string by XPATH from a xml file
 	 * @param xml
 	 * @param xpathStr

Modified: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/SystemUtil.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/SystemUtil.java?rev=1384366&r1=1384365&r2=1384366&view=diff
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/SystemUtil.java (original)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/SystemUtil.java Thu Sep 13 15:21:27 2012
@@ -48,9 +48,26 @@ public class SystemUtil {
 
 	private static Clipboard sysClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
 
-	private static final String OSNAME = System.getProperty("os.name");
+	private static final File SCRIPT_TEMP_DIR = Testspace.getFile("bin");
 
-	public static final File SCRIPT_TEMP_DIR = Testspace.getFile("bin");
+	private static String platform = System.getProperty("os.name");
+	
+	private static String osName = System.getProperty("os.name");
+	
+	private static String osVersion  = System.getProperty("os.version");
+	
+	private static String osArch = System.getProperty("os.arch");
+	
+	static {
+		if (isLinux()) {
+			StringBuffer output = new StringBuffer();
+			if (exec(new String[]{"lsb_release", "-is"}, output) == 0)
+				osName = output.toString().trim();
+			output.setLength(0);
+			if (exec(new String[]{"lsb_release", "-rs"}, output) == 0)
+				osVersion = output.toString().trim();	
+		}
+	}
 
 	/**
 	 * Play beep sound! The method doesn't work, if the code is executed on
@@ -63,17 +80,29 @@ public class SystemUtil {
 	}
 
 	public static boolean isWindows() {
-		return OSNAME.startsWith("Windows");
+		return platform.startsWith("Windows");
 	}
 
 	public static boolean isLinux() {
-		return OSNAME.startsWith("Linux");
+		return platform.startsWith("Linux");
 	}
 
 	public static boolean isMac() {
-		return OSNAME.startsWith("Mac");
+		return platform.startsWith("Mac");
 	}
 
+	public static String getOSName() {
+		return osName;
+	}
+	
+	public static String getOSVersion() {
+		return osVersion;
+	}
+	
+	public static String getOSArch() {
+		return osArch;
+	}
+	
 	/**
 	 * Set the contents of the clipboard to the provided text
 	 */
@@ -227,6 +256,10 @@ public class SystemUtil {
 		}
 	}
 
+	public static int exec(String[] cmd, StringBuffer output) {
+		return exec(cmd, null, null, output, output);
+	}
+	
 	/**
 	 * Make the current thread sleep some seconds.
 	 * 

Added: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/XMLReporter.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/XMLReporter.java?rev=1384366&view=auto
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/XMLReporter.java (added)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/XMLReporter.java Thu Sep 13 15:21:27 2012
@@ -0,0 +1,67 @@
+package org.openoffice.test.common;
+
+import java.io.File;
+
+import org.junit.Ignore;
+import org.junit.runner.Description;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class XMLReporter extends RunListener {
+
+	private File file = null;
+	
+	private Document doc = null;
+	
+	private Element root = null;
+	 
+	@Override
+	public void testAssumptionFailure(Failure failure) {
+		System.out.println("testAssumptionFailure");
+	}
+
+	@Override
+	public void testFailure(Failure failure) throws Exception {
+		System.out.println("testFailure");
+	}
+
+	@Override
+	public void testFinished(Description description) throws Exception {
+		System.out.println("testFinished");
+	}
+
+	@Override
+	public void testIgnored(Description description) throws Exception {
+		Ignore a = description.getAnnotation(Ignore.class);
+		System.out.println("testIgnored" + a.value());
+	}
+
+	@Override
+	public void testRunFinished(Result result) throws Exception {
+		System.out.println("testRunFinished");
+		FileUtil.storeXML(doc, file);
+	}
+
+	@Override
+	public void testRunStarted(Description description) throws Exception {
+		System.out.println("testRunStarted");
+		file = Testspace.getFile("output/result/" + description.getClassName() + ".xml");
+		doc = FileUtil.newXML();
+		root = doc.createElement("testsuites");
+		doc.appendChild(root);
+		
+		System.out.println(SystemUtil.getOSName());
+		System.out.println(SystemUtil.getOSVersion());
+		System.out.println(SystemUtil.getOSArch());
+	}
+
+	@Override
+	public void testStarted(Description description) throws Exception {
+		System.out.println("testStarted");
+	}
+
+	
+}