aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/launch/LocatorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/launch/LocatorTest.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/launch/LocatorTest.java180
1 files changed, 180 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/launch/LocatorTest.java b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/launch/LocatorTest.java
new file mode 100644
index 00000000..0c3c24fd
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/tests/junit/org/apache/tools/ant/launch/LocatorTest.java
@@ -0,0 +1,180 @@
+/*
+ * 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.launch;
+
+import java.io.File;
+
+import org.apache.tools.ant.taskdefs.condition.Os;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static junit.framework.Assert.assertEquals;
+import static org.apache.tools.ant.AntAssert.assertContains;
+import static org.junit.Assert.fail;
+
+/** Test the locator in the ant-launch JAR */
+public class LocatorTest {
+ private boolean windows;
+ private boolean unix;
+ private static final String LAUNCHER_JAR = "//morzine/slo/Java/Apache/ant/lib/ant-launcher.jar";
+ private static final String SHARED_JAR_URI = "jar:file:"+ LAUNCHER_JAR +"!/org/apache/tools/ant/launch/Launcher.class";
+
+
+ @Before
+ public void setUp() throws Exception {
+ windows = Os.isFamily(Os.FAMILY_DOS);
+ unix = Os.isFamily(Os.FAMILY_UNIX);
+ }
+
+ /**
+ * expect a uri to resolve to strings on different platforms
+ * @param uri uri to parse
+ * @param expectedUnix unix string (or null to skip that test)
+ * @param expectedDos DOS string (or null to skip that test)
+ * @return the resolved string
+ */
+ private String resolveTo(String uri, String expectedUnix, String expectedDos) {
+ String result = Locator.fromURI(uri);
+ assertResolved(uri, expectedUnix, result, unix);
+ assertResolved(uri, expectedDos, result, windows);
+ return result;
+ }
+
+ /**
+ * Assert something resolved
+ * @param uri original URI
+ * @param expectedResult what we expected
+ * @param result what we got
+ * @param enabled is the test enabled?
+ */
+ private void assertResolved(String uri, String expectedResult, String result, boolean enabled) {
+ if (enabled && expectedResult != null && expectedResult.length() > 0) {
+ assertEquals("Expected " + uri + " to resolve to \n" + expectedResult + "\n but got\n"
+ + result + "\n", expectedResult, result);
+ }
+ }
+
+ /**
+ * This asserts that we can round trip the path to a URI and back again
+ * @param path filename with no directory separators
+ * @return the trailing filename
+ */
+ private String assertResolves(String path) {
+ String asuri = new File(path).toURI().toASCIIString();
+ String fullpath = System.getProperty("user.dir") + File.separator + path;
+ String result = resolveTo(asuri, fullpath, fullpath);
+ return result.substring(result.lastIndexOf(File.separatorChar) + 1);
+ }
+
+
+ /**
+ * this isnt really a valid URI, except maybe in IE
+ * @throws Exception
+ */
+ public void testNetworkURI() throws Exception {
+ resolveTo("file:\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar", ""
+ + "\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar",
+ "\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar");
+ }
+
+ @Ignore("We don't appear to generate paths like this in the launcher")
+ @Test
+ public void testTripleForwardSlashNetworkURI() throws Exception {
+ resolveTo("file:///PC03/jclasses/lib/ant-1.7.0.jar",
+ "///PC03/jclasses/lib/ant-1.7.0.jar",
+ "\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar");
+ }
+
+ @Test
+ public void testUnixNetworkPath() throws Exception {
+ resolveTo("file://cluster/home/ant/lib",
+ "//cluster/home/ant/lib",
+ "\\\\cluster\\home\\ant\\lib");
+ }
+
+ @Test
+ public void testUnixPath() throws Exception {
+ resolveTo("file:/home/ant/lib", "/home/ant/lib", null);
+ }
+
+ @Test
+ public void testSpacedURI() throws Exception {
+ resolveTo("file:C:\\Program Files\\Ant\\lib",
+ "C:\\Program Files\\Ant\\lib",
+ "C:\\Program Files\\Ant\\lib");
+ }
+
+ /**
+ * Bug 42275; Ant failing to run off a remote share
+ * @throws Throwable if desired
+ */
+ @Test
+ public void testAntOnRemoteShare() throws Throwable {
+ String resolved=Locator.fromJarURI(SHARED_JAR_URI);
+ assertResolved(SHARED_JAR_URI, LAUNCHER_JAR, resolved, unix);
+ assertResolved(SHARED_JAR_URI, LAUNCHER_JAR.replace('/', '\\'),
+ resolved, windows);
+ }
+
+ /**
+ * Bug 42275; Ant failing to run off a remote share
+ *
+ * @throws Throwable if desired
+ */
+ @Test
+ public void testFileFromRemoteShare() throws Throwable {
+ String resolved = Locator.fromJarURI(SHARED_JAR_URI);
+ File f = new File(resolved);
+ String path = f.getAbsolutePath();
+ if (windows) {
+ assertEquals(0, path.indexOf("\\\\"));
+ }
+ }
+
+ @Test
+ public void testHttpURI() throws Exception {
+ String url = "http://ant.apache.org";
+ try {
+ Locator.fromURI(url);
+ fail("Exception should have been thrown");
+ } catch (IllegalArgumentException e) {
+ String message = e.getMessage();
+ assertContains(Locator.ERROR_NOT_FILE_URI, message);
+ assertContains(url, message);
+ }
+ }
+
+ @Test
+ public void testInternationalURI() throws Exception {
+ String result = assertResolves("L\u00f6wenbrau.aus.M\u00fcnchen");
+ char umlauted = result.charAt(1);
+ assertEquals("expected 0xf6 (\u00f6), but got " + Integer.toHexString(umlauted) + " '"
+ + umlauted + "'", 0xf6, umlauted);
+ assertEquals("file:/tmp/a%C3%A7a%C3%AD%20berry", Locator.encodeURI("file:/tmp/a\u00E7a\u00ED berry"));
+ assertEquals("file:/tmp/a\u00E7a\u00ED berry", Locator.decodeUri("file:/tmp/a%C3%A7a%C3%AD%20berry"));
+ assertEquals("file:/tmp/a\u00E7a\u00ED berry", Locator.decodeUri("file:/tmp/a\u00E7a\u00ED%20berry")); // #50543
+ assertEquals("file:/tmp/hezky \u010Desky", Locator.decodeUri("file:/tmp/hezky%20\u010Desky")); // non-ISO-8859-1 variant
+ }
+
+ @Test
+ public void testOddLowAsciiURI() throws Exception {
+ assertResolves("hash# and percent%");
+ }
+
+}