ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Corley \(AT/LMI\)" <david.cor...@ericsson.com>
Subject RE: "java.lang.ClassCastException: org.apache.tools.ant.types.Path" error after using <ant> task within ant
Date Fri, 22 Sep 2006 12:28:45 GMT
Sure guys sorry. I've just tried running the code with Ant 1.7 beta2 and
the error remains.

The core build.xml contains the following (relevant) code:
===================================
<target name="pre-junit" description="Runs the optional junt-setup ant
script" if="junit.setup.required">
	<ant inheritAll="true" inheritRefs="true"
antfile="${ebldtool.dir}/PROJ/${proj.name}/junit-setup.xml"
target="pre"/>
</target> 

....
....
....


<target name="clover-junit" depends="clover-compile,pre-junit"
if="use.clover">
		<echo message="Copying all non-(.java/.class) files from
source to bin directory should they be needed by JUnit..."/>
				
		<macrodef name="subproj.unittest">
			<attribute name="subproj.junit.name" />
			<attribute name="subproj.junit.classpath" />
			<attribute name="subproj.junit.jvmargs" />
			<attribute name="subproj.junit.include" />
			<attribute name="subproj.junit.exclude" />
			
			<sequential>
				<echo message="Starting JUnit Testing on
@{subproj.junit.name}..." />			
				<path id="clover.junit.classpath">
					<path
refid="@{subproj.junit.classpath}" />
					<path
location="${clover.dir}/lib/clover.jar"/>
				</path>
				
				<junit fork="on"
forkmode="${proj.junit.forkmode}" haltonfailure="false"
printsummary="withOutAndErr" showoutput="false">
					<classpath
refid="clover.junit.classpath" />
					<jvmarg
line="@{subproj.junit.jvmargs}" />
					<formatter type="xml"
usefile="true" />
			
					<batchtest fork="yes"
todir="${output.dir}/@{subproj.junit.name}/reports/junit">
						<fileset
dir="${output.dir}/@{subproj.junit.name}/bin/test">
							<!--Classes that
will be included to run the tests-->
							<include
name="@{subproj.junit.include}" />
							<!--Classes that
will be exlcuded from the tests-->
							<exclude
name="@{subproj.junit.exclude}" />
						</fileset>
					</batchtest>
				</junit>
			</sequential>
		</macrodef>
	
		<copy file="${dummy.dir}/TESTS-TestSuites.xml"
tofile="${output.dir}/DUMMY/reports/junit/TESTS-TestSuites.xml" />
		<echo message="Running JUnit Tests..."/>
		<subproj.unittest
subproj.junit.name="${proj.compile.1st.name}" 
	
subproj.junit.classpath="proj.junit.1st.classpath" 
	
subproj.junit.jvmargs="${proj.junit.1st.jvmargs}" 
	
subproj.junit.include="${proj.junit.1st.include}" 
	
subproj.junit.exclude="${proj.junit.1st.exclude}" />
		<subproj.unittest
subproj.junit.name="${proj.compile.2nd.name}" 
	
subproj.junit.classpath="proj.junit.2nd.classpath" 
	
subproj.junit.jvmargs="${proj.junit.2nd.jvmargs}" 
	
subproj.junit.include="${proj.junit.2nd.include}" 
	
subproj.junit.exclude="${proj.junit.2nd.exclude}" />
		<subproj.unittest
subproj.junit.name="${proj.compile.3rd.name}" 
	
subproj.junit.classpath="proj.junit.3rd.classpath" 
	
subproj.junit.jvmargs="${proj.junit.3rd.jvmargs}" 
	
subproj.junit.include="${proj.junit.3rd.include}" 
	
subproj.junit.exclude="${proj.junit.3rd.exclude}" />
	

		<macrodef name="subproj.test.report">
			<attribute name="subproj.junit.report.name" />
			<sequential>
				<echo message="Generating JUnit reports
for @{subproj.junit.report.name}..." />
				<junitreport
todir="${output.dir}/@{subproj.junit.report.name}/reports/junit">
					<fileset
dir="${output.dir}/@{subproj.junit.report.name}/reports/junit">
						<include name="*.xml" />
					</fileset>
					<report format="frames"
todir="${output.dir}/@{subproj.junit.report.name}/reports/junit/html" />
				</junitreport>
			</sequential>
		</macrodef>
		
		<echo message="Generating JUnit reports for each
sub-project..."/>
		<subproj.test.report
subproj.junit.report.name="${proj.compile.1st.name}" />
		<subproj.test.report
subproj.junit.report.name="${proj.compile.2nd.name}" />
		<subproj.test.report
subproj.junit.report.name="${proj.compile.3rd.name}" />
		
		<!--The following section consolidates all of the
subcomponent JUnit test results together to generate an "overall"
report.-->
		<echo message="Combining individual sub-project JUnit
reports into an overall report..."/>
		<junitreport todir="${output.dir}/OverallJunit">
			<fileset
dir="${output.dir}/${proj.compile.1st.name}/reports/junit">
				<include name="*.xml" />
			</fileset>
			<fileset
dir="${output.dir}/${proj.compile.2nd.name}/reports/junit">
				<include name="*.xml" />
			</fileset>
			<fileset
dir="${output.dir}/${proj.compile.3rd.name}/reports/junit">
				<include name="*.xml" />
			</fileset>
			
			<report format="frames"
todir="${output.dir}/OverallJunit" />
		</junitreport>
		<antcall target="post-junit"/>
	</target>

....
....
....

<target name="post-junit" description="Runs the optional junt-setup ant
script" if="junit.setup.required">
	<ant inheritAll="true" inheritRefs="true"
antfile="${ebldtool.dir}/PROJ/${proj.name}/junit-setup.xml"
target="post"/>
</target>
========================================================================
==========================================
The junit-setup.xml contains the following:
========================================================================
==========================================
<?xml version="1.0" encoding="UTF-8"?>
	<project name="junit-setup">
	<!--This entire file can be almost completely controlled by each
user as long as the "pre" and "post" targets are present.--> 
	<!--Every property and classpath that ebldtool already uses can
also be used in this file-->
	<!--Its main purpose is to provide users with a means of kicking
off live servers/mc's with which to run their unit tests against.-->
	<!--While the unit tests themselves are run by ebldtool,
everything that happens right up to,and directly after them, can be
specified here.-->
	<!--This file is only examined and its targets run if the user
has the junit.setup.required property set to "true" in their
build.properties file.-->
		
		<target name="pre" depends="" description="this is the
target that ebldtool looks to for instructions to carry out before
running unit tests">
		<echo message="pre-junit"
		</target>
		
		<target name="post" depends="" description="this is the
target that ebldtool looks to for instructions to carry out before
running unit tests">
		</target>
		
	</project>
========================================================================
==========================================

I know that the properties being passed to junit are ok, because when I
bypass the call to the external junit-setup file, junit proceeds as
normal. So it's literally running the <ant> task in the <pre-junit> and
<post-junit> targets in the core build.xml snippets above that causes
the problem.

/Dave



-----Original Message-----
From: Dominique Devienne [mailto:ddevienne@gmail.com] 
Sent: 22 September 2006 14:15
To: Ant Users List
Subject: Re: "java.lang.ClassCastException:
org.apache.tools.ant.types.Path" error after using <ant> task within ant

On 9/22/06, David Corley (AT/LMI) <david.corley@ericsson.com> wrote:
> I have a situation where I have a common core build.xml for many 
> users, with an optional junit-setup.xml build file called by ant if 
> the user sets a particular property, junit.setup.required.
>
> The junit-setup file is a standard file of the ant build.xml format, 
> and contains two empty, predefined targets called "post", and "pre"

Please share the relevant excerpts of yours builds. Thanks, --DD

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For additional
commands, e-mail: user-help@ant.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message