Jose,
You are right, the check is just for the main build file.
Peter
Jose Alberto Fernandez wrote:
Peter,
Maybe I do not understand the fix completely,
but shouldn't the check be that a target cannot appear
ON THE SAME FILE (imported or main) more than once?
I.e., I should not be able to duplicate a target on a file
and get away with it by importing it instead of executing it
directly.
Does your fix covers this case?
Jose Alberto
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: 27 February 2004 12:14
To: [EMAIL PROTECTED]
Subject: RE: cvs commit: ant WHATSNEW build.xml
Fast resolved, Peter :)
Jan
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Friday, February 27, 2004 12:45 PM
To: [EMAIL PROTECTED]
Subject: cvs commit: ant WHATSNEW build.xml
peterreilly 2004/02/27 03:45:15
Modified: src/main/org/apache/tools/ant/helper
ProjectHelper2.java
src/testcases/org/apache/tools/ant ProjectTest.java
. WHATSNEW build.xml
Log:
Fix for duplicate targets in the build file.
In ant 1.5 these were not allowed.
In ant 1.6, with import file's targets being allowed to
be overridden, duplicate targets where incorrectly allowed
in normal build files.
The fix just checks if the duplicate target is defined
in an imported file or in a "main" file.
Reported by: Dominique Devienne
See: http://marc.theaimsgroup.com/?t=107705039100004&r=1&w=2
Revision Changes Path
1.42 +8 -0
ant/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
Index: ProjectHelper2.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/helper/ProjectHelp
er2.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- ProjectHelper2.java 9 Feb 2004 21:05:18 -0000 1.41
+++ ProjectHelper2.java 27 Feb 2004 11:45:14 -0000 1.42
@@ -804,6 +804,14 @@
// If the name has already been defined (
import for example )
if (currentTargets.containsKey(name)) {
+ if (!context.isIgnoringProjectTag()) {
+ // not in an import'ed file
+ throw new BuildException(
+ "Duplicate target '" + name + "'",
+ new
Location(context.getLocator().getSystemId(),
+
context.getLocator().getLineNumber(),
+
context.getLocator().getColumnNumber()));
+ }
// Alter the name.
if (context.getCurrentProjectName() != null) {
String newName =
context.getCurrentProjectName()
1.24 +10 -3
ant/src/testcases/org/apache/tools/ant/ProjectTest.java
Index: ProjectTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/ProjectTest.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- ProjectTest.java 20 Feb 2004 12:24:04 -0000 1.23
+++ ProjectTest.java 27 Feb 2004 11:45:14 -0000 1.24
@@ -206,8 +206,15 @@
public void testDuplicateTargets() {
// fail, because buildfile contains two targets
with the same name
- BFT bft = new BFT("", "core/duplicate-target.xml");
- bft.expectBuildException("twice", "Duplicate target");
+ try {
+ BFT bft = new BFT("", "core/duplicate-target.xml");
+ } catch (BuildException ex) {
+ assertEquals("specific message",
+ "Duplicate target 'twice'",
+ ex.getMessage());
+ return;
+ }
+ fail("Should throw BuildException about
duplicate target");
}
public void testDuplicateTargetsImport() {
@@ -265,4 +272,4 @@
class DummyTaskPackage extends Task {
public DummyTaskPackage() {}
public void execute() {}
-}
\ No newline at end of file
+}
1.556 +5 -1 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.555
retrieving revision 1.556
diff -u -r1.555 -r1.556
--- WHATSNEW 25 Feb 2004 13:02:52 -0000 1.555
+++ WHATSNEW 27 Feb 2004 11:45:15 -0000 1.556
@@ -53,7 +53,11 @@
* MacroDef did not allow attributes named 'description'.
Bugzilla Report 27175.
-* Throw build exception if name attribute missing from
patternset. Bugzilla Report 25982.
+* Throw build exception if name attribute missing from
patternset#NameEntry.
+ Bugzilla Report 25982.
+
+* Throw build exception if target repeated in build file,
but allow targets
+ to be repeated in imported files.
Other changes:
--------------
1.412 +1 -8 ant/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/ant/build.xml,v
retrieving revision 1.411
retrieving revision 1.412
diff -u -r1.411 -r1.412
--- build.xml 26 Feb 2004 16:35:26 -0000 1.411
+++ build.xml 27 Feb 2004 11:45:15 -0000 1.412
@@ -329,13 +329,6 @@
<patternset id="teststhatfail">
<exclude
name="${optional.package}/BeanShellScriptTest.java"/>
<exclude
name="${optional.package}/jdepend/JDependTest.java"/>
- <!-- The
org.apache.tools.ant.ProjectTest.testDuplicateTargets fails.
- This is a known problem. It was noticed that duplicate
targets were
- not detected in ant 1.6.*, so a test was put in. But
no code was put in
- to fix the problem!
- see
http://marc.theaimsgroup.com/?l=ant-dev&m=107756336622453&w=2
- -->
- <exclude name="${ant.package}/ProjectTest.java"/>
</patternset>
<!--
@@ -1611,4 +1604,4 @@
description="--> creates a minimum distribution
in ./dist"
depends="dist-lite"/>
-</project>
\ No newline at end of file
+</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]