You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2017/12/01 15:49:35 UTC

[12/23] ant git commit: Normalise tabulation and line breaks (cf master)

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/PermissionsTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/PermissionsTest.java b/src/tests/junit/org/apache/tools/ant/types/PermissionsTest.java
index 37e643d..1e43fe1 100644
--- a/src/tests/junit/org/apache/tools/ant/types/PermissionsTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/PermissionsTest.java
@@ -1,158 +1,158 @@
-/*
- *  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.
- *
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.ExitException;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.types.Permissions.
- *
- */
-public class PermissionsTest {
-
-    Permissions perms;
-
-    @Before
-    public void setUp() {
-        perms = new Permissions();
-        Permissions.Permission perm = new Permissions.Permission();
-        // Grant extra permissions to read and write the user.* properties and read to the
-        // java.home property
-        perm.setActions("read, write");
-        perm.setName("user.*");
-        perm.setClass("java.util.PropertyPermission");
-        perms.addConfiguredGrant(perm);
-
-        perm = new Permissions.Permission();
-        perm.setActions("read");
-        perm.setName("java.home");
-        perm.setClass("java.util.PropertyPermission");
-        perms.addConfiguredGrant(perm);
-
-        perm = new Permissions.Permission();
-        perm.setActions("read");
-        perm.setName("file.encoding");
-        perm.setClass("java.util.PropertyPermission");
-        perms.addConfiguredGrant(perm);
-
-        // Revoke permission to write user.home (granted above via user.*), still able to read though.
-        // and the default granted permission to read os.name.
-        perm = new Permissions.Permission();
-        perm.setActions("write");
-        perm.setName("user.home");
-        perm.setClass("java.util.PropertyPermission");
-        perms.addConfiguredRevoke(perm);
-
-        perm = new Permissions.Permission();
-        perm.setActions("read");
-        perm.setName("os.*");
-        perm.setClass("java.util.PropertyPermission");
-        perms.addConfiguredRevoke(perm);
-    }
-
-    /** Tests a permission that is granted per default. */
-    @Test
-    public void testDefaultGranted() {
-        perms.setSecurityManager();
-        try {
-            System.getProperty("line.separator");
-        } finally {
-            perms.restoreSecurityManager();
-        }
-    }
-
-    /** Tests a permission that has been granted later via wildcard. */
-    @Test
-    public void testGranted() {
-        perms.setSecurityManager();
-        try {
-            String s = System.getProperty("user.name");
-            System.setProperty("user.name", s);
-        } finally {
-            perms.restoreSecurityManager();
-        }
-    }
-
-    /** Tests a permission that has been granted and revoked later. */
-    @Test
-    public void testGrantedAndRevoked() {
-        perms.setSecurityManager();
-        try {
-            String s = System.getProperty("user.home");
-            System.setProperty("user.home", s);
-            fail("Could perform an action that should have been forbidden.");
-        } catch (SecurityException e){
-            // Was expected, test passes
-        } finally {
-            perms.restoreSecurityManager();
-        }
-    }
-
-    /** Tests a permission that is granted as per default but revoked later via wildcard. */
-    @Test
-    public void testDefaultRevoked() {
-        perms.setSecurityManager();
-        try {
-            System.getProperty("os.name");
-            fail("Could perform an action that should have been forbidden.");
-        } catch (SecurityException e){
-            // Was expected, test passes
-        } finally {
-            perms.restoreSecurityManager();
-        }
-    }
-    /** Tests a permission that has not been granted or revoked. */
-    @Test
-    public void testOther() {
-        String ls = System.getProperty("line.separator");
-        perms.setSecurityManager();
-        try {
-            System.setProperty("line.separator",ls);
-            fail("Could perform an action that should have been forbidden.");
-        } catch (SecurityException e){
-            //TODO assert exception message
-            // Was expected, test passes
-        } finally {
-            perms.restoreSecurityManager();
-        }
-    }
-
-    /** Tests an exit condition. */
-    @Test
-    public void testExit() {
-        perms.setSecurityManager();
-        try {
-            System.out.println("If this is the last line on standard out the testExit f.a.i.l.e.d");
-            System.exit(3);
-            fail("Totaly impossible that this fail is ever executed. Please let me know if it is!");
-        } catch (ExitException e) {
-            if (e.getStatus() != 3) {
-                fail("Received wrong exit status in Exit Exception.");
-            }
-            System.out.println("testExit successful.");
-        } finally {
-            perms.restoreSecurityManager();
-        }
-    }
-
-}
+/*
+ *  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.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.ExitException;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.fail;
+
+/**
+ * JUnit 3 testcases for org.apache.tools.ant.types.Permissions.
+ *
+ */
+public class PermissionsTest {
+
+    Permissions perms;
+
+    @Before
+    public void setUp() {
+        perms = new Permissions();
+        Permissions.Permission perm = new Permissions.Permission();
+        // Grant extra permissions to read and write the user.* properties and read to the
+        // java.home property
+        perm.setActions("read, write");
+        perm.setName("user.*");
+        perm.setClass("java.util.PropertyPermission");
+        perms.addConfiguredGrant(perm);
+
+        perm = new Permissions.Permission();
+        perm.setActions("read");
+        perm.setName("java.home");
+        perm.setClass("java.util.PropertyPermission");
+        perms.addConfiguredGrant(perm);
+
+        perm = new Permissions.Permission();
+        perm.setActions("read");
+        perm.setName("file.encoding");
+        perm.setClass("java.util.PropertyPermission");
+        perms.addConfiguredGrant(perm);
+
+        // Revoke permission to write user.home (granted above via user.*), still able to read though.
+        // and the default granted permission to read os.name.
+        perm = new Permissions.Permission();
+        perm.setActions("write");
+        perm.setName("user.home");
+        perm.setClass("java.util.PropertyPermission");
+        perms.addConfiguredRevoke(perm);
+
+        perm = new Permissions.Permission();
+        perm.setActions("read");
+        perm.setName("os.*");
+        perm.setClass("java.util.PropertyPermission");
+        perms.addConfiguredRevoke(perm);
+    }
+
+    /** Tests a permission that is granted per default. */
+    @Test
+    public void testDefaultGranted() {
+        perms.setSecurityManager();
+        try {
+            System.getProperty("line.separator");
+        } finally {
+            perms.restoreSecurityManager();
+        }
+    }
+
+    /** Tests a permission that has been granted later via wildcard. */
+    @Test
+    public void testGranted() {
+        perms.setSecurityManager();
+        try {
+            String s = System.getProperty("user.name");
+            System.setProperty("user.name", s);
+        } finally {
+            perms.restoreSecurityManager();
+        }
+    }
+
+    /** Tests a permission that has been granted and revoked later. */
+    @Test
+    public void testGrantedAndRevoked() {
+        perms.setSecurityManager();
+        try {
+            String s = System.getProperty("user.home");
+            System.setProperty("user.home", s);
+            fail("Could perform an action that should have been forbidden.");
+        } catch (SecurityException e){
+            // Was expected, test passes
+        } finally {
+            perms.restoreSecurityManager();
+        }
+    }
+
+    /** Tests a permission that is granted as per default but revoked later via wildcard. */
+    @Test
+    public void testDefaultRevoked() {
+        perms.setSecurityManager();
+        try {
+            System.getProperty("os.name");
+            fail("Could perform an action that should have been forbidden.");
+        } catch (SecurityException e){
+            // Was expected, test passes
+        } finally {
+            perms.restoreSecurityManager();
+        }
+    }
+    /** Tests a permission that has not been granted or revoked. */
+    @Test
+    public void testOther() {
+        String ls = System.getProperty("line.separator");
+        perms.setSecurityManager();
+        try {
+            System.setProperty("line.separator",ls);
+            fail("Could perform an action that should have been forbidden.");
+        } catch (SecurityException e){
+            //TODO assert exception message
+            // Was expected, test passes
+        } finally {
+            perms.restoreSecurityManager();
+        }
+    }
+
+    /** Tests an exit condition. */
+    @Test
+    public void testExit() {
+        perms.setSecurityManager();
+        try {
+            System.out.println("If this is the last line on standard out the testExit f.a.i.l.e.d");
+            System.exit(3);
+            fail("Totaly impossible that this fail is ever executed. Please let me know if it is!");
+        } catch (ExitException e) {
+            if (e.getStatus() != 3) {
+                fail("Received wrong exit status in Exit Exception.");
+            }
+            System.out.println("testExit successful.");
+        } finally {
+            perms.restoreSecurityManager();
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/PolyTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/PolyTest.java b/src/tests/junit/org/apache/tools/ant/types/PolyTest.java
index 89f6268..8dd132a 100644
--- a/src/tests/junit/org/apache/tools/ant/types/PolyTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/PolyTest.java
@@ -1,79 +1,79 @@
-/*
- *  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.
- *
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.AntAssert;
-import org.apache.tools.ant.BuildFileRule;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class PolyTest {
-
-    @Rule
-    public BuildFileRule buildRule = new BuildFileRule();
-    
-    @Before
-    public void setUp() {
-        buildRule.configureProject("src/etc/testcases/types/poly.xml");
-    }
-
-    @Test
-    public void testFileSet() {
-        buildRule.executeTarget("fileset");
-        AntAssert.assertContains( "types.FileSet", buildRule.getLog());
-    }
-
-    @Test
-    public void testFileSetAntType() {
-        buildRule.executeTarget("fileset-ant-type");
-        AntAssert.assertContains("types.PolyTest$MyFileSet", buildRule.getLog());
-    }
-
-    @Test
-    public void testPath() {
-        buildRule.executeTarget("path");
-        AntAssert.assertContains( "types.Path", buildRule.getLog());
-    }
-
-    @Test
-    public void testPathAntType() {
-        buildRule.executeTarget("path-ant-type");
-        AntAssert.assertContains( "types.PolyTest$MyPath", buildRule.getLog());
-    }
-
-    public static class MyFileSet extends FileSet {}
-
-    public static class MyPath extends Path {
-        public MyPath(Project project) {
-            super(project);
-        }
-    }
-
-    public static class MyTask extends Task {
-        public void addPath(Path path) {
-            log("class of path is " + path.getClass());
-        }
-        public void addFileset(FileSet fileset) {
-            log("class of fileset is " + fileset.getClass());
-        }
-    }
-}
+/*
+ *  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.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.AntAssert;
+import org.apache.tools.ant.BuildFileRule;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class PolyTest {
+
+    @Rule
+    public BuildFileRule buildRule = new BuildFileRule();
+
+    @Before
+    public void setUp() {
+        buildRule.configureProject("src/etc/testcases/types/poly.xml");
+    }
+
+    @Test
+    public void testFileSet() {
+        buildRule.executeTarget("fileset");
+        AntAssert.assertContains( "types.FileSet", buildRule.getLog());
+    }
+
+    @Test
+    public void testFileSetAntType() {
+        buildRule.executeTarget("fileset-ant-type");
+        AntAssert.assertContains("types.PolyTest$MyFileSet", buildRule.getLog());
+    }
+
+    @Test
+    public void testPath() {
+        buildRule.executeTarget("path");
+        AntAssert.assertContains( "types.Path", buildRule.getLog());
+    }
+
+    @Test
+    public void testPathAntType() {
+        buildRule.executeTarget("path-ant-type");
+        AntAssert.assertContains( "types.PolyTest$MyPath", buildRule.getLog());
+    }
+
+    public static class MyFileSet extends FileSet {}
+
+    public static class MyPath extends Path {
+        public MyPath(Project project) {
+            super(project);
+        }
+    }
+
+    public static class MyTask extends Task {
+        public void addPath(Path path) {
+            log("class of path is " + path.getClass());
+        }
+        public void addFileset(FileSet fileset) {
+            log("class of fileset is " + fileset.getClass());
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/RedirectorElementTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/RedirectorElementTest.java b/src/tests/junit/org/apache/tools/ant/types/RedirectorElementTest.java
index 62c76f0..f4c2abe 100644
--- a/src/tests/junit/org/apache/tools/ant/types/RedirectorElementTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/RedirectorElementTest.java
@@ -1,86 +1,86 @@
-/*
- *  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.
- *
- */
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.AntAssert;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildFileRule;
-import org.apache.tools.ant.Project;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-public class RedirectorElementTest {
-
-    @Rule
-    public BuildFileRule buildRule = new BuildFileRule();
-
-    @Before
-    public void setUp() {
-        buildRule.configureProject("src/etc/testcases/types/redirector.xml", Project.MSG_VERBOSE);
-    }
-
-    @Test
-    public void test1() {
-        buildRule.executeTarget("test1");
-        assertTrue((buildRule.getProject().<Object> getReference("test1")
-            instanceof RedirectorElement));
-    }
-
-    @Test
-    public void test2() {
-        try {
-            buildRule.executeTarget("test2");
-            fail("You must not specify more than one attribute when using refid");
-        } catch (BuildException ex) {
-            //TODO assert exception message
-        }
-    }
-
-    @Test
-    public void test3() {
-        try {
-            buildRule.executeTarget("test3");
-            fail("You must not specify nested elements when using refid");
-        } catch (BuildException ex) {
-            //TODO assert exception message
-        }
-    }
-
-    @Test
-    public void test4() {
-        buildRule.executeTarget("test4");
-    }
-
-    @Test
-    public void testLogInputString() {
-        buildRule.executeTarget("testLogInputString");
-        if (buildRule.getLog().indexOf("testLogInputString can-cat") >=0 ) {
-            AntAssert.assertContains("Using input string", buildRule.getFullLog());
-        }
-    }
-
-    @Test
-    public void testRefid() {
-        buildRule.executeTarget("testRefid");
-    }
-
-}
+/*
+ *  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.
+ *
+ */
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.AntAssert;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.BuildFileRule;
+import org.apache.tools.ant.Project;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+public class RedirectorElementTest {
+
+    @Rule
+    public BuildFileRule buildRule = new BuildFileRule();
+
+    @Before
+    public void setUp() {
+        buildRule.configureProject("src/etc/testcases/types/redirector.xml", Project.MSG_VERBOSE);
+    }
+
+    @Test
+    public void test1() {
+        buildRule.executeTarget("test1");
+        assertTrue((buildRule.getProject().<Object> getReference("test1")
+            instanceof RedirectorElement));
+    }
+
+    @Test
+    public void test2() {
+        try {
+            buildRule.executeTarget("test2");
+            fail("You must not specify more than one attribute when using refid");
+        } catch (BuildException ex) {
+            //TODO assert exception message
+        }
+    }
+
+    @Test
+    public void test3() {
+        try {
+            buildRule.executeTarget("test3");
+            fail("You must not specify nested elements when using refid");
+        } catch (BuildException ex) {
+            //TODO assert exception message
+        }
+    }
+
+    @Test
+    public void test4() {
+        buildRule.executeTarget("test4");
+    }
+
+    @Test
+    public void testLogInputString() {
+        buildRule.executeTarget("testLogInputString");
+        if (buildRule.getLog().indexOf("testLogInputString can-cat") >=0 ) {
+            AntAssert.assertContains("Using input string", buildRule.getFullLog());
+        }
+    }
+
+    @Test
+    public void testRefid() {
+        buildRule.executeTarget("testRefid");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/ResourceOutputTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/ResourceOutputTest.java b/src/tests/junit/org/apache/tools/ant/types/ResourceOutputTest.java
index 0a48a42..b66335a 100644
--- a/src/tests/junit/org/apache/tools/ant/types/ResourceOutputTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/ResourceOutputTest.java
@@ -1,160 +1,160 @@
-/*
- *  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.
- *
- */
-
-package org.apache.tools.ant.types;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.UnknownServiceException;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Zip;
-import org.apache.tools.ant.types.resources.ImmutableResourceException;
-import org.apache.tools.ant.types.resources.PropertyResource;
-import org.apache.tools.ant.types.resources.StringResource;
-import org.apache.tools.ant.types.resources.URLResource;
-import org.apache.tools.ant.types.resources.ZipResource;
-import org.apache.tools.ant.util.FileUtils;
-import org.apache.tools.ant.util.ResourceUtils;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-public class ResourceOutputTest {
-
-    private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
-    private static final File basedir = new File(System.getProperty("root"),
-        "src/etc/testcases/types/resources");
-
-    private Project project;
-
-    @Before
-    public void setUp() {
-        project = new Project();
-        project.init();
-        project.setUserProperty("basedir" , basedir.getAbsolutePath());
-    }
-
-    @Test
-    public void testresourceoutput() {
-        try {
-            testoutputbe(new Resource("foo"));
-            fail("should have caught UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            //TODO assert exception message
-        }
-    }
-
-    @Test
-    public void teststringoutput1() {
-        StringResource r = new StringResource();
-        testoutputbe(r);
-        assertEquals("foo", r.getValue());
-    }
-
-    @Test
-    public void teststringoutput2() throws IOException {
-        StringResource r = new StringResource("bar");
-        try {
-            testoutput(r);
-            fail("should have caught ImmutableResourceException");
-        } catch (ImmutableResourceException e) {
-            //TODO assert exception message
-        }
-        assertEquals("bar", r.getValue());
-    }
-
-    @Test
-    public void testpropertyoutput1() {
-        PropertyResource r = new PropertyResource(project, "bar");
-        testoutputbe(r);
-        assertEquals("foo", project.getProperty("bar"));
-    }
-
-    @Test
-    public void testpropertyoutput2() throws IOException {
-        project.setNewProperty("bar", "bar");
-        PropertyResource r = new PropertyResource(project, "bar");
-        try {
-            testoutput(r);
-            fail("should have caught ImmutableResourceException");
-        } catch (ImmutableResourceException e) {
-            //TODO assert exception message
-        }
-        assertEquals("bar", project.getProperty("bar"));
-    }
-
-    @Test
-    public void testurloutput() throws IOException {
-        File f = project.resolveFile("testurloutput");
-        try {
-            FILE_UTILS.createNewFile(f);
-            testoutput(new URLResource(f));
-            fail("should have caught UnknownServiceException");
-        } catch (UnknownServiceException e) {
-            //TODO assert exception message
-        } finally {
-            if (!f.delete()) {
-                f.deleteOnExit();
-            }
-        }
-    }
-
-    @Test
-    public void testzipentryoutput() {
-        Zip z = new Zip();
-        z.setProject(project);
-        Zip.WhenEmpty create = new Zip.WhenEmpty();
-        create.setValue("create");
-        z.setWhenempty(create);
-        z.setBasedir(basedir);
-        z.setExcludes("**/*");
-        File f = project.resolveFile("foo");
-        z.setDestFile(f);
-        z.execute();
-        ZipResource r = new ZipResource();
-        r.setZipfile(f);
-        r.setName("foo");
-        try {
-            testoutputbe(r);
-            fail("should have caught UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            //TODO assert exception message
-        } finally {
-            if (!f.delete()) {
-                f.deleteOnExit();
-            }
-        }
-    }
-
-    private void testoutputbe(Resource dest) {
-        try {
-            testoutput(dest);
-        } catch (IOException e) {
-            throw new BuildException(e);
-        }
-    }
-
-    private void testoutput(Resource dest) throws IOException {
-        ResourceUtils.copyResource(new StringResource("foo"), dest, null);
-    }
-
-}
+/*
+ *  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.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.UnknownServiceException;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Zip;
+import org.apache.tools.ant.types.resources.ImmutableResourceException;
+import org.apache.tools.ant.types.resources.PropertyResource;
+import org.apache.tools.ant.types.resources.StringResource;
+import org.apache.tools.ant.types.resources.URLResource;
+import org.apache.tools.ant.types.resources.ZipResource;
+import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.util.ResourceUtils;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+public class ResourceOutputTest {
+
+    private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
+    private static final File basedir = new File(System.getProperty("root"),
+        "src/etc/testcases/types/resources");
+
+    private Project project;
+
+    @Before
+    public void setUp() {
+        project = new Project();
+        project.init();
+        project.setUserProperty("basedir" , basedir.getAbsolutePath());
+    }
+
+    @Test
+    public void testresourceoutput() {
+        try {
+            testoutputbe(new Resource("foo"));
+            fail("should have caught UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            //TODO assert exception message
+        }
+    }
+
+    @Test
+    public void teststringoutput1() {
+        StringResource r = new StringResource();
+        testoutputbe(r);
+        assertEquals("foo", r.getValue());
+    }
+
+    @Test
+    public void teststringoutput2() throws IOException {
+        StringResource r = new StringResource("bar");
+        try {
+            testoutput(r);
+            fail("should have caught ImmutableResourceException");
+        } catch (ImmutableResourceException e) {
+            //TODO assert exception message
+        }
+        assertEquals("bar", r.getValue());
+    }
+
+    @Test
+    public void testpropertyoutput1() {
+        PropertyResource r = new PropertyResource(project, "bar");
+        testoutputbe(r);
+        assertEquals("foo", project.getProperty("bar"));
+    }
+
+    @Test
+    public void testpropertyoutput2() throws IOException {
+        project.setNewProperty("bar", "bar");
+        PropertyResource r = new PropertyResource(project, "bar");
+        try {
+            testoutput(r);
+            fail("should have caught ImmutableResourceException");
+        } catch (ImmutableResourceException e) {
+            //TODO assert exception message
+        }
+        assertEquals("bar", project.getProperty("bar"));
+    }
+
+    @Test
+    public void testurloutput() throws IOException {
+        File f = project.resolveFile("testurloutput");
+        try {
+            FILE_UTILS.createNewFile(f);
+            testoutput(new URLResource(f));
+            fail("should have caught UnknownServiceException");
+        } catch (UnknownServiceException e) {
+            //TODO assert exception message
+        } finally {
+            if (!f.delete()) {
+                f.deleteOnExit();
+            }
+        }
+    }
+
+    @Test
+    public void testzipentryoutput() {
+        Zip z = new Zip();
+        z.setProject(project);
+        Zip.WhenEmpty create = new Zip.WhenEmpty();
+        create.setValue("create");
+        z.setWhenempty(create);
+        z.setBasedir(basedir);
+        z.setExcludes("**/*");
+        File f = project.resolveFile("foo");
+        z.setDestFile(f);
+        z.execute();
+        ZipResource r = new ZipResource();
+        r.setZipfile(f);
+        r.setName("foo");
+        try {
+            testoutputbe(r);
+            fail("should have caught UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            //TODO assert exception message
+        } finally {
+            if (!f.delete()) {
+                f.deleteOnExit();
+            }
+        }
+    }
+
+    private void testoutputbe(Resource dest) {
+        try {
+            testoutput(dest);
+        } catch (IOException e) {
+            throw new BuildException(e);
+        }
+    }
+
+    private void testoutput(Resource dest) throws IOException {
+        ResourceUtils.copyResource(new StringResource("foo"), dest, null);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/TarFileSetTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/TarFileSetTest.java b/src/tests/junit/org/apache/tools/ant/types/TarFileSetTest.java
index 3b186f9..b30168a 100644
--- a/src/tests/junit/org/apache/tools/ant/types/TarFileSetTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/TarFileSetTest.java
@@ -1,119 +1,119 @@
-/*
- *  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.
- *
- */
-
-package org.apache.tools.ant.types;
-
-import java.io.File;
-
-import org.apache.tools.ant.BuildException;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * JUnit 3 testcases for org.apache.tools.ant.types.TarFileSet.
- *
- * <p>This doesn't actually test much, mainly reference handling.
- *
- */
-
-public class TarFileSetTest extends AbstractFileSetTest {
-
-
-    protected AbstractFileSet getInstance() {
-        return new TarFileSet();
-    }
-
-    @Test
-    public final void testAttributes() {
-        TarFileSet f = (TarFileSet)getInstance();
-        //check that dir and src are incompatible
-        f.setSrc(new File("example.tar"));
-        try {
-            f.setDir(new File("examples"));
-            fail("can add dir to "
-                    + f.getDataTypeName()
-                    + " when a src is already present");
-        } catch (BuildException be) {
-            assertEquals("Cannot set both dir and src attributes",be.getMessage());
-        }
-        f = (TarFileSet)getInstance();
-        //check that dir and src are incompatible
-        f.setDir(new File("examples"));
-        try {
-            f.setSrc(new File("example.tar"));
-            fail("can add src to "
-                    + f.getDataTypeName()
-                    + " when a dir is already present");
-        } catch (BuildException be) {
-            assertEquals("Cannot set both dir and src attributes",be.getMessage());
-        }
-        //check that fullpath and prefix are incompatible
-        f = (TarFileSet)getInstance();
-        f.setSrc(new File("example.tar"));
-        f.setPrefix("/examples");
-        try {
-            f.setFullpath("/doc/manual/index.html");
-            fail("Can add fullpath to "
-                    + f.getDataTypeName()
-                    + " when a prefix is already present");
-        } catch (BuildException be) {
-            assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage());
-        }
-        f = (TarFileSet)getInstance();
-        f.setSrc(new File("example.tar"));
-        f.setFullpath("/doc/manual/index.html");
-        try {
-            f.setPrefix("/examples");
-            fail("Can add prefix to "
-                    + f.getDataTypeName()
-                    + " when a fullpath is already present");
-        } catch (BuildException be) {
-            assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage());
-        }
-        // check that reference tarfilesets cannot have specific attributes
-        f = (TarFileSet)getInstance();
-        f.setRefid(new Reference(getProject(), "test"));
-        try {
-            f.setSrc(new File("example.tar"));
-            fail("Can add src to "
-                    + f.getDataTypeName()
-                    + " when a refid is already present");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one "
-            + "attribute when using refid", be.getMessage());
-        }
-        // check that a reference tarfileset gets the same attributes as the original
-        f = (TarFileSet)getInstance();
-        f.setSrc(new File("example.tar"));
-        f.setPrefix("/examples");
-        f.setFileMode("600");
-        f.setDirMode("530");
-        getProject().addReference("test",f);
-        TarFileSet zid=(TarFileSet)getInstance();
-        zid.setRefid(new Reference(getProject(), "test"));
-        assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject())));
-        assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject())));
-        assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject()));
-        assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject()));
-      }
-
-
-}
+/*
+ *  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.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import java.io.File;
+
+import org.apache.tools.ant.BuildException;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * JUnit 3 testcases for org.apache.tools.ant.types.TarFileSet.
+ *
+ * <p>This doesn't actually test much, mainly reference handling.
+ *
+ */
+
+public class TarFileSetTest extends AbstractFileSetTest {
+
+
+    protected AbstractFileSet getInstance() {
+        return new TarFileSet();
+    }
+
+    @Test
+    public final void testAttributes() {
+        TarFileSet f = (TarFileSet)getInstance();
+        //check that dir and src are incompatible
+        f.setSrc(new File("example.tar"));
+        try {
+            f.setDir(new File("examples"));
+            fail("can add dir to "
+                    + f.getDataTypeName()
+                    + " when a src is already present");
+        } catch (BuildException be) {
+            assertEquals("Cannot set both dir and src attributes",be.getMessage());
+        }
+        f = (TarFileSet)getInstance();
+        //check that dir and src are incompatible
+        f.setDir(new File("examples"));
+        try {
+            f.setSrc(new File("example.tar"));
+            fail("can add src to "
+                    + f.getDataTypeName()
+                    + " when a dir is already present");
+        } catch (BuildException be) {
+            assertEquals("Cannot set both dir and src attributes",be.getMessage());
+        }
+        //check that fullpath and prefix are incompatible
+        f = (TarFileSet)getInstance();
+        f.setSrc(new File("example.tar"));
+        f.setPrefix("/examples");
+        try {
+            f.setFullpath("/doc/manual/index.html");
+            fail("Can add fullpath to "
+                    + f.getDataTypeName()
+                    + " when a prefix is already present");
+        } catch (BuildException be) {
+            assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage());
+        }
+        f = (TarFileSet)getInstance();
+        f.setSrc(new File("example.tar"));
+        f.setFullpath("/doc/manual/index.html");
+        try {
+            f.setPrefix("/examples");
+            fail("Can add prefix to "
+                    + f.getDataTypeName()
+                    + " when a fullpath is already present");
+        } catch (BuildException be) {
+            assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage());
+        }
+        // check that reference tarfilesets cannot have specific attributes
+        f = (TarFileSet)getInstance();
+        f.setRefid(new Reference(getProject(), "test"));
+        try {
+            f.setSrc(new File("example.tar"));
+            fail("Can add src to "
+                    + f.getDataTypeName()
+                    + " when a refid is already present");
+        } catch (BuildException be) {
+            assertEquals("You must not specify more than one "
+            + "attribute when using refid", be.getMessage());
+        }
+        // check that a reference tarfileset gets the same attributes as the original
+        f = (TarFileSet)getInstance();
+        f.setSrc(new File("example.tar"));
+        f.setPrefix("/examples");
+        f.setFileMode("600");
+        f.setDirMode("530");
+        getProject().addReference("test",f);
+        TarFileSet zid=(TarFileSet)getInstance();
+        zid.setRefid(new Reference(getProject(), "test"));
+        assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject())));
+        assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject())));
+        assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject()));
+        assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject()));
+      }
+
+
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/XMLCatalogBuildFileTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/XMLCatalogBuildFileTest.java b/src/tests/junit/org/apache/tools/ant/types/XMLCatalogBuildFileTest.java
index ce796b1..96c0c5d 100644
--- a/src/tests/junit/org/apache/tools/ant/types/XMLCatalogBuildFileTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/XMLCatalogBuildFileTest.java
@@ -1,98 +1,98 @@
-/*
- *  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.
- *
- */
-
-package org.apache.tools.ant.types;
-
-import org.apache.tools.ant.BuildFileRule;
-import org.junit.Rule;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * testcases for org.apache.tools.ant.types.XMLCatalog
- *
- * @see org.apache.tools.ant.types.XMLCatalogTest
- *
- */
-public class XMLCatalogBuildFileTest {
-
-     @Rule
-     public BuildFileRule buildRule = new BuildFileRule();
-
-
-
-    //
-    // Ensure that an external entity resolves as expected with NO
-    // XMLCatalog involvement:
-    //
-    // Transform an XML file that refers to the entity into a text
-    // file, stuff result into property: val1
-    //
-    @Test
-    public void testEntityNoCatalog() {
-        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
-        buildRule.executeTarget("testentitynocatalog");
-        assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val1"));
-    }
-
-    //
-    // Ensure that an external entity resolves as expected Using an
-    // XMLCatalog:
-    //
-    // Transform an XML file that refers to the entity into a text
-    // file, entity is listed in the XMLCatalog pointing to a
-    // different file.  Stuff result into property: val2
-    //
-    @Test
-    public void testEntityWithCatalog() {
-        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
-        buildRule.executeTarget("testentitywithcatalog");
-        assertEquals("No news is good news", buildRule.getProject().getProperty("val2"));
-    }
-
-    //
-    // Ensure that an external entity resolves as expected with NO
-    // XMLCatalog involvement:
-    //
-    // Transform an XML file that contains a reference to a _second_ XML file
-    // via the document() function.  The _second_ XML file refers to an entity.
-    // Stuff result into the property: val3
-    //
-    @Test
-    public void testDocumentNoCatalog() {
-        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
-        buildRule.executeTarget("testdocumentnocatalog");
-        assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val3"));
-    }
-
-    //
-    // Ensure that an external entity resolves as expected Using an
-    // XMLCatalog:
-    //
-    // Transform an XML file that contains a reference to a _second_ XML file
-    // via the document() function.  The _second_ XML file refers to an entity.
-    // The entity is listed in the XMLCatalog pointing to a different file.
-    // Stuff result into the property: val4
-    @Test
-    public void testDocumentWithCatalog() {
-        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
-        buildRule.executeTarget("testdocumentwithcatalog");
-        assertEquals("No news is good news", buildRule.getProject().getProperty("val4"));
-    }
-}
+/*
+ *  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.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.BuildFileRule;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * testcases for org.apache.tools.ant.types.XMLCatalog
+ *
+ * @see org.apache.tools.ant.types.XMLCatalogTest
+ *
+ */
+public class XMLCatalogBuildFileTest {
+
+     @Rule
+     public BuildFileRule buildRule = new BuildFileRule();
+
+
+
+    //
+    // Ensure that an external entity resolves as expected with NO
+    // XMLCatalog involvement:
+    //
+    // Transform an XML file that refers to the entity into a text
+    // file, stuff result into property: val1
+    //
+    @Test
+    public void testEntityNoCatalog() {
+        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
+        buildRule.executeTarget("testentitynocatalog");
+        assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val1"));
+    }
+
+    //
+    // Ensure that an external entity resolves as expected Using an
+    // XMLCatalog:
+    //
+    // Transform an XML file that refers to the entity into a text
+    // file, entity is listed in the XMLCatalog pointing to a
+    // different file.  Stuff result into property: val2
+    //
+    @Test
+    public void testEntityWithCatalog() {
+        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
+        buildRule.executeTarget("testentitywithcatalog");
+        assertEquals("No news is good news", buildRule.getProject().getProperty("val2"));
+    }
+
+    //
+    // Ensure that an external entity resolves as expected with NO
+    // XMLCatalog involvement:
+    //
+    // Transform an XML file that contains a reference to a _second_ XML file
+    // via the document() function.  The _second_ XML file refers to an entity.
+    // Stuff result into the property: val3
+    //
+    @Test
+    public void testDocumentNoCatalog() {
+        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
+        buildRule.executeTarget("testdocumentnocatalog");
+        assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val3"));
+    }
+
+    //
+    // Ensure that an external entity resolves as expected Using an
+    // XMLCatalog:
+    //
+    // Transform an XML file that contains a reference to a _second_ XML file
+    // via the document() function.  The _second_ XML file refers to an entity.
+    // The entity is listed in the XMLCatalog pointing to a different file.
+    // Stuff result into the property: val4
+    @Test
+    public void testDocumentWithCatalog() {
+        buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml");
+        buildRule.executeTarget("testdocumentwithcatalog");
+        assertEquals("No news is good news", buildRule.getProject().getProperty("val4"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/ant/blob/0ed7f4ab/src/tests/junit/org/apache/tools/ant/types/XMLCatalogTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/types/XMLCatalogTest.java b/src/tests/junit/org/apache/tools/ant/types/XMLCatalogTest.java
index ca06ec3..c1adc30 100644
--- a/src/tests/junit/org/apache/tools/ant/types/XMLCatalogTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/XMLCatalogTest.java
@@ -1,392 +1,392 @@
-/*
- *  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.
- *
- */
-
-package org.apache.tools.ant.types;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.sax.SAXSource;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.util.JAXPUtils;
-import org.junit.Before;
-import org.junit.Test;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * JUnit testcases for org.apache.tools.ant.types.XMLCatalog
- *
- */
-public class XMLCatalogTest {
-
-    private Project project;
-    private XMLCatalog catalog;
-
-    private XMLCatalog newCatalog() {
-        XMLCatalog cat = new XMLCatalog();
-        cat.setProject(project);
-        return cat;
-    }
-
-    private static String toURLString(File file) throws MalformedURLException {
-        return JAXPUtils.getSystemId(file);
-    }
-
-    @Before
-    public void setUp() {
-        project = new Project();
-        project.setBasedir(System.getProperty("root"));
-
-        // This causes XMLCatalog to print out detailed logging
-        // messages for debugging
-        //
-        // DefaultLogger logger = new DefaultLogger();
-        // logger.setMessageOutputLevel(Project.MSG_DEBUG);
-        // logger.setOutputPrintStream(System.out);
-        // logger.setErrorPrintStream(System.err);
-        // project.addBuildListener(logger);
-
-        catalog = newCatalog();
-    }
-
-    @Test
-    public void testEmptyCatalog() {
-        try {
-            InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
-                                                       "i/dont/exist.dtd");
-            assertNull("Empty catalog should return null", result);
-        } catch (Exception e) {
-            fail("resolveEntity() failed!" + e.toString());
-        }
-
-        try {
-            Source result = catalog.resolve("i/dont/exist.dtd", null);
-            String expected = toURLString(new File(project.getBaseDir() +
-                                                   "/i/dont/exist.dtd"));
-            String resultStr =
-                fileURLPartWithoutLeadingSlashes((SAXSource)result);
-            assertTrue("Empty catalog should return input with a system ID like "
-                       + expected + " but was " + resultStr,
-                       expected.endsWith(resultStr));
-        } catch (Exception e) {
-            fail("resolve() failed!" + e.toString());
-        }
-    }
-
-    private static String fileURLPartWithoutLeadingSlashes(SAXSource result)
-        throws MalformedURLException {
-        //
-        // These shenanigans are necessary b/c Norm Walsh's resolver
-        // has a different idea of how file URLs are created on windoze
-        // ie file://c:/foo instead of file:///c:/foo
-        //
-        String resultStr =
-            new URL(result.getInputSource().getSystemId()).getFile();
-        // on Sun's Java6 this returns an unexpected number of four
-        // leading slashes, at least on Linux - strip all of them
-        while (resultStr.startsWith("/")) {
-            resultStr = resultStr.substring(1);
-        }
-        return resultStr;
-    }
-
-    @Test
-    public void testNonExistentEntry() throws IOException, SAXException, TransformerException {
-
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId("PUBLIC ID ONE");
-        dtd.setLocation("i/dont/exist.dtd");
-
-        InputSource isResult = catalog.resolveEntity("PUBLIC ID ONE",
-                                                   "i/dont/exist.dtd");
-        assertNull("Nonexistent Catalog entry should not be returned", isResult);
-
-        Source result = catalog.resolve("i/dont/exist.dtd", null);
-        String expected = toURLString(new File(project.getBaseDir().toURL() +
-                                               "/i/dont/exist.dtd"));
-        String resultStr =
-            fileURLPartWithoutLeadingSlashes((SAXSource)result);
-        assertTrue("Nonexistent Catalog entry return input with a system ID like "
-                   + expected + " but was " + resultStr,
-                   expected.endsWith(resultStr));
-    }
-
-    @Test
-    public void testEmptyElementIfIsReference() {
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId("PUBLIC ID ONE");
-        dtd.setLocation("i/dont/exist.dtd");
-        catalog.addDTD(dtd);
-        project.addReference("catalog", catalog);
-
-        try {
-            catalog.setRefid(new Reference(project, "dummyref"));
-            fail("Can add reference to nonexistent XMLCatalog");
-        } catch (BuildException be) {
-            assertEquals("You must not specify more than one "
-                         + "attribute when using refid", be.getMessage());
-        }
-
-        XMLCatalog catalog2 = newCatalog();
-        catalog2.setRefid(new Reference(project, "catalog"));
-
-        try {
-            catalog2.addConfiguredXMLCatalog(catalog);
-            fail("Can add nested XMLCatalog to XMLCatalog that is a reference");
-        } catch (BuildException be) {
-            assertEquals("You must not specify nested elements when using refid",
-                         be.getMessage());
-        }
-    }
-
-    @Test
-    public void testCircularReferenceCheck() throws IOException, SAXException {
-
-        // catalog <--> catalog
-        project.addReference("catalog", catalog);
-        catalog.setRefid(new Reference(project, "catalog"));
-
-        try {
-            InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
-                                                       "i/dont/exist.dtd");
-            fail("Can make XMLCatalog a Reference to itself.");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                         be.getMessage());
-        } catch (Exception e) {
-            fail("resolveEntity() failed!" + e.toString());
-        }
-
-        // catalog1 --> catalog2 --> catalog3 --> catalog1
-        XMLCatalog catalog1 = newCatalog();
-        project.addReference("catalog1", catalog1);
-        XMLCatalog catalog2 = newCatalog();
-        project.addReference("catalog2", catalog2);
-        XMLCatalog catalog3 = newCatalog();
-        project.addReference("catalog3", catalog3);
-
-        catalog3.setRefid(new Reference(project, "catalog1"));
-        catalog2.setRefid(new Reference(project, "catalog3"));
-        catalog1.setRefid(new Reference(project, "catalog2"));
-
-        try {
-            catalog1.resolveEntity("PUBLIC ID ONE",
-                                                        "i/dont/exist.dtd");
-            fail("Can make circular reference");
-        } catch (BuildException be) {
-            assertEquals("This data type contains a circular reference.",
-                    be.getMessage());
-        }
-    }
-    // inspired by Bugzilla Report 23913
-    // a problem used to happen under Windows when the location of the DTD was given as an absolute path
-    // possibly with a mixture of file separators
-    @Test
-    public void testAbsolutePath() throws IOException, SAXException {
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId("-//stevo//DTD doc 1.0//EN");
-
-        String sysid = System.getProperty("root") + File.separator + "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
-        dtd.setLocation(sysid);
-        catalog.addDTD(dtd);
-        File dtdFile = project.resolveFile(sysid);
-
-        InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN",
-                                                   "nap:chemical+brothers");
-        assertNotNull(result);
-        assertEquals(toURLString(dtdFile),
-                     result.getSystemId());
-
-
-    }
-
-    @Test
-    public void testSimpleEntry() throws IOException, SAXException {
-
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId("-//stevo//DTD doc 1.0//EN");
-        String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
-        dtd.setLocation(sysid);
-        catalog.addDTD(dtd);
-        File dtdFile = project.resolveFile(sysid);
-
-        InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN",
-                                                   "nap:chemical+brothers");
-        assertNotNull(result);
-        assertEquals(toURLString(dtdFile),
-                     result.getSystemId());
-
-    }
-
-    @Test
-    public void testEntryReference() throws IOException, SAXException, TransformerException {
-
-        String publicId = "-//stevo//DTD doc 1.0//EN";
-        String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
-
-        // catalog2 --> catalog1 --> catalog
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId(publicId);
-        dtd.setLocation(sysid);
-        catalog.addDTD(dtd);
-        File dtdFile = project.resolveFile(sysid);
-
-        String uri = "http://foo.com/bar/blah.xml";
-        String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml";
-
-        ResourceLocation entity = new ResourceLocation();
-        entity.setPublicId(uri);
-        entity.setLocation(uriLoc);
-        catalog.addEntity(entity);
-        File xmlFile = project.resolveFile(uriLoc);
-
-        project.addReference("catalog", catalog);
-
-        XMLCatalog catalog1 = newCatalog();
-        project.addReference("catalog1", catalog1);
-        XMLCatalog catalog2 = newCatalog();
-        project.addReference("catalog2", catalog1);
-
-        catalog1.setRefid(new Reference(project, "catalog"));
-        catalog2.setRefid(new Reference(project, "catalog1"));
-
-        InputSource isResult = catalog2.resolveEntity(publicId,
-                                                    "nap:chemical+brothers");
-
-        assertNotNull(isResult);
-        assertEquals(toURLString(dtdFile),
-                     isResult.getSystemId());
-
-
-            Source result = catalog.resolve(uri, null);
-            assertNotNull(result);
-            assertEquals(toURLString(xmlFile),
-                         result.getSystemId());
-    }
-
-    @Test
-    public void testNestedCatalog() throws IOException, SAXException, TransformerException {
-
-        String publicId = "-//stevo//DTD doc 1.0//EN";
-        String dtdLoc = "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
-
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId(publicId);
-        dtd.setLocation(dtdLoc);
-        catalog.addDTD(dtd);
-        File dtdFile = project.resolveFile(dtdLoc);
-
-        String uri = "http://foo.com/bar/blah.xml";
-        String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml";
-
-        ResourceLocation entity = new ResourceLocation();
-        entity.setPublicId(uri);
-        entity.setLocation(uriLoc);
-        catalog.addEntity(entity);
-        File xmlFile = project.resolveFile(uriLoc);
-
-        XMLCatalog catalog1 = newCatalog();
-        catalog1.addConfiguredXMLCatalog(catalog);
-
-        InputSource isResult = catalog1.resolveEntity(publicId,
-                                                    "nap:chemical+brothers");
-        assertNotNull(isResult);
-        assertEquals(toURLString(dtdFile),
-                     isResult.getSystemId());
-
-        Source result = catalog.resolve(uri, null);
-        assertNotNull(result);
-        assertEquals(toURLString(xmlFile),
-                     result.getSystemId());
-
-    }
-
-    @Test
-    public void testResolverBase() throws MalformedURLException, TransformerException {
-
-        String uri = "http://foo.com/bar/blah.xml";
-        String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml";
-        String base = toURLString(project.getBaseDir()) + "/src/";
-
-        ResourceLocation entity = new ResourceLocation();
-        entity.setPublicId(uri);
-        entity.setLocation(uriLoc);
-        catalog.addEntity(entity);
-        File xmlFile = project.resolveFile("src/" + uriLoc);
-
-        Source result = catalog.resolve(uri, base);
-        assertNotNull(result);
-        assertEquals(toURLString(xmlFile),
-                     result.getSystemId());
-
-    }
-
-    @Test
-    public void testClasspath() throws IOException, TransformerException, SAXException {
-
-
-        String publicId = "-//stevo//DTD doc 1.0//EN";
-        String dtdLoc = "testcases/taskdefs/optional/xml/doc.dtd";
-        String path1 = project.getBaseDir().toString() + "/src/etc";
-
-        ResourceLocation dtd = new ResourceLocation();
-        dtd.setPublicId(publicId);
-        dtd.setLocation(dtdLoc);
-        catalog.addDTD(dtd);
-        File dtdFile = project.resolveFile("src/etc/" + dtdLoc);
-
-        String uri = "http://foo.com/bar/blah.xml";
-        String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml";
-        String path2 = project.getBaseDir().toString() + "/src";
-
-        ResourceLocation entity = new ResourceLocation();
-        entity.setPublicId(uri);
-        entity.setLocation(uriLoc);
-        catalog.addEntity(entity);
-        File xmlFile = project.resolveFile("src/" + uriLoc);
-
-        Path aPath = new Path(project, path1);
-        aPath.append(new Path(project, path2));
-        catalog.setClasspath(aPath);
-
-        InputSource isResult = catalog.resolveEntity(publicId,
-                                                   "nap:chemical+brothers");
-        assertNotNull(isResult);
-        String resultStr1 = new URL(isResult.getSystemId()).getFile();
-        assertTrue(toURLString(dtdFile).endsWith(resultStr1));
-
-        Source result = catalog.resolve(uri, null);
-        assertNotNull(result);
-        String resultStr = new URL(result.getSystemId()).getFile();
-        assertTrue(toURLString(xmlFile).endsWith(resultStr));
-
-    }
-}
+/*
+ *  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.
+ *
+ */
+
+package org.apache.tools.ant.types;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.sax.SAXSource;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.JAXPUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * JUnit testcases for org.apache.tools.ant.types.XMLCatalog
+ *
+ */
+public class XMLCatalogTest {
+
+    private Project project;
+    private XMLCatalog catalog;
+
+    private XMLCatalog newCatalog() {
+        XMLCatalog cat = new XMLCatalog();
+        cat.setProject(project);
+        return cat;
+    }
+
+    private static String toURLString(File file) throws MalformedURLException {
+        return JAXPUtils.getSystemId(file);
+    }
+
+    @Before
+    public void setUp() {
+        project = new Project();
+        project.setBasedir(System.getProperty("root"));
+
+        // This causes XMLCatalog to print out detailed logging
+        // messages for debugging
+        //
+        // DefaultLogger logger = new DefaultLogger();
+        // logger.setMessageOutputLevel(Project.MSG_DEBUG);
+        // logger.setOutputPrintStream(System.out);
+        // logger.setErrorPrintStream(System.err);
+        // project.addBuildListener(logger);
+
+        catalog = newCatalog();
+    }
+
+    @Test
+    public void testEmptyCatalog() {
+        try {
+            InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
+                                                       "i/dont/exist.dtd");
+            assertNull("Empty catalog should return null", result);
+        } catch (Exception e) {
+            fail("resolveEntity() failed!" + e.toString());
+        }
+
+        try {
+            Source result = catalog.resolve("i/dont/exist.dtd", null);
+            String expected = toURLString(new File(project.getBaseDir() +
+                                                   "/i/dont/exist.dtd"));
+            String resultStr =
+                fileURLPartWithoutLeadingSlashes((SAXSource)result);
+            assertTrue("Empty catalog should return input with a system ID like "
+                       + expected + " but was " + resultStr,
+                       expected.endsWith(resultStr));
+        } catch (Exception e) {
+            fail("resolve() failed!" + e.toString());
+        }
+    }
+
+    private static String fileURLPartWithoutLeadingSlashes(SAXSource result)
+        throws MalformedURLException {
+        //
+        // These shenanigans are necessary b/c Norm Walsh's resolver
+        // has a different idea of how file URLs are created on windoze
+        // ie file://c:/foo instead of file:///c:/foo
+        //
+        String resultStr =
+            new URL(result.getInputSource().getSystemId()).getFile();
+        // on Sun's Java6 this returns an unexpected number of four
+        // leading slashes, at least on Linux - strip all of them
+        while (resultStr.startsWith("/")) {
+            resultStr = resultStr.substring(1);
+        }
+        return resultStr;
+    }
+
+    @Test
+    public void testNonExistentEntry() throws IOException, SAXException, TransformerException {
+
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId("PUBLIC ID ONE");
+        dtd.setLocation("i/dont/exist.dtd");
+
+        InputSource isResult = catalog.resolveEntity("PUBLIC ID ONE",
+                                                   "i/dont/exist.dtd");
+        assertNull("Nonexistent Catalog entry should not be returned", isResult);
+
+        Source result = catalog.resolve("i/dont/exist.dtd", null);
+        String expected = toURLString(new File(project.getBaseDir().toURL() +
+                                               "/i/dont/exist.dtd"));
+        String resultStr =
+            fileURLPartWithoutLeadingSlashes((SAXSource)result);
+        assertTrue("Nonexistent Catalog entry return input with a system ID like "
+                   + expected + " but was " + resultStr,
+                   expected.endsWith(resultStr));
+    }
+
+    @Test
+    public void testEmptyElementIfIsReference() {
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId("PUBLIC ID ONE");
+        dtd.setLocation("i/dont/exist.dtd");
+        catalog.addDTD(dtd);
+        project.addReference("catalog", catalog);
+
+        try {
+            catalog.setRefid(new Reference(project, "dummyref"));
+            fail("Can add reference to nonexistent XMLCatalog");
+        } catch (BuildException be) {
+            assertEquals("You must not specify more than one "
+                         + "attribute when using refid", be.getMessage());
+        }
+
+        XMLCatalog catalog2 = newCatalog();
+        catalog2.setRefid(new Reference(project, "catalog"));
+
+        try {
+            catalog2.addConfiguredXMLCatalog(catalog);
+            fail("Can add nested XMLCatalog to XMLCatalog that is a reference");
+        } catch (BuildException be) {
+            assertEquals("You must not specify nested elements when using refid",
+                         be.getMessage());
+        }
+    }
+
+    @Test
+    public void testCircularReferenceCheck() throws IOException, SAXException {
+
+        // catalog <--> catalog
+        project.addReference("catalog", catalog);
+        catalog.setRefid(new Reference(project, "catalog"));
+
+        try {
+            InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
+                                                       "i/dont/exist.dtd");
+            fail("Can make XMLCatalog a Reference to itself.");
+        } catch (BuildException be) {
+            assertEquals("This data type contains a circular reference.",
+                         be.getMessage());
+        } catch (Exception e) {
+            fail("resolveEntity() failed!" + e.toString());
+        }
+
+        // catalog1 --> catalog2 --> catalog3 --> catalog1
+        XMLCatalog catalog1 = newCatalog();
+        project.addReference("catalog1", catalog1);
+        XMLCatalog catalog2 = newCatalog();
+        project.addReference("catalog2", catalog2);
+        XMLCatalog catalog3 = newCatalog();
+        project.addReference("catalog3", catalog3);
+
+        catalog3.setRefid(new Reference(project, "catalog1"));
+        catalog2.setRefid(new Reference(project, "catalog3"));
+        catalog1.setRefid(new Reference(project, "catalog2"));
+
+        try {
+            catalog1.resolveEntity("PUBLIC ID ONE",
+                                                        "i/dont/exist.dtd");
+            fail("Can make circular reference");
+        } catch (BuildException be) {
+            assertEquals("This data type contains a circular reference.",
+                    be.getMessage());
+        }
+    }
+    // inspired by Bugzilla Report 23913
+    // a problem used to happen under Windows when the location of the DTD was given as an absolute path
+    // possibly with a mixture of file separators
+    @Test
+    public void testAbsolutePath() throws IOException, SAXException {
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId("-//stevo//DTD doc 1.0//EN");
+
+        String sysid = System.getProperty("root") + File.separator + "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
+        dtd.setLocation(sysid);
+        catalog.addDTD(dtd);
+        File dtdFile = project.resolveFile(sysid);
+
+        InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN",
+                                                   "nap:chemical+brothers");
+        assertNotNull(result);
+        assertEquals(toURLString(dtdFile),
+                     result.getSystemId());
+
+
+    }
+
+    @Test
+    public void testSimpleEntry() throws IOException, SAXException {
+
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId("-//stevo//DTD doc 1.0//EN");
+        String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
+        dtd.setLocation(sysid);
+        catalog.addDTD(dtd);
+        File dtdFile = project.resolveFile(sysid);
+
+        InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN",
+                                                   "nap:chemical+brothers");
+        assertNotNull(result);
+        assertEquals(toURLString(dtdFile),
+                     result.getSystemId());
+
+    }
+
+    @Test
+    public void testEntryReference() throws IOException, SAXException, TransformerException {
+
+        String publicId = "-//stevo//DTD doc 1.0//EN";
+        String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
+
+        // catalog2 --> catalog1 --> catalog
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId(publicId);
+        dtd.setLocation(sysid);
+        catalog.addDTD(dtd);
+        File dtdFile = project.resolveFile(sysid);
+
+        String uri = "http://foo.com/bar/blah.xml";
+        String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml";
+
+        ResourceLocation entity = new ResourceLocation();
+        entity.setPublicId(uri);
+        entity.setLocation(uriLoc);
+        catalog.addEntity(entity);
+        File xmlFile = project.resolveFile(uriLoc);
+
+        project.addReference("catalog", catalog);
+
+        XMLCatalog catalog1 = newCatalog();
+        project.addReference("catalog1", catalog1);
+        XMLCatalog catalog2 = newCatalog();
+        project.addReference("catalog2", catalog1);
+
+        catalog1.setRefid(new Reference(project, "catalog"));
+        catalog2.setRefid(new Reference(project, "catalog1"));
+
+        InputSource isResult = catalog2.resolveEntity(publicId,
+                                                    "nap:chemical+brothers");
+
+        assertNotNull(isResult);
+        assertEquals(toURLString(dtdFile),
+                     isResult.getSystemId());
+
+
+            Source result = catalog.resolve(uri, null);
+            assertNotNull(result);
+            assertEquals(toURLString(xmlFile),
+                         result.getSystemId());
+    }
+
+    @Test
+    public void testNestedCatalog() throws IOException, SAXException, TransformerException {
+
+        String publicId = "-//stevo//DTD doc 1.0//EN";
+        String dtdLoc = "src/etc/testcases/taskdefs/optional/xml/doc.dtd";
+
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId(publicId);
+        dtd.setLocation(dtdLoc);
+        catalog.addDTD(dtd);
+        File dtdFile = project.resolveFile(dtdLoc);
+
+        String uri = "http://foo.com/bar/blah.xml";
+        String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml";
+
+        ResourceLocation entity = new ResourceLocation();
+        entity.setPublicId(uri);
+        entity.setLocation(uriLoc);
+        catalog.addEntity(entity);
+        File xmlFile = project.resolveFile(uriLoc);
+
+        XMLCatalog catalog1 = newCatalog();
+        catalog1.addConfiguredXMLCatalog(catalog);
+
+        InputSource isResult = catalog1.resolveEntity(publicId,
+                                                    "nap:chemical+brothers");
+        assertNotNull(isResult);
+        assertEquals(toURLString(dtdFile),
+                     isResult.getSystemId());
+
+        Source result = catalog.resolve(uri, null);
+        assertNotNull(result);
+        assertEquals(toURLString(xmlFile),
+                     result.getSystemId());
+
+    }
+
+    @Test
+    public void testResolverBase() throws MalformedURLException, TransformerException {
+
+        String uri = "http://foo.com/bar/blah.xml";
+        String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml";
+        String base = toURLString(project.getBaseDir()) + "/src/";
+
+        ResourceLocation entity = new ResourceLocation();
+        entity.setPublicId(uri);
+        entity.setLocation(uriLoc);
+        catalog.addEntity(entity);
+        File xmlFile = project.resolveFile("src/" + uriLoc);
+
+        Source result = catalog.resolve(uri, base);
+        assertNotNull(result);
+        assertEquals(toURLString(xmlFile),
+                     result.getSystemId());
+
+    }
+
+    @Test
+    public void testClasspath() throws IOException, TransformerException, SAXException {
+
+
+        String publicId = "-//stevo//DTD doc 1.0//EN";
+        String dtdLoc = "testcases/taskdefs/optional/xml/doc.dtd";
+        String path1 = project.getBaseDir().toString() + "/src/etc";
+
+        ResourceLocation dtd = new ResourceLocation();
+        dtd.setPublicId(publicId);
+        dtd.setLocation(dtdLoc);
+        catalog.addDTD(dtd);
+        File dtdFile = project.resolveFile("src/etc/" + dtdLoc);
+
+        String uri = "http://foo.com/bar/blah.xml";
+        String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml";
+        String path2 = project.getBaseDir().toString() + "/src";
+
+        ResourceLocation entity = new ResourceLocation();
+        entity.setPublicId(uri);
+        entity.setLocation(uriLoc);
+        catalog.addEntity(entity);
+        File xmlFile = project.resolveFile("src/" + uriLoc);
+
+        Path aPath = new Path(project, path1);
+        aPath.append(new Path(project, path2));
+        catalog.setClasspath(aPath);
+
+        InputSource isResult = catalog.resolveEntity(publicId,
+                                                   "nap:chemical+brothers");
+        assertNotNull(isResult);
+        String resultStr1 = new URL(isResult.getSystemId()).getFile();
+        assertTrue(toURLString(dtdFile).endsWith(resultStr1));
+
+        Source result = catalog.resolve(uri, null);
+        assertNotNull(result);
+        String resultStr = new URL(result.getSystemId()).getFile();
+        assertTrue(toURLString(xmlFile).endsWith(resultStr));
+
+    }
+}