Author: bodewig
Date: Fri Jul 28 12:16:29 2006
New Revision: 426650
URL: http://svn.apache.org/viewvc?rev=426650&view=rev
Log:
<propertyset> support for <antunit>
Added:
ant/antlibs/antunit/trunk/src/etc/testcases/antunit/echo.xml (with props)
Modified:
ant/antlibs/antunit/trunk/docs/antunit.html
ant/antlibs/antunit/trunk/src/etc/testcases/antunit.xml
ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java
Modified: ant/antlibs/antunit/trunk/docs/antunit.html
URL:
http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/docs/antunit.html?rev=426650&r1=426649&r2=426650&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/docs/antunit.html (original)
+++ ant/antlibs/antunit/trunk/docs/antunit.html Fri Jul 28 12:16:29 2006
@@ -131,6 +131,12 @@
<plainlistener/> this one creates reports similar to the
"plain" <formatter> of the <junit> task.</p>
+ <h4>propertyset</h4>
+
+ <p><a
+
href="http://ant.apache.org/manual/CoreTypes/propertyset.html"><propertyset></a>s
+ can be used to pass properties to the build files under test.</p>
+
<h3>Examples</h3>
<p>This build file snippet (from src/etc/testcases/antunit/base.xml)</p>
Modified: ant/antlibs/antunit/trunk/src/etc/testcases/antunit.xml
URL:
http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/etc/testcases/antunit.xml?rev=426650&r1=426649&r2=426650&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/src/etc/testcases/antunit.xml (original)
+++ ant/antlibs/antunit/trunk/src/etc/testcases/antunit.xml Fri Jul 28 12:16:29
2006
@@ -50,6 +50,23 @@
</au:antunit>
</target>
+ <target name="testNoPropertySet">
+ <au:antunit>
+ <file file="antunit/echo.xml"/>
+ <au:plainlistener/>
+ </au:antunit>
+ </target>
+
+ <target name="testPropertySet">
+ <au:antunit>
+ <file file="antunit/echo.xml"/>
+ <au:plainlistener/>
+ <propertyset>
+ <propertyref builtin="system"/>
+ </propertyset>
+ </au:antunit>
+ </target>
+
<target name="antunit-copy">
<au:antunit>
<fileset dir="antunit" includes="copy.xml"/>
Added: ant/antlibs/antunit/trunk/src/etc/testcases/antunit/echo.xml
URL:
http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/etc/testcases/antunit/echo.xml?rev=426650&view=auto
==============================================================================
--- ant/antlibs/antunit/trunk/src/etc/testcases/antunit/echo.xml (added)
+++ ant/antlibs/antunit/trunk/src/etc/testcases/antunit/echo.xml Fri Jul 28
12:16:29 2006
@@ -0,0 +1,33 @@
+<?xml version="1.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.
+-->
+
+<project name="echo-test" basedir="." default="all"
+ xmlns:au="antlib:org.apache.ant.antunit">
+
+ <target name="all">
+ <fail>Not a self-contained build file</fail>
+ </target>
+
+ <target name="testEcho">
+ <echo>${java.class.path}</echo>
+ <au:assertLogContains text="ant.jar"/>
+ </target>
+</project>
\ No newline at end of file
Propchange: ant/antlibs/antunit/trunk/src/etc/testcases/antunit/echo.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified: ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java
URL:
http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java?rev=426650&r1=426649&r2=426650&view=diff
==============================================================================
--- ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java
(original)
+++ ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/AntUnit.java Fri
Jul 28 12:16:29 2006
@@ -30,14 +30,16 @@
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.MagicNames;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.Target;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.LogOutputStream;
+import org.apache.tools.ant.types.PropertySet;
import org.apache.tools.ant.types.ResourceCollection;
-import org.apache.tools.ant.types.resources.Union;
import org.apache.tools.ant.types.resources.FileResource;
+import org.apache.tools.ant.types.resources.Union;
/**
* Run all targets in a given build file who's name starts with "test".
@@ -79,6 +81,11 @@
private ArrayList listeners = new ArrayList();
/**
+ * propertysets.
+ */
+ private ArrayList propertySets = new ArrayList();
+
+ /**
* has a failure occured?
*/
private int failures=0;
@@ -123,6 +130,13 @@
}
/**
+ * Adds a PropertySet.
+ */
+ public void addPropertySet(PropertySet ps) {
+ propertySets.add(ps);
+ }
+
+ /**
* stop testing if an error or failure occurs?
*/
public void setFailOnError(boolean failOnError) {
@@ -169,13 +183,7 @@
log("Running tests in build file " + f, Project.MSG_DEBUG);
// setup project instance
- newProject = new Project();
- newProject.setDefaultInputStream(getProject().getDefaultInputStream());
- newProject.setJavaVersionProperty();
- newProject.setInputHandler(getProject().getInputHandler());
- getProject().initSubProject(newProject);
- newProject.setUserProperty("ant.file" , f.getAbsolutePath());
- attachListeners(f, newProject);
+ newProject = createProjectForFile(f);
// read build file
ProjectHelper.configureProject(newProject, f);
@@ -292,6 +300,38 @@
} else {
super.handleErrorFlush(errorOutputToFlush);
}
+ }
+
+ /**
+ * Creates a new project instance and configures it.
+ */
+ private Project createProjectForFile(File f) {
+ Project p = new Project();
+ p.setDefaultInputStream(getProject().getDefaultInputStream());
+ p.setJavaVersionProperty();
+ p.setInputHandler(getProject().getInputHandler());
+ getProject().initSubProject(p);
+ for (Iterator outer = propertySets.iterator(); outer.hasNext(); ) {
+ PropertySet set = (PropertySet) outer.next();
+ Map props = set.getProperties();
+ for (Iterator keys = props.keySet().iterator();
+ keys.hasNext(); ) {
+ String key = keys.next().toString();
+ if (MagicNames.PROJECT_BASEDIR.equals(key)
+ || MagicNames.ANT_FILE.equals(key)) {
+ continue;
+ }
+
+ Object value = props.get(key);
+ if (value != null && value instanceof String
+ && p.getProperty(key) == null) {
+ p.setNewProperty(key, (String) value);
+ }
+ }
+ }
+ p.setUserProperty(MagicNames.ANT_FILE, f.getAbsolutePath());
+ attachListeners(f, p);
+ return p;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]