From 393113dc694cc660bc667bdc9cf709a585bba5d7 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 14 Jul 2009 04:51:55 +0000 Subject: [PATCH] record task doesn't work properly with subbuilds. PR 41368. Submitted by Greg Schueler git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@793792 13f79535-47bb-0310-9956-ffa450edef68 --- CONTRIBUTORS | 1 + WHATSNEW | 5 ++++- contributors.xml | 4 ++++ src/etc/testcases/taskdefs/recorder.xml | 7 +++++++ .../testcases/taskdefs/recorder/rectest5.result | 4 ++++ .../testcases/taskdefs/recorder/rectest6.result | 1 + src/etc/testcases/taskdefs/recorder2.xml | 12 ++++++++++++ .../org/apache/tools/ant/taskdefs/Recorder.java | 17 +++++++++++++---- .../apache/tools/ant/taskdefs/RecorderTest.java | 15 +++++++++++++++ 9 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/etc/testcases/taskdefs/recorder/rectest5.result create mode 100644 src/etc/testcases/taskdefs/recorder/rectest6.result create mode 100644 src/etc/testcases/taskdefs/recorder2.xml diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e14b2718a..8f17ceb85 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -107,6 +107,7 @@ Gerrit Riessen Glenn McAllister Glenn Twiggs Greg Nelson +Greg Schueler Günther Kögel Harish Prabandham Haroon Rafique diff --git a/WHATSNEW b/WHATSNEW index 4e699ed55..3c58661ca 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -399,7 +399,10 @@ Fixed bugs: * filesetmanifest="mergewithoutmain" in didn't treat inline manifests as expected. - Bugzilla Report 29731. + Bugzilla Report 29731. + + * didn't work properly with nested builds. + Bugzilla Report 41368. Other changes: -------------- diff --git a/contributors.xml b/contributors.xml index 4f1893107..bced4787d 100644 --- a/contributors.xml +++ b/contributors.xml @@ -453,6 +453,10 @@ Greg Nelson + + Greg + Schueler + Günther Kögel diff --git a/src/etc/testcases/taskdefs/recorder.xml b/src/etc/testcases/taskdefs/recorder.xml index 2f26000cc..ab108b921 100644 --- a/src/etc/testcases/taskdefs/recorder.xml +++ b/src/etc/testcases/taskdefs/recorder.xml @@ -61,6 +61,13 @@ + + + + + + + diff --git a/src/etc/testcases/taskdefs/recorder/rectest5.result b/src/etc/testcases/taskdefs/recorder/rectest5.result new file mode 100644 index 000000000..1da3c5a8e --- /dev/null +++ b/src/etc/testcases/taskdefs/recorder/rectest5.result @@ -0,0 +1,4 @@ + [echo] some message5 + +test6: + [echo] some message6 diff --git a/src/etc/testcases/taskdefs/recorder/rectest6.result b/src/etc/testcases/taskdefs/recorder/rectest6.result new file mode 100644 index 000000000..29bb451d7 --- /dev/null +++ b/src/etc/testcases/taskdefs/recorder/rectest6.result @@ -0,0 +1 @@ + [echo] some message6 diff --git a/src/etc/testcases/taskdefs/recorder2.xml b/src/etc/testcases/taskdefs/recorder2.xml new file mode 100644 index 000000000..01eeec3a8 --- /dev/null +++ b/src/etc/testcases/taskdefs/recorder2.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Recorder.java b/src/main/org/apache/tools/ant/taskdefs/Recorder.java index a0c090fad..30ac27e05 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Recorder.java +++ b/src/main/org/apache/tools/ant/taskdefs/Recorder.java @@ -64,7 +64,7 @@ public class Recorder extends Task implements SubBuildListener { private int loglevel = -1; /** Strip task banners if true. */ private boolean emacsMode = false; - /** The list of recorder entries. */ + /** The recorder entries keyed by Project. Each value is another Hashtable of filename to RecorderEntry. */ private static Hashtable recorderEntries = new Hashtable(); ////////////////////////////////////////////////////////////////////// @@ -203,7 +203,12 @@ public class Recorder extends Task implements SubBuildListener { */ protected RecorderEntry getRecorder(String name, Project proj) throws BuildException { - Object o = recorderEntries.get(name); + Hashtable entries = (Hashtable) recorderEntries.get(proj); + if (null == entries) { + entries = new Hashtable(); + recorderEntries.put(proj, entries); + } + Object o = entries.get(name); RecorderEntry entry; if (o == null) { @@ -216,7 +221,7 @@ public class Recorder extends Task implements SubBuildListener { entry.openFile(append.booleanValue()); } entry.setProject(proj); - recorderEntries.put(name, entry); + entries.put(name, entry); } else { entry = (RecorderEntry) o; } @@ -306,7 +311,11 @@ public class Recorder extends Task implements SubBuildListener { * @since Ant 1.7 */ private void cleanup() { - recorderEntries.clear(); + Hashtable entries = (Hashtable) recorderEntries.get(getProject()); + if (null != entries) { + entries.clear(); + recorderEntries.remove(entries); + } getProject().removeBuildListener(this); } } diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java index 3750007b1..4c8d4389e 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/RecorderTest.java @@ -82,4 +82,19 @@ public class RecorderTest extends BuildFileTest { + "rectest4.log"), true)); } + public void testSubBuild() throws IOException { + executeTarget("subbuild"); + assertTrue(FILE_UTILS + .contentEquals(project.resolveFile(REC_IN + + "rectest5.result"), + project.resolveFile(REC_DIR + + "rectest5.log"), true)); + assertTrue(FILE_UTILS + .contentEquals(project.resolveFile(REC_IN + + "rectest6.result"), + project.resolveFile(REC_DIR + + "rectest6.log"), true)); + + } + }