--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/JUNIT.XSL Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,455 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<xsl:output method="html" indent="yes"/>
+<xsl:decimal-format decimal-separator="." grouping-separator="," />
+
+<xsl:template match="testsuites">
+ <HTML>
+ <HEAD>
+ <style type="text/css">
+ body {
+ font:normal 68% verdana,arial,helvetica;
+ color:#000000;
+ }
+ table tr td, table tr th {
+ font-size: 68%;
+ }
+ table.details tr th{
+ font-weight: bold;
+ text-align:left;
+ background:#a6caf0;
+ }
+ table.details tr td{
+ background:#eeeee0;
+ }
+
+ p {
+ line-height:1.5em;
+ margin-top:0.5em; margin-bottom:1.0em;
+ }
+ h1 {
+ margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
+ }
+ h2 {
+ margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
+ }
+ h3 {
+ margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
+ }
+ h4 {
+ margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+ }
+ h5 {
+ margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+ }
+ h6 {
+ margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+ }
+ .Error {
+ font-weight:bold; color:red;
+ }
+ .Failure {
+ font-weight:bold; color:purple;
+ }
+ .Properties {
+ text-align:right;
+ }
+ </style>
+ <script language="JavaScript">
+ var TestCases = new Array();
+ var cur;
+ <xsl:for-each select="./testsuite">
+ <xsl:apply-templates select="properties"/>
+ </xsl:for-each>
+
+ </script>
+ <script language="JavaScript"><![CDATA[
+ function displayProperties (name) {
+ var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
+ var doc = win.document.open();
+ doc.write("<html><head><title>Properties of " + name + "</title>");
+ doc.write("<style>")
+ doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
+ doc.write("table tr td, table tr th { font-size: 68%; }");
+ doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
+ doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
+ doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
+ doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
+ doc.write("</style>");
+ doc.write("</head><body>");
+ doc.write("<h3>Properties of " + name + "</h3>");
+ doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
+ doc.write("<table class='properties'>");
+ doc.write("<tr><th>Name</th><th>Value</th></tr>");
+ for (prop in TestCases[name]) {
+ doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
+ }
+ doc.write("</table>");
+ doc.write("</body></html>");
+ doc.close();
+ win.focus();
+ }
+ ]]>
+ </script>
+ </HEAD>
+ <body>
+ <a name="top"></a>
+ <xsl:call-template name="pageHeader"/>
+
+ <!-- Summary part -->
+ <xsl:call-template name="summary"/>
+ <hr size="1" width="95%" align="left"/>
+
+ <!-- Package List part -->
+ <xsl:call-template name="packagelist"/>
+ <hr size="1" width="95%" align="left"/>
+
+ <!-- For each package create its part -->
+ <xsl:call-template name="packages"/>
+ <hr size="1" width="95%" align="left"/>
+
+ <!-- For each class create the part -->
+ <xsl:call-template name="classes"/>
+
+ </body>
+ </HTML>
+</xsl:template>
+
+
+
+ <!-- ================================================================== -->
+ <!-- Write a list of all packages with an hyperlink to the anchor of -->
+ <!-- of the package name. -->
+ <!-- ================================================================== -->
+ <xsl:template name="packagelist">
+ <h2>Packages</h2>
+ Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+ <!-- list all packages recursively -->
+ <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+ <xsl:sort select="@package"/>
+ <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
+ <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
+ <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
+ <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
+ <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
+
+ <!-- write a summary for the package -->
+ <tr valign="top">
+ <!-- set a nice color depending if there is an error/failure -->
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="$failureCount > 0">Failure</xsl:when>
+ <xsl:when test="$errorCount > 0">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
+ <td><xsl:value-of select="$testCount"/></td>
+ <td><xsl:value-of select="$errorCount"/></td>
+ <td><xsl:value-of select="$failureCount"/></td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="$timeCount"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
+
+
+ <!-- ================================================================== -->
+ <!-- Write a package level report -->
+ <!-- It creates a table with values from the document: -->
+ <!-- Name | Tests | Errors | Failures | Time -->
+ <!-- ================================================================== -->
+ <xsl:template name="packages">
+ <!-- create an anchor to this package name -->
+ <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+ <xsl:sort select="@package"/>
+ <a name="{@package}"></a>
+ <h3>Package <xsl:value-of select="@package"/></h3>
+
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testsuite.test.header"/>
+
+ <!-- match the testsuites of this package -->
+ <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
+ </table>
+ <a href="#top">Back to top</a>
+ <p/>
+ <p/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="classes">
+ <xsl:for-each select="testsuite">
+ <xsl:sort select="@name"/>
+ <!-- create an anchor to this class name -->
+ <a name="{@name}"></a>
+ <h3>TestCase <xsl:value-of select="@name"/></h3>
+
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <xsl:call-template name="testcase.test.header"/>
+ <!--
+ test can even not be started at all (failure to load the class)
+ so report the error directly
+ -->
+ <xsl:if test="./error">
+ <tr class="Error">
+ <td colspan="4"><xsl:apply-templates select="./error"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:apply-templates select="./testcase" mode="print.test"/>
+ </table>
+ <div class="Properties">
+ <a>
+ <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
+ Properties >>
+ </a>
+ </div>
+ <p/>
+
+ <a href="#top">Back to top</a>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="summary">
+ <h2>Summary</h2>
+ <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+ <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+ <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+ <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+ <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+ <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+ <tr valign="top">
+ <th>Tests</th>
+ <th>Failures</th>
+ <th>Errors</th>
+ <th>Success rate</th>
+ <th>Time</th>
+ </tr>
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="$failureCount > 0">Failure</xsl:when>
+ <xsl:when test="$errorCount > 0">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><xsl:value-of select="$testCount"/></td>
+ <td><xsl:value-of select="$failureCount"/></td>
+ <td><xsl:value-of select="$errorCount"/></td>
+ <td>
+ <xsl:call-template name="display-percent">
+ <xsl:with-param name="value" select="$successRate"/>
+ </xsl:call-template>
+ </td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="$timeCount"/>
+ </xsl:call-template>
+ </td>
+
+ </tr>
+ </table>
+ <table border="0" width="95%">
+ <tr>
+ <td style="text-align: justify;">
+ Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!--
+ Write properties into a JavaScript data structure.
+ This is based on the original idea by Erik Hatcher (erik@hatcher.net)
+ -->
+ <xsl:template match="properties">
+ cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
+ <xsl:for-each select="property">
+ <xsl:sort select="@name"/>
+ cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
+ </xsl:for-each>
+ </xsl:template>
+
+<!-- Page HEADER -->
+<xsl:template name="pageHeader">
+ <h1>Unit Test Results</h1>
+ <table width="100%">
+ <tr>
+ <td align="left"></td>
+ <td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://ant.apache.org'>Ant</a>.</td>
+ </tr>
+ </table>
+ <hr size="1"/>
+</xsl:template>
+
+<xsl:template match="testsuite" mode="header">
+ <tr valign="top">
+ <th width="80%">Name</th>
+ <th>Tests</th>
+ <th>Errors</th>
+ <th>Failures</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+<!-- class header -->
+<xsl:template name="testsuite.test.header">
+ <tr valign="top">
+ <th width="80%">Name</th>
+ <th>Tests</th>
+ <th>Errors</th>
+ <th>Failures</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+<!-- method header -->
+<xsl:template name="testcase.test.header">
+ <tr valign="top">
+ <th>Name</th>
+ <th>Status</th>
+ <th width="80%">Type</th>
+ <th nowrap="nowrap">Time(s)</th>
+ </tr>
+</xsl:template>
+
+
+<!-- class information -->
+<xsl:template match="testsuite" mode="print.test">
+ <tr valign="top">
+ <!-- set a nice color depending if there is an error/failure -->
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@failures[.> 0]">Failure</xsl:when>
+ <xsl:when test="@errors[.> 0]">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <!-- print testsuite information -->
+ <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
+ <td><xsl:value-of select="@tests"/></td>
+ <td><xsl:value-of select="@errors"/></td>
+ <td><xsl:value-of select="@failures"/></td>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="@time"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.test">
+ <tr valign="top">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="failure | error">Error</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><xsl:value-of select="@name"/></td>
+ <xsl:choose>
+ <xsl:when test="failure">
+ <td>Failure</td>
+ <td><xsl:apply-templates select="failure"/></td>
+ </xsl:when>
+ <xsl:when test="error">
+ <td>Error</td>
+ <td><xsl:apply-templates select="error"/></td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>Success</td>
+ <td></td>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td>
+ <xsl:call-template name="display-time">
+ <xsl:with-param name="value" select="@time"/>
+ </xsl:call-template>
+ </td>
+ </tr>
+</xsl:template>
+
+
+<xsl:template match="failure">
+ <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="error">
+ <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<!-- Style for the error and failure in the tescase template -->
+<xsl:template name="display-failures">
+ <xsl:choose>
+ <xsl:when test="not(@message)">N/A</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@message"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- display the stacktrace -->
+ <code>
+ <p/>
+ <xsl:call-template name="br-replace">
+ <xsl:with-param name="word" select="."/>
+ </xsl:call-template>
+ </code>
+ <!-- the later is better but might be problematic for non-21" monitors... -->
+ <!--pre><xsl:value-of select="."/></pre-->
+</xsl:template>
+
+<xsl:template name="JS-escape">
+ <xsl:param name="string"/>
+ <xsl:choose><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
+ <xsl:when test="contains($string,''')">
+ <xsl:value-of select="substring-before($string,''')"/>
+ \'
+ <xsl:call-template name="JS-escape">
+ <xsl:with-param name="string" select="substring-after($string,''')"/>
+ </xsl:call-template>
+ </xsl:when> -->
+ <xsl:when test="contains($string,'\')">
+ <xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape">
+ <xsl:with-param name="string" select="substring-after($string,'\')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</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:choose>
+ <xsl:when test="contains($word,'
')">
+ <xsl:value-of select="substring-before($word,'
')"/>
+ <br/>
+ <xsl:call-template name="br-replace">
+ <xsl:with-param name="word" select="substring-after($word,'
')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$word"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</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>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/META-INF/MANIFEST.MF Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Require-Bundle: org.apache.ant,org.junit,org.eclipse.ui,org.eclipse.co
+ re.runtime,org.eclipse.ui.ide.application,org.eclipse.equinox.app
+Bundle-Vendor: %providerName
+Eclipse-LazyStart: true
+Bundle-ClassPath: automated.jar
+Bundle-Version: 3.2.0
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.test; singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/about.html Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
Binary file carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/automated.jar has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/library.xml Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,169 @@
+<?xml version="1.0"?>
+<project name="Library" default="usage" basedir=".">
+
+ <target name="usage">
+ <echo message="Please refer to the testframework.html in org.eclipse.test for instructions on usage." />
+ </target>
+
+ <target name="init">
+ <!--
+ Parameters:
+ (Mandatory)
+ data-dir - the directory for Eclipse to write its data
+ plugin-name - the name of the plugin to test
+ classname - the name of the test class
+
+ (Optional - overrides defaults set in script)
+ vmargs - a string containing arguments to pass to the VM.
+ extraVMargs - allows separate setting of VM args from separate caller.
+ timeout - overrides default test timeout value (in milliseconds).
+ test-output - overrides default output file produced from test run.
+ plugin-path - path to root of plug-in
+ useEclipseExe - property setting forces test to launch via eclipse executable.
+ junit-report-output - output directory for junit reports produced for specified classname.
+ -->
+
+ <tstamp>
+ <format property="TIMENOW" pattern="HHmmssSSSS"/>
+ </tstamp>
+ <!--property setting useEclipseExe launches tests using the eclipse executable-->
+ <condition property="launchTarget" value="eclipse-test">
+ <isset property="useEclipseExe" />
+ </condition>
+ <!--default launch target for launching tests-->
+ <property name="launchTarget" value="java-test" />
+ <property name="formatter" value="org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter"/>
+
+ <!--default heap sizes when running performance tests-->
+ <condition property="vmargs" value=" -Xms256M -Xmx256M">
+ <equals arg1="${test.target}" arg2="performance" />
+ </condition>
+ <property name="extraVMargs" value=""/>
+ <property name="plugin-path" value="" />
+ <property name="timeout" value="7200000" />
+ <property name="test-output" value="${eclipse-home}/${classname}.xml" />
+ <property name="junit-report-output" value="${eclipse-home}/results" />
+ <mkdir dir="${junit-report-output}"/>
+ </target>
+
+ <target name="core-test" description="Eclipse application used to launch HEADLESS plugin tests." depends="init">
+ <antcall target="${launchTarget}">
+ <param name="application" value="org.eclipse.test.coretestapplication"/>
+ </antcall>
+ </target>
+
+ <target name="ui-test" description="Eclipse application used to launch UI plugin tests." depends="init">
+ <antcall target="${launchTarget}">
+ <param name="application" value="org.eclipse.test.uitestapplication"/>
+ </antcall>
+ </target>
+
+ <target name="java-test">
+ <!--default vm args-->
+ <property name="vmargs" value=" -Xms40m -Xmx256m"/>
+
+ <!--set default jvm to use for testing-->
+ <property name="jvm" value="${java.home}/bin/java" />
+
+ <echo message="Running ${classname}. Result file: ${junit-report-output}/${classname}.xml."/>
+
+ <java fork="true" dir="." timeout="${timeout}" jvm="${jvm}" logError="true"
+ classname="org.eclipse.core.launcher.Main" output="${junit-report-output}/${classname}.txt">
+ <classpath>
+ <fileset dir="${eclipse-home}/plugins">
+ <include name="org.eclipse.equinox.launcher_*.jar"/>
+ </fileset>
+ </classpath>
+ <arg line="-application ${application}"/>
+ <arg line="-data ${data-dir}"/>
+ <arg line="formatter=${formatter},${test-output}"/>
+ <arg line="-testPluginName ${plugin-name}"/>
+ <arg line="-className ${classname}"/>
+ <arg line="-os ${os}"/>
+ <arg line="-ws ${ws}"/>
+ <arg line="-arch ${arch}"/>
+ <arg line="-consolelog"/>
+ <jvmarg line="${vmargs} ${extraVMargs}"/>
+ <sysproperty key="PLUGIN_PATH" value="${plugin-path}"/>
+ </java>
+ <antcall target="collect-results" />
+ </target>
+
+ <target name="eclipse-test" description="Runs the specified classname as a plug-in test.">
+ <property name="vmargs" value="-Xms256m -Xmx512m"/>
+
+ <!--use -consolelog if launching a headless test-->
+ <condition property="consolelog" value="-consolelog">
+ <equals arg1="${application}" arg2="org.eclipse.test.coretestapplication"/>
+ </condition>
+ <property name="consolelog" value="" />
+
+ <!--
+ vm selection priority:
+ 1. user-specified java executable via outer Ant property setting of "jvm".
+ 2. java executable on path.
+ -->
+ <condition property="test-vm" value="-vm ${jvm}">
+ <isset property="jvm" />
+ </condition>
+ <property name="test-vm" value="" />
+
+ <!--ensure executable has execute permission-->
+ <chmod file="${eclipse-home}/eclipse" perm="ugo+rx"/>
+
+
+ <echo message="Running ${classname}. Result file: ${junit-report-output}/${classname}.xml."/>
+
+ <exec executable="${eclipse-home}/eclipse" dir="${eclipse-home}" timeout="${timeout}" logError="true" failonerror="false" output="${junit-report-output}/${classname}.txt">
+ <arg line="-data ${data-dir}"/>
+ <arg line="${test-vm}"/>
+ <arg line="-application ${application}"/>
+ <arg line="formatter=${formatter},${test-output}"/>
+ <arg line="-testPluginName ${plugin-name}"/>
+ <arg line="-className ${classname}"/>
+ <arg line="-nosplash"/>
+ <arg line="--launcher.suppressErrors"/>
+ <arg line="${consolelog}"/>
+ <arg line="-vmargs ${vmargs} ${extraVMargs} -DPLUGIN_PATH=${plugin-path}"/>
+ </exec>
+ <antcall target="collect-results" />
+ </target>
+
+ <target name="collect-results">
+ <dirname property="output-dir" file="${test-output}"/>
+ <basename property="output-file-name" file="${test-output}"/>
+ <junitreport todir="${junit-report-output}" tofile="${classname}.xml">
+ <fileset dir="${output-dir}">
+ <include name="${output-file-name}"/>
+ </fileset>
+ </junitreport>
+
+ <style style="${eclipse-home}/dropins/eclipse/plugins/org.eclipse.test/JUNIT.XSL"
+ basedir="${junit-report-output}"
+ includes="${classname}.result.xml"
+ destdir="${junit-report-output}" />
+
+ <!--save .log content and *.log content from configuration directory-->
+ <concat destfile="${junit-report-output}/${classname}.log">
+ <fileset dir="${eclipse-home}" includes="${data-dir}/.metadata/*.log"/>
+ <fileset dir="${eclipse-home}" includes="configuration/*.log"/>
+ </concat>
+ </target>
+
+ <target name="collect">
+ <!--
+ This target can be used to aggragate test runs from multiple test suites into a single report.
+
+ Parameters to this target:
+ includes - the names of the files to include
+ output-file - the name of the output file to produce
+ -->
+ <junitreport todir="." tofile="${output-file}">
+ <fileset dir=".">
+ <include name="${includes}"/>
+ </fileset>
+ </junitreport>
+ </target>
+
+</project>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/plugin.properties Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2005 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+pluginName = Eclipse Automated Testing
+providerName = Eclipse.org
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/plugin.xml Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension
+ id="coretestapplication"
+ point="org.eclipse.core.runtime.applications">
+ <application>
+ <run
+ class="org.eclipse.test.CoreTestApplication">
+ </run>
+ </application>
+ </extension>
+ <extension
+ id="uitestapplication"
+ point="org.eclipse.core.runtime.applications">
+ <application>
+ <run
+ class="org.eclipse.test.UITestApplication">
+ <parameter
+ name="productInfo"
+ value="product.ini">
+ </parameter>
+ </run>
+ </application>
+ </extension>
+
+</plugin>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test_3.2.0/testframework.html Fri Dec 04 11:50:11 2009 -0600
@@ -0,0 +1,277 @@
+<html>
+<head>
+<title>Eclipse Testing Instructions</title>
+</head>
+
+<body>
+<h1>The Eclipse Test Framework</h1><p>Last Modified: June 13, 2007</p><p><font size="+1"><br>
+ Introduction</font></p><p>The testing framework is comprised of the org.eclipse.test plugin and the org.eclipse.ant.optional.junit
+ fragment. </p><p>These two projects are available from the dev.eclipse.org repository and are
+ included in the eclipse-test-framework-<buildId>.zip from the eclipse.org
+ downloads page.</p><p><font size="+1">Building and Installation</font></p><p>Since the org.eclipse.test plugin is stored in the repository in source-code
+ form, it needs to be compiled before it can be used. The org.eclipse.ant.optional.junit
+ fragment does not contain any source and can be used as is from the repository.</p><ol>
+ <li>Turn of automatic builds. Window->Preferences->Workbench and uncheck "Perform
+ build automatically on resource modification"</li><li>Load org.eclipse.test into your workspace.</li><li>Right-click on the org.eclipse.test project in either the Navigator or Packages
+ view. Select 'Rebuild Project' from the context menu. This will compile the
+ entire org.eclipse.test plugin.</li><li>Finally, copy the org.eclipse.test plugin into your target Eclipse.</li>
+ <li>The org.eclipse.ant.optional.junit fragment only needs to be present in
+ the environment of the Eclipse that is overseeing the test process. If you
+ are running the test script from within the Workbench, this means that the
+ fragments need to be present withinn your development Eclipse. If you are
+ running the tests from the command line, then the fragments will need to be
+ present in your target Eclipse.</li></ol>
+ <p><font size="+1">Setup</font></p>
+ <p>Follow the steps given above to build and install all of the neccessary plugins
+ and fragments. Please note that the current version of the test framework is
+ not compatible with the PDE notion of self-hosting. If you want to run the tests,
+ you will need to setup a full target Eclipse so that the testing framework can
+ detect everything that is needed.</p>
+<p>If you are writing tests for one or more Eclipse plugins, then you should
+create a separate plugin for tests. The test plugin will contain all of the
+tests that will be run on your development plugins, as well as defining how
+those tests get run.</p>
+
+<p>If you are not writing tests for an Eclipse plugin, then you should look into
+ using JUnit on its own to test your work. JUnit is designed for testing Java
+ code, and by default has no knowledge of Eclipse. There are separate mechanisms
+ for using JUnit on Java code in Eclipse. See the documentation provided here:</p>
+<p> <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/jdt-ui-home/plugins/org.eclipse.jdt.junit/index.html">
+JUnit Support in Eclipse</a><br>
+ <a href="http://dev.eclipse.org:8080/help/content/help:/org.eclipse.jdt.doc.user/tasks/tasks-207.htm?resultof=%6a%75%6e%69%74%20&toc=%2Forg.eclipse.jdt.doc.user%2Ftoc.xml">
+ Using JUnit</a></p>
+
+ <p>Once a test plugin has been created, you must then create an Ant script that
+ will run all of the tests. Create a file called 'test.xml' in the root of your plug-in or bundle.
+ This is an Ant file that defines how each test is going to be run. The 'test.xml'
+ file is like a DOS batch file that scripts the entire testing process. Typically,
+ the 'test.xml' file will contain targets for setting up the test run, executing
+ the tests, cleaning up afterwards, and running the entire process.</p>
+
+ <p><font size="+1">Converting existing Test Suites</font></p>
+
+ <p>If you are converting an existing set of tests to use the new framework, the
+actual tests that have been written should not need much change.</p>
+ <p>If you have tests in multiple plugins, move these to a single test plug-in for your component.</p>
+
+ <p>Make sure that the tests are defined in a plug-in. This is probably the most
+ common cause of confusion in the entire test process. Your tests need to be
+ in a plug-in so that Eclipse can find them when it tries to load them.</p>
+
+ <p><font size="+1">Creating new Test Suites</font></p>
+
+ <p>Creating new JUnit tests for an Eclipse plugin should be no more difficult
+ than writing standard JUnit tests. Since the framework allows tests to be run
+ inside of a working Eclipse, any tests that you write have available to them
+ any of the methods supplied by the Eclipse platform, provided that you add the
+ appropriate dependencies to your tests' manifest.</p>
+
+ <p><font size="+1">Performance Issues</font></p>
+ <p>You should keep in mind the number of times that Eclipse needs to be
+started. Launching Eclipse has a substantial cost in terms of runtime. To
+minimize the number of times the platform is started, you should consider
+writing a TestSuite called AllTests for each of your test plugins. AllTests
+should invoke each of the tests that you want to run for a particular plugin.
+The 'test.xml' file can then run the AllTests class, which will run all of your
+tests, but the platform will only ever be started once for each of your test
+plugins.</p><p>Note: Sometimes tests involve shutting down, restarting, and testing the state
+ of metadata that was written to disk. These session tests will require Eclipse
+ to be launched several times in sequence, which will increase the runtime of
+ your tests. This cannot be avoided.</p><p> </p>
+
+ <p><font size="+1">Running the Test Suite from the UI</font></p><p>Right click on the test.xml file and select 'Run Ant...' from the pull-down
+ menu. The Running Ant dialog box pops up. From the list of targets, select the
+ one that runs all of your tests. If you are using the example file provided
+ below, this target is called 'Run', and will be selected by default. Hit the
+ 'Finish' button to start the test process.</p>
+
+ <p><font size="+1">Running the Test Suite from the command line</font></p>
+ <p>When the test suites are invoked automatically, they are run from command
+line. From the ${eclipse-home} directory, the command to use is:</p>
+<code>java -jar plugins\org.eclipse.equinox.launcher_<version>.jar -application org.eclipse.ant.core.antRunner -buildfile ${test-plugin-path}\test.xml
+-Declipse-home=${eclipse-home} -Dos=<operating system> -Dws=<windowing system> -Darch=<architecture></code>
+
+<p>Individual tests can also be invoked directly. From the ${eclipse-home}
+directory, use the command:</p><code>java -jar plugins\org.eclipse.equinox.launcher_<version>.jar
+ -application ${launcher} -os <operating system> -ws <windowing system> -arch <architecture> -dev bin -testpluginname ${plugin-name}
+-classname ${test-classname} formattter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,<path to output file with .xml extension></code>
+<p>where ${launcher} is one of: <i>org.eclipse.test.uitestapplication</i> or <i>org.eclipse.test.coretestapplication</i>
+ depending on whether or not you want to run your tests within an active Workbench.</p><p><font size="+1">Output</font></p><p>By default, output from each test run is logged as XML. For each test that
+ is run, the output is logged into the file called ${classname}.xml. The individual
+ XML files are located in the ${eclipse-home} directory. When the test run is
+ finished, you can call the <b>"collect"</b> target in the library
+ file, which will collect the XML into a single file. See below for an example
+ of how to use this target correctly.</p>
+
+<h3>Other issues</h3><h4>Headless Testing vs. UI testing</h4><p>Many plugin tests will not need the Workbench active in order to run. Indeed,
+ only the minimum number of plugins needed to run the plugin being tested need
+ to be present when testing in a target Eclipse. There are two different Ant
+ targets provided for running Eclipse plugin tests. One target starts the entire
+ Workbench. The other starts Eclipse with the minimum number of plugins needed.
+ It is up to you to decide which target is most appropriate. For examples, look
+ at the <b>"ui-test"</b> and <b>"core-test"</b> targets below.</p>
+
+<h4>Disposing the Display</h4><p>Some low-level tests for the Eclipse platform take actions that are not
+normally possible inside of Eclipse. An example of this behaviour would be
+disposing the display. While this action can be performed while running the UI,
+it will also kill the UI for the copy of Eclipse that is running, and cause
+errors when the Workbench tries to shutdown. If you need to test disposing the
+display, or other similar actions, your tests should be running without a UI. </p>
+
+<h4>Tests that are not plugins</h4><p>It is very easy to forget to define your tests inside of a plugin. If your
+ tests will not load properly, make sure that a plug-in manifest exists in your
+ test project, and also that the plugin is being loaded by the platform. Make
+ sure that all of the dependencies are satisfied for your test plugin.</p>
+
+<p><font size="+1">Interface</font></p><p>The org.eclipse.test plugin defines many useful Ant tasks/targets to aid developers
+ in writing their test.xml scripts. Currently, there is only Ant targets defined,
+ which can be called using Ant's built-in <ant> task. To use these targets,
+ add the following line to the top of your script, and reference the ${library-file}
+ property when calling <ant>:</p><code><property name="library-file"
+value="${eclipse-home}/fragments/org.eclipse.test/library.xml"/> </code>
+
+<p>The targets that are defined are: </p><ul>
+ <li><b>ui-test</b> - This target runs a JUnit test suite inside of an Eclipse
+ Workbench. This target is mainly for testing plugins that use the Eclipse
+ UI and JFace. The output of the test pass is automatically logged in an XML
+ file called ${classname}.xml. It takes four arguments: </li><ul>
+ <li><i>data-dir</i> - The
+ data directory of the Eclipse that gets run</li><li><i>plugin-name</i> -
+ The name of the plugin that the test suite is defined in</li><li><i>classname</i> -
+ The name of the class that the test suite is defined in</li><li><i>vmargs</i> - An
+ optional argument string to pass to the VM running the tests</li></ul><p>For example, the following code will run the test
+org.eclipse.foo.bar.MyTest in the plugin org.eclipse.foo in a new Eclipse
+workbench. It passes the string "-Dbaz=true" to the VM. The Eclipse
+stores its metadata in the directory "data-folder".
+
+<code><pre>
+<ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+ <property name="data-dir" value="data-folder"/>
+ <property name="plugin-name" value="org.eclipse.foo"/>
+ <property name="classname" value="org.eclipse.foo.bar.MyTest"/>
+ <property name="vmargs" value="-Dbaz=true"/>
+</ant>
+</pre></code>
+
+ <li><b>core-test</b> - This target runs a JUnit test suite inside of an IPlatformRunnable.
+ This target is for testing plugins that use the Eclipse platform, but do not
+ require a UI to be running. The output of the test pass is automatically logged
+ in an XML file called ${classname}.xml. It takes four arguments: </li><ul>
+ <li><i>data-dir</i> - The
+ data directory of the Eclipse that gets run</li><li><i>plugin-name</i> -
+ The name of the plugin that the test suite is defined in</li><li><i>classname</i> -
+ The name of the class that the test suite is defined in</li><li><i>vmargs</i> - An
+ optional argument string to pass to the VM running the tests</li></ul><p>For example, the following code will run the test
+org.eclipse.foo.bar.MyTest in the plugin org.eclipse.foo in a headless Eclipse.
+It passes the string "-Dbaz=true" to the VM. The Eclipse stores its
+metadata in the directory "data-folder".
+
+<code><pre>
+<ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
+ <property name="data-dir" value="data-folder"/>
+ <property name="plugin-name" value="org.eclipse.foo"/>
+ <property name="classname" value="org.eclipse.foo.bar.MyTest"/>
+ <property name="vmargs" value="-Dbaz=true"/>
+</ant>
+</pre></code>
+
+ <li><b>collect</b> - This
+ target collects the XML files that are produced over the course of the
+ test script. It takes two arguments: </li><ul>
+ <li><i>includes</i> - A
+ pattern matching all XML files to be included in the test report. This
+ argument is typically "org*.xml"</li><li><i>output-file</i> -
+ The filename where the output of the test gets stored. For the automated
+ build process, this file should be ${pluginname}.xml, and be located in
+ the ECLIPSE_HOME directory.</li></ul><p>For example, the following code collects all of the files
+matching the pattern "org*.xml" in the directory ${eclipse-home},
+into the file named "logfile.xml".
+
+<code><pre>
+<ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+ <property name="includes" value="org*.xml"/>
+ <property name="output-file" value="logfile.xml"/>
+</ant>
+</pre></code>
+
+
+</ul><h2>Examples:</h2><p>Included is the 'test.xml' file from the org.eclipse.jdt.ui.tests.refactoring plugin. This
+file controls all of the automated testing that is done for the org.eclipse.jdt.ui.tests.refactoring
+plugin. It can be run from inside of Eclipse or from the command line. It is
+intended to serve as a template file for testing any other plugin.</p><p>Notice that the structure of the file roughly mirrors that of a JUnit test.
+Targets are defined for setting up the tests, defining what needs to be done,
+cleaning up after the tests, and running everything in the right order.</p>
+<code><pre>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="testsuite" default="run" basedir=".">
+ <!-- The property ${eclipse-home} should be passed into this script -->
+ <!-- Set a meaningful default value for when it is not. -->
+ <property name="eclipse-home" value="${basedir}\..\.."/>
+
+ <!-- sets the properties eclipse-home, and library-file -->
+ <property name="plugin-name" value="org.eclipse.jdt.ui.tests.refactoring"/>
+ <property name="library-file"
+ value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>
+
+ <!-- This target holds all initialization code that needs to be done for -->
+ <!-- all tests that are to be run. Initialization for individual tests -->
+ <!-- should be done within the body of the suite target. -->
+ <target name="init">
+ <tstamp/>
+ <delete>
+ <fileset dir="${eclipse-home}" includes="org*.xml"/>
+ </delete>
+ </target>
+
+ <!-- This target defines the tests that need to be run. -->
+ <target name="suite">
+ <property name="refactoring-folder"
+ value="${eclipse-home}/refactoring_folder"/>
+ <delete dir="${refactoring-folder}" quiet="true"/>
+ <ant target="ui-test" antfile="${library-file}" dir="${eclipse-home}">
+ <property name="data-dir" value="${refactoring-folder}"/>
+ <property name="plugin-name" value="${plugin-name}"/>
+ <property name="classname"
+ value="org.eclipse.jdt.ui.tests.refactoring.all.AllAllRefactoringTests"/>
+ </ant>
+ </target>
+
+ <!-- This target holds code to cleanup the testing environment after -->
+ <!-- after all of the tests have been run. You can use this target to -->
+ <!-- delete temporary files that have been created. -->
+ <target name="cleanup">
+ </target>
+
+ <!-- This target runs the test suite. Any actions that need to happen -->
+ <!-- after all the tests have been run should go here. -->
+ <target name="run" depends="init,suite,cleanup">
+ <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
+ <property name="includes" value="org*.xml"/>
+ <property name="output-file" value="${plugin-name}.xml"/>
+ </ant>
+ </target>
+ </project>
+</pre></code>
+
+<h2>Known Issues:</h2><h4>Problem 1: Issues with Ant 1.3</h4><p>Ant 1.3 has some issues when used with the <style> tag and absolute
+paths. Also, any tests that use the <code>System.exit()</code> call will not
+log their output properly when using Ant 1.3.</p><h4>Problem 2: ECLIPSE_HOME</h4><p>The test suites need to know where the root of the eclipse install is on the
+file system (the ECLIPSE_HOME variable). However, this variable is only defined
+in JDT. The ${eclipse-home} property can be set to a reasonable default inside
+of the test.xml script. Then tests can be run from the standard Ant window,
+without having to specify -Declipse-home=%ECLIPSE_HOME%. If a value for
+${eclipse-home} does get passed in, the default (specified in test.xml) gets
+overridden. The parameter is passed in by the build mechanism. For most cases,
+the value "${basedir}/../.." is a reasonable default.</p><h4>Problem 3: Ugly reference to library.xml</h4><p>org.eclipse.test should provide Ant tasks, not template scripts.</p><h4>Problem 4: No console output</h4><p>When you run a TestSuite using the standard JUnit, it normally outputs a
+series of dots to the console so that you can track the TestSuite's progress.
+It is not possible to add this feature to the automated testing process at this
+point in time.</p><h4>Problem 5: Ant java task on Linux</h4><p>Ant expects there to be a java executable on the system path. Furthermore, the executable
+must be a real file, not a symbolic link. If the test framework is throwing an exception
+<code>java.io.IOException: java: not found</code>, ensure that the java executable is on
+your system path.</p><h4>Problem 6: PDE</h4><p>The testing framework currently has no knowledge of PDE. In order to run the automated
+you must be running a self hosting environment with a full development and target Eclipse.</p>
+
+</body>
+
+</html>