http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/DateUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/DateUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/DateUtilsTest.java index 4f5aa84..8a0a8dc 100644 --- a/src/tests/junit/org/apache/tools/ant/util/DateUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/DateUtilsTest.java @@ -1,106 +1,106 @@ -/* - * 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.util; - -import java.util.Calendar; -import java.util.TimeZone; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -/** - * TestCase for DateUtils. - * - */ -public class DateUtilsTest { - - - @Test - public void testElapsedTime(){ - String text = DateUtils.formatElapsedTime(50*1000); - assertEquals("50 seconds", text); - text = DateUtils.formatElapsedTime(65*1000); - assertEquals("1 minute 5 seconds", text); - text = DateUtils.formatElapsedTime(120*1000); - assertEquals("2 minutes 0 seconds", text); - text = DateUtils.formatElapsedTime(121*1000); - assertEquals("2 minutes 1 second", text); - } - - // https://issues.apache.org/bugzilla/show_bug.cgi?id=44659 - @Test - public void testLongElapsedTime(){ - assertEquals("2926 minutes 13 seconds", - DateUtils.formatElapsedTime(1000 * 175573)); - assertEquals("153722867280912 minutes 55 seconds", - DateUtils.formatElapsedTime(Long.MAX_VALUE)); - } - - @Test - public void testDateTimeISO(){ - TimeZone timeZone = TimeZone.getTimeZone("GMT+1"); - Calendar cal = Calendar.getInstance(timeZone); - cal.set(2002,1,23,10,11,12); - String text = DateUtils.format(cal.getTime(), - DateUtils.ISO8601_DATETIME_PATTERN); - assertEquals("2002-02-23T09:11:12", text); - } - - @Test - public void testDateISO(){ - TimeZone timeZone = TimeZone.getTimeZone("GMT"); - Calendar cal = Calendar.getInstance(timeZone); - cal.set(2002,1,23); - String text = DateUtils.format(cal.getTime(), - DateUtils.ISO8601_DATE_PATTERN); - assertEquals("2002-02-23", text); - } - - @Test - public void testTimeISODate(){ - // make sure that elapsed time in set via date works - TimeZone timeZone = TimeZone.getTimeZone("GMT+1"); - Calendar cal = Calendar.getInstance(timeZone); - cal.set(2002,1,23, 21, 11, 12); - String text = DateUtils.format(cal.getTime(), - DateUtils.ISO8601_TIME_PATTERN); - assertEquals("20:11:12", text); - } - - @Test - public void testTimeISO(){ - // make sure that elapsed time in ms works - long ms = (20*3600 + 11*60 + 12)*1000; - String text = DateUtils.format(ms, - DateUtils.ISO8601_TIME_PATTERN); - assertEquals("20:11:12", text); - } - - @Test - public void testPhaseOfMoon() { - TimeZone timeZone = TimeZone.getTimeZone("GMT"); - Calendar cal = Calendar.getInstance(timeZone); - // should be full moon - cal.set(2002, 2, 27); - assertEquals(4, DateUtils.getPhaseOfMoon(cal)); - // should be new moon - cal.set(2002, 2, 12); - assertEquals(0, DateUtils.getPhaseOfMoon(cal)); - } -} +/* + * 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.util; + +import java.util.Calendar; +import java.util.TimeZone; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * TestCase for DateUtils. + * + */ +public class DateUtilsTest { + + + @Test + public void testElapsedTime(){ + String text = DateUtils.formatElapsedTime(50*1000); + assertEquals("50 seconds", text); + text = DateUtils.formatElapsedTime(65*1000); + assertEquals("1 minute 5 seconds", text); + text = DateUtils.formatElapsedTime(120*1000); + assertEquals("2 minutes 0 seconds", text); + text = DateUtils.formatElapsedTime(121*1000); + assertEquals("2 minutes 1 second", text); + } + + // https://issues.apache.org/bugzilla/show_bug.cgi?id=44659 + @Test + public void testLongElapsedTime(){ + assertEquals("2926 minutes 13 seconds", + DateUtils.formatElapsedTime(1000 * 175573)); + assertEquals("153722867280912 minutes 55 seconds", + DateUtils.formatElapsedTime(Long.MAX_VALUE)); + } + + @Test + public void testDateTimeISO(){ + TimeZone timeZone = TimeZone.getTimeZone("GMT+1"); + Calendar cal = Calendar.getInstance(timeZone); + cal.set(2002,1,23,10,11,12); + String text = DateUtils.format(cal.getTime(), + DateUtils.ISO8601_DATETIME_PATTERN); + assertEquals("2002-02-23T09:11:12", text); + } + + @Test + public void testDateISO(){ + TimeZone timeZone = TimeZone.getTimeZone("GMT"); + Calendar cal = Calendar.getInstance(timeZone); + cal.set(2002,1,23); + String text = DateUtils.format(cal.getTime(), + DateUtils.ISO8601_DATE_PATTERN); + assertEquals("2002-02-23", text); + } + + @Test + public void testTimeISODate(){ + // make sure that elapsed time in set via date works + TimeZone timeZone = TimeZone.getTimeZone("GMT+1"); + Calendar cal = Calendar.getInstance(timeZone); + cal.set(2002,1,23, 21, 11, 12); + String text = DateUtils.format(cal.getTime(), + DateUtils.ISO8601_TIME_PATTERN); + assertEquals("20:11:12", text); + } + + @Test + public void testTimeISO(){ + // make sure that elapsed time in ms works + long ms = (20*3600 + 11*60 + 12)*1000; + String text = DateUtils.format(ms, + DateUtils.ISO8601_TIME_PATTERN); + assertEquals("20:11:12", text); + } + + @Test + public void testPhaseOfMoon() { + TimeZone timeZone = TimeZone.getTimeZone("GMT"); + Calendar cal = Calendar.getInstance(timeZone); + // should be full moon + cal.set(2002, 2, 27); + assertEquals(4, DateUtils.getPhaseOfMoon(cal)); + // should be new moon + cal.set(2002, 2, 12); + assertEquals(0, DateUtils.getPhaseOfMoon(cal)); + } +}
http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/DeweyDecimalTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/DeweyDecimalTest.java b/src/tests/junit/org/apache/tools/ant/util/DeweyDecimalTest.java index bcda609..2e27cde 100644 --- a/src/tests/junit/org/apache/tools/ant/util/DeweyDecimalTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/DeweyDecimalTest.java @@ -1,70 +1,70 @@ -/* - * 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.util; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import org.junit.Test; - -@SuppressWarnings("ResultOfObjectAllocationIgnored") -public class DeweyDecimalTest { - - @Test public void parse() { - assertEquals("1.2.3", new DeweyDecimal("1.2.3").toString()); - } - - @Test(expected=NumberFormatException.class) public void misparseEmpty() { - new DeweyDecimal("1..2"); - } - - @Test(expected=NumberFormatException.class) public void misparseNonNumeric() { - new DeweyDecimal("1.2.3-beta-5"); - } - - @Test(expected=NumberFormatException.class) public void misparseFinalDot() { - new DeweyDecimal("1.2."); - } - - // TODO initial dots, empty string, null, negative numbers, ... - - @Test public void testHashCode() { - assertEquals(new DeweyDecimal("1.2.3").hashCode(), new DeweyDecimal("1.2.3").hashCode()); - } - - @Test public void testEquals() { - assertTrue(new DeweyDecimal("1.2.3").equals(new DeweyDecimal("1.2.3"))); - assertFalse(new DeweyDecimal("1.2.3").equals(new DeweyDecimal("1.2.4"))); - assertTrue(new DeweyDecimal("1.2.0").equals(new DeweyDecimal("1.2"))); - assertTrue(new DeweyDecimal("1.2").equals(new DeweyDecimal("1.2.0"))); - } - - @Test public void compareTo() { - assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.2")) > 0); - assertTrue(new DeweyDecimal("1.2").compareTo(new DeweyDecimal("1.2.3")) < 0); - assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.2.3")) == 0); - assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.1.4")) > 0); - assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.2.2.9")) > 0); - assertTrue(new DeweyDecimal("1.2.0").compareTo(new DeweyDecimal("1.2")) == 0); - assertTrue(new DeweyDecimal("1.2").compareTo(new DeweyDecimal("1.2.0")) == 0); - } - - // TODO isGreaterThan, ... - -} +/* + * 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.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +@SuppressWarnings("ResultOfObjectAllocationIgnored") +public class DeweyDecimalTest { + + @Test public void parse() { + assertEquals("1.2.3", new DeweyDecimal("1.2.3").toString()); + } + + @Test(expected=NumberFormatException.class) public void misparseEmpty() { + new DeweyDecimal("1..2"); + } + + @Test(expected=NumberFormatException.class) public void misparseNonNumeric() { + new DeweyDecimal("1.2.3-beta-5"); + } + + @Test(expected=NumberFormatException.class) public void misparseFinalDot() { + new DeweyDecimal("1.2."); + } + + // TODO initial dots, empty string, null, negative numbers, ... + + @Test public void testHashCode() { + assertEquals(new DeweyDecimal("1.2.3").hashCode(), new DeweyDecimal("1.2.3").hashCode()); + } + + @Test public void testEquals() { + assertTrue(new DeweyDecimal("1.2.3").equals(new DeweyDecimal("1.2.3"))); + assertFalse(new DeweyDecimal("1.2.3").equals(new DeweyDecimal("1.2.4"))); + assertTrue(new DeweyDecimal("1.2.0").equals(new DeweyDecimal("1.2"))); + assertTrue(new DeweyDecimal("1.2").equals(new DeweyDecimal("1.2.0"))); + } + + @Test public void compareTo() { + assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.2")) > 0); + assertTrue(new DeweyDecimal("1.2").compareTo(new DeweyDecimal("1.2.3")) < 0); + assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.2.3")) == 0); + assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.1.4")) > 0); + assertTrue(new DeweyDecimal("1.2.3").compareTo(new DeweyDecimal("1.2.2.9")) > 0); + assertTrue(new DeweyDecimal("1.2.0").compareTo(new DeweyDecimal("1.2")) == 0); + assertTrue(new DeweyDecimal("1.2").compareTo(new DeweyDecimal("1.2.0")) == 0); + } + + // TODO isGreaterThan, ... + +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java index d0361cc..ae9b73b 100644 --- a/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java @@ -1,625 +1,625 @@ -/* - * 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.util; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.taskdefs.condition.Os; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.junit.Assume.assumeTrue; - -/** - * Tests for org.apache.tools.ant.util.FileUtils. - * - */ -public class FileUtilsTest { - - private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); - private File removeThis; - private String root; - - - @Before - public void setUp() { - // Windows adds the drive letter in uppercase, unless you run Cygwin - root = new File(File.separator).getAbsolutePath().toUpperCase(); - } - - @After - public void tearDown() { - if (removeThis != null && removeThis.exists()) { - if (!removeThis.delete()) - { - removeThis.deleteOnExit(); - } - } - } - - /** - * test modification. - * Since Ant1.7, the method being tested no longer uses - * reflection to provide backwards support to Java1.1, so this - * test is not so critical. But it does explore file system - * behaviour and will help catch any regression in Java itself, - * so is worth retaining. - * @see FileUtils#setFileLastModified(java.io.File, long) - * @throws IOException - */ - @Test - public void testSetLastModified() throws IOException { - removeThis = new File("dummy"); - FileOutputStream fos = new FileOutputStream(removeThis); - fos.write(new byte[0]); - fos.close(); - assumeTrue("Could not change file modified time", removeThis.setLastModified(removeThis.lastModified() - 2000)); - long modTime = removeThis.lastModified(); - assertTrue(modTime != 0); - - - FILE_UTILS.setFileLastModified(removeThis, -1); - long secondModTime = removeThis.lastModified(); - assertTrue(secondModTime > modTime); - - // number of milliseconds in a day - final int millisperday=24 * 3600 * 1000; - // in a previous version, the date of the file was set to 123456 - // milliseconds since 01.01.1970 - // it did not work on a computer running JDK 1.4.1_02 + Windows 2000 - FILE_UTILS.setFileLastModified(removeThis, secondModTime + millisperday); - long thirdModTime = removeThis.lastModified(); - /* - * I would love to compare this with 123456, but depending on - * the filesystems granularity it can take an arbitrary value. - * - * Just assert the time has changed. - */ - assertTrue(thirdModTime != secondModTime); - } - - @Test - public void testResolveFile() { - if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { - /* - * Start with simple absolute file names. - */ - assertEquals(File.separator, - FILE_UTILS.resolveFile(null, "/").getPath()); - assertEquals(File.separator, - FILE_UTILS.resolveFile(null, "\\").getPath()); - } else { - assertEqualsIgnoreDriveCase(localize(File.separator), - FILE_UTILS.resolveFile(null, "/").getPath()); - assertEqualsIgnoreDriveCase(localize(File.separator), - FILE_UTILS.resolveFile(null, "\\").getPath()); - /* - * throw in drive letters - */ - String driveSpec = "C:"; - assertEquals(driveSpec + "\\", - FILE_UTILS.resolveFile(null, driveSpec + "/").getPath()); - assertEquals(driveSpec + "\\", - FILE_UTILS.resolveFile(null, driveSpec + "\\").getPath()); - String driveSpecLower = "c:"; - assertEquals(driveSpecLower + "\\", - FILE_UTILS.resolveFile(null, driveSpecLower + "/").getPath()); - assertEquals(driveSpecLower + "\\", - FILE_UTILS.resolveFile(null, driveSpecLower + "\\").getPath()); - /* - * promised to eliminate consecutive slashes after drive letter. - */ - assertEquals(driveSpec + "\\", - FILE_UTILS.resolveFile(null, driveSpec + "/////").getPath()); - assertEquals(driveSpec + "\\", - FILE_UTILS.resolveFile(null, driveSpec + "\\\\\\\\\\\\").getPath()); - } - if (Os.isFamily("netware")) { - /* - * throw in NetWare volume names - */ - String driveSpec = "SYS:"; - assertEquals(driveSpec, - FILE_UTILS.resolveFile(null, driveSpec + "/").getPath()); - assertEquals(driveSpec, - FILE_UTILS.resolveFile(null, driveSpec + "\\").getPath()); - String driveSpecLower = "sys:"; - assertEquals(driveSpec, - FILE_UTILS.resolveFile(null, driveSpecLower + "/").getPath()); - assertEquals(driveSpec, - FILE_UTILS.resolveFile(null, driveSpecLower + "\\").getPath()); - /* - * promised to eliminate consecutive slashes after drive letter. - */ - assertEquals(driveSpec, - FILE_UTILS.resolveFile(null, driveSpec + "/////").getPath()); - assertEquals(driveSpec, - FILE_UTILS.resolveFile(null, driveSpec + "\\\\\\\\\\\\").getPath()); - } else if (!(Os.isFamily("dos"))) { - /* - * drive letters must be considered just normal filenames. - */ - String driveSpec = "C:"; - String udir = System.getProperty("user.dir"); - assertEquals(udir + File.separator + driveSpec, - FILE_UTILS.resolveFile(null, driveSpec + "/").getPath()); - assertEquals(udir + File.separator + driveSpec, - FILE_UTILS.resolveFile(null, driveSpec + "\\").getPath()); - String driveSpecLower = "c:"; - assertEquals(udir + File.separator + driveSpecLower, - FILE_UTILS.resolveFile(null, driveSpecLower + "/").getPath()); - assertEquals(udir + File.separator + driveSpecLower, - FILE_UTILS.resolveFile(null, driveSpecLower + "\\").getPath()); - } - - /* - * Now test some relative file name magic. - */ - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "./4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), ".\\4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "./.\\4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "../3/4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "..\\3\\4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "../../5/.././2/./3/6/../4").getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "..\\../5/..\\./2/./3/6\\../4").getPath()); - - assertEquals("meaningless result but no exception", - new File(localize("/1/../../b")), - FILE_UTILS.resolveFile(new File(localize("/1")), "../../b")); - - } - - @Test - public void testNormalize() { - if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { - /* - * Start with simple absolute file names. - */ - assertEquals(File.separator, - FILE_UTILS.normalize("/").getPath()); - assertEquals(File.separator, - FILE_UTILS.normalize("\\").getPath()); - } else { - try { - FILE_UTILS.normalize("/").getPath(); - fail("normalized \"/\" on dos or netware"); - } catch (Exception e) { - } - try { - FILE_UTILS.normalize("\\").getPath(); - fail("normalized \"\\\" on dos or netware"); - } catch (Exception e) { - } - } - - if (Os.isFamily("dos")) { - /* - * throw in drive letters - */ - String driveSpec = "C:"; - try { - FILE_UTILS.normalize(driveSpec).getPath(); - fail(driveSpec + " is not an absolute path"); - } catch (Exception e) { - } - assertEquals(driveSpec + "\\", - FILE_UTILS.normalize(driveSpec + "/").getPath()); - assertEquals(driveSpec + "\\", - FILE_UTILS.normalize(driveSpec + "\\").getPath()); - String driveSpecLower = "c:"; - assertEquals(driveSpecLower + "\\", - FILE_UTILS.normalize(driveSpecLower + "/").getPath()); - assertEquals(driveSpecLower + "\\", - FILE_UTILS.normalize(driveSpecLower + "\\").getPath()); - /* - * promised to eliminate consecutive slashes after drive letter. - */ - assertEquals(driveSpec + "\\", - FILE_UTILS.normalize(driveSpec + "/////").getPath()); - assertEquals(driveSpec + "\\", - FILE_UTILS.normalize(driveSpec + "\\\\\\\\\\\\").getPath()); - } else if (Os.isFamily("netware")) { - /* - * throw in NetWare volume names - */ - String driveSpec = "SYS:"; - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpec).getPath()); - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpec + "/").getPath()); - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpec + "\\").getPath()); - String driveSpecLower = "sys:"; - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpecLower).getPath()); - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpecLower + "/").getPath()); - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpecLower + "\\").getPath()); - assertEquals(driveSpec + "\\junk", - FILE_UTILS.normalize(driveSpecLower + "\\junk").getPath()); - /* - * promised to eliminate consecutive slashes after drive letter. - */ - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpec + "/////").getPath()); - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpec + "\\\\\\\\\\\\").getPath()); - } else { - try { - String driveSpec = "C:"; - assertEquals(driveSpec, - FILE_UTILS.normalize(driveSpec).getPath()); - fail("Expected failure, C: isn't an absolute path on other os's"); - } catch (BuildException e) { - // Passed test - } - } - - /* - * Now test some relative file name magic. - */ - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/./4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/.\\4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/./.\\4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/../3/4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/..\\3\\4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/../../5/.././2/./3/6/../4")).getPath()); - assertEquals(localize("/1/2/3/4"), - FILE_UTILS.normalize(localize("/1/2/3/..\\../5/..\\./2/./3/6\\../4")).getPath()); - - try { - FILE_UTILS.normalize("foo"); - fail("foo is not an absolute path"); - } catch (BuildException e) { - // Expected exception caught - } - - assertEquals("will not go outside FS root (but will not throw an exception either)", - new File(localize("/1/../../b")), - FILE_UTILS.normalize(localize("/1/../../b"))); - } - - /** - * Test handling of null arguments. - */ - @Test - public void testNullArgs() { - try { - FILE_UTILS.normalize(null); - fail("successfully normalized a null-file"); - } catch (NullPointerException npe) { - // Expected exception caught - } - - File f = FILE_UTILS.resolveFile(null, "a"); - assertEquals(f, new File("a").getAbsoluteFile()); - } - - - /** - * Test createTempFile - */ - @Test - public void testCreateTempFile() - { - // null parent dir - File tmp1 = FILE_UTILS.createTempFile("pre", ".suf", null, false, true); - String tmploc = System.getProperty("java.io.tmpdir"); - String name = tmp1.getName(); - assertTrue("starts with pre", name.startsWith("pre")); - assertTrue("ends with .suf", name.endsWith(".suf")); - assertTrue("File was created", tmp1.exists()); - assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(), tmp1 - .getAbsolutePath()); - tmp1.delete(); - - File dir2 = new File(tmploc + "/ant-test"); - dir2.mkdir(); - removeThis = dir2; - - File tmp2 = FILE_UTILS.createTempFile("pre", ".suf", dir2, true, true); - String name2 = tmp2.getName(); - assertTrue("starts with pre", name2.startsWith("pre")); - assertTrue("ends with .suf", name2.endsWith(".suf")); - assertTrue("File was created", tmp2.exists()); - assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(), tmp2 - .getAbsolutePath()); - tmp2.delete(); - dir2.delete(); - - File parent = new File((new File("/tmp")).getAbsolutePath()); - tmp1 = FILE_UTILS.createTempFile("pre", ".suf", parent, false); - assertTrue("new file", !tmp1.exists()); - - name = tmp1.getName(); - assertTrue("starts with pre", name.startsWith("pre")); - assertTrue("ends with .suf", name.endsWith(".suf")); - assertEquals("is inside parent dir", parent.getAbsolutePath(), tmp1 - .getParent()); - - tmp2 = FILE_UTILS.createTempFile("pre", ".suf", parent, false); - assertTrue("files are different", !tmp1.getAbsolutePath().equals( - tmp2.getAbsolutePath())); - - // null parent dir - File tmp3 = FILE_UTILS.createTempFile("pre", ".suf", null, false); - tmploc = System.getProperty("java.io.tmpdir"); - assertEquals((new File(tmploc, tmp3.getName())).getAbsolutePath(), tmp3 - .getAbsolutePath()); - } - - /** - * Test contentEquals - */ - @Test - public void testContentEquals() throws IOException { - assertTrue("Non existing files", FILE_UTILS.contentEquals(new File(System.getProperty("root"), "foo"), - new File(System.getProperty("root"), "bar"))); - assertTrue("One exists, the other one doesn\'t", - !FILE_UTILS.contentEquals(new File(System.getProperty("root"), "foo"), new File(System.getProperty("root"), "build.xml"))); - assertTrue("Don\'t compare directories", - !FILE_UTILS.contentEquals(new File(System.getProperty("root"), "src"), new File(System.getProperty("root"), "src"))); - assertTrue("File equals itself", - FILE_UTILS.contentEquals(new File(System.getProperty("root"), "build.xml"), - new File(System.getProperty("root"), "build.xml"))); - assertTrue("Files are different", - !FILE_UTILS.contentEquals(new File(System.getProperty("root"), "build.xml"), - new File(System.getProperty("root"), "docs.xml"))); - } - - /** - * Test createNewFile - */ - @Test - public void testCreateNewFile() throws IOException { - removeThis = new File("dummy"); - assertTrue(!removeThis.exists()); - FILE_UTILS.createNewFile(removeThis); - assertTrue(removeThis.exists()); - } - - /** - * Test removeLeadingPath. - */ - @Test - public void testRemoveLeadingPath() { - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("/foo"), - new File("/foo/bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("/foo/"), - new File("/foo/bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("\\foo"), - new File("\\foo\\bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("\\foo\\"), - new File("\\foo\\bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:/foo"), - new File("c:/foo/bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:/foo/"), - new File("c:/foo/bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:\\foo"), - new File("c:\\foo\\bar"))); - assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:\\foo\\"), - new File("c:\\foo\\bar"))); - if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { - assertEquals(FILE_UTILS.normalize("/bar").getAbsolutePath(), - FILE_UTILS.removeLeadingPath(new File("/foo"), new File("/bar"))); - assertEquals(FILE_UTILS.normalize("/foobar").getAbsolutePath(), - FILE_UTILS.removeLeadingPath(new File("/foo"), new File("/foobar"))); - } - // bugzilla report 19979 - assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar"), - new File("/foo/bar"))); - assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar"), - new File("/foo/bar/"))); - assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar/"), - new File("/foo/bar/"))); - assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar/"), - new File("/foo/bar"))); - - String expected = "foo/bar".replace('\\', File.separatorChar) - .replace('/', File.separatorChar); - assertEquals(expected, FILE_UTILS.removeLeadingPath(new File("/"), - new File("/foo/bar"))); - assertEquals(expected, FILE_UTILS.removeLeadingPath(new File("c:/"), - new File("c:/foo/bar"))); - assertEquals(expected, FILE_UTILS.removeLeadingPath(new File("c:\\"), - new File("c:\\foo\\bar"))); - } - - /** - * test toUri - */ - @Test - public void testToURI() { - String dosRoot; - if (Os.isFamily("dos") || Os.isFamily("netware")) { - dosRoot = System.getProperty("user.dir") - .substring(0, 3).replace(File.separatorChar, '/'); - } - else - { - dosRoot = ""; - } - if (Os.isFamily("dos")) { - assertEquals("file:/c:/foo", removeExtraneousAuthority(FILE_UTILS.toURI("c:\\foo"))); - } - if (Os.isFamily("netware")) { - assertEquals("file:/SYS:/foo", removeExtraneousAuthority(FILE_UTILS.toURI("sys:\\foo"))); - } - if (File.pathSeparatorChar == '/') { - assertEquals("file:/foo", removeExtraneousAuthority(FILE_UTILS.toURI("/foo"))); - assertTrue("file: URIs must name absolute paths", FILE_UTILS.toURI("./foo").startsWith("file:/")); - assertTrue(FILE_UTILS.toURI("./foo").endsWith("/foo")); - assertEquals("file:/" + dosRoot + "foo%20bar", removeExtraneousAuthority(FILE_UTILS.toURI("/foo bar"))); - assertEquals("file:/" + dosRoot + "foo%23bar", removeExtraneousAuthority(FILE_UTILS.toURI("/foo#bar"))); - } else if (File.pathSeparatorChar == '\\') { - assertEquals("file:/" + dosRoot + "foo", removeExtraneousAuthority(FILE_UTILS.toURI("\\foo"))); - assertTrue("file: URIs must name absolute paths", FILE_UTILS.toURI(".\\foo").startsWith("file:/")); - assertTrue(FILE_UTILS.toURI(".\\foo").endsWith("/foo")); - assertEquals("file:/" + dosRoot + "foo%20bar", removeExtraneousAuthority(FILE_UTILS.toURI("\\foo bar"))); - assertEquals("file:/" + dosRoot + "foo%23bar", removeExtraneousAuthority(FILE_UTILS.toURI("\\foo#bar"))); - } - // a test with ant for germans - // the escaped character used for the test is the "a umlaut" - // this is the fix for the bug 37348 - assertEquals("file:/" + dosRoot + "%C3%A4nt", removeExtraneousAuthority(FILE_UTILS.toURI("/\u00E4nt"))); - } - - /** - * Authority field is unnecessary, but harmless, in file: URIs. - * Java 1.4 does not produce it when using File.toURI. - */ - private static String removeExtraneousAuthority(String uri) { - String prefix = "file:///"; - if (uri.startsWith(prefix)) { - return "file:/" + uri.substring(prefix.length()); - } else { - return uri; - } - } - - @Test - public void testIsContextRelativePath() { - assumeTrue("Test only runs on DOS", Os.isFamily("dos")); - assertTrue(FileUtils.isContextRelativePath("/\u00E4nt")); - assertTrue(FileUtils.isContextRelativePath("\\foo")); - } - - /** - * test fromUri - */ - @Test - public void testFromURI() { - String dosRoot; - if (Os.isFamily("dos") || Os.isFamily("netware")) { - dosRoot = System.getProperty("user.dir").substring(0, 2); - } else { - dosRoot = ""; - } - if (Os.isFamily("netware")) { - assertEqualsIgnoreDriveCase("SYS:\\foo", FILE_UTILS.fromURI("file:///sys:/foo")); - } - if (Os.isFamily("dos")) { - assertEqualsIgnoreDriveCase("C:\\foo", FILE_UTILS.fromURI("file:///c:/foo")); - } - assertEqualsIgnoreDriveCase(dosRoot + File.separator + "foo", FILE_UTILS.fromURI("file:///foo")); - assertEquals("." + File.separator + "foo", - FILE_UTILS.fromURI("file:./foo")); - assertEquals(dosRoot + File.separator + "foo bar", FILE_UTILS.fromURI("file:///foo%20bar")); - assertEquals(dosRoot + File.separator + "foo#bar", FILE_UTILS.fromURI("file:///foo%23bar")); - } - - @Test - public void testModificationTests() { - - //get a time - long firstTime=System.currentTimeMillis(); - //add some time. We assume no OS has a granularity this bad - long secondTime=firstTime+60000; -/* - assertTrue("same timestamp is up to date", - fu.isUpToDate(firstTime, firstTime)); - */ - - //check that older is up to date with a newer dest - assertTrue("older source files are up to date", - FILE_UTILS.isUpToDate(firstTime,secondTime)); - //check that older is up to date with a newer dest - assertFalse("newer source files are no up to date", - FILE_UTILS.isUpToDate(secondTime, firstTime)); - - assertTrue("-1 dest timestamp implies nonexistence", - !FILE_UTILS.isUpToDate(firstTime,-1L)); - } - - @Test - public void testHasErrorInCase() { - File tempFolder = new File(System.getProperty("java.io.tmpdir")); - File wellcased = FILE_UTILS.createTempFile("alpha", "beta", tempFolder, - true, true); - String s = wellcased.getName().toUpperCase(); - File wrongcased = new File(tempFolder, s); - if (Os.isFamily("mac") && Os.isFamily("unix")) { - //no guarantees on filesystem case-sensitivity - } else if (Os.isFamily("dos")) { - assertTrue(FILE_UTILS.hasErrorInCase(wrongcased)); - assertFalse(FILE_UTILS.hasErrorInCase(wellcased)); - } else { - assertFalse(FILE_UTILS.hasErrorInCase(wrongcased)); - assertFalse(FILE_UTILS.hasErrorInCase(wellcased)); - } - - } - public void testGetDefaultEncoding() { - // This just tests that the function does not blow up - FILE_UTILS.getDefaultEncoding(); - } - - /** - * adapt file separators to local conventions - */ - private String localize(String path) { - path = root + path.substring(1); - return path.replace('\\', File.separatorChar).replace('/', File.separatorChar); - } - - /** - * convenience method - * normalize brings the drive in uppercase - * the drive letter is in lower case under cygwin - * calling this method allows tests where normalize is called to pass under cygwin - */ - private void assertEqualsIgnoreDriveCase(String s1, String s2) { - if ((Os.isFamily("dos") || Os.isFamily("netware")) - && s1.length() > 0 && s2.length() > 0) { - StringBuilder sb1 = new StringBuilder(s1); - StringBuilder sb2 = new StringBuilder(s2); - sb1.setCharAt(0, Character.toUpperCase(s1.charAt(0))); - sb2.setCharAt(0, Character.toUpperCase(s2.charAt(0))); - assertEquals(sb1.toString(), sb2.toString()); - } else { - assertEquals(s1, s2); - } - } -} +/* + * 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.util; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.taskdefs.condition.Os; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.junit.Assume.assumeTrue; + +/** + * Tests for org.apache.tools.ant.util.FileUtils. + * + */ +public class FileUtilsTest { + + private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); + private File removeThis; + private String root; + + + @Before + public void setUp() { + // Windows adds the drive letter in uppercase, unless you run Cygwin + root = new File(File.separator).getAbsolutePath().toUpperCase(); + } + + @After + public void tearDown() { + if (removeThis != null && removeThis.exists()) { + if (!removeThis.delete()) + { + removeThis.deleteOnExit(); + } + } + } + + /** + * test modification. + * Since Ant1.7, the method being tested no longer uses + * reflection to provide backwards support to Java1.1, so this + * test is not so critical. But it does explore file system + * behaviour and will help catch any regression in Java itself, + * so is worth retaining. + * @see FileUtils#setFileLastModified(java.io.File, long) + * @throws IOException + */ + @Test + public void testSetLastModified() throws IOException { + removeThis = new File("dummy"); + FileOutputStream fos = new FileOutputStream(removeThis); + fos.write(new byte[0]); + fos.close(); + assumeTrue("Could not change file modified time", removeThis.setLastModified(removeThis.lastModified() - 2000)); + long modTime = removeThis.lastModified(); + assertTrue(modTime != 0); + + + FILE_UTILS.setFileLastModified(removeThis, -1); + long secondModTime = removeThis.lastModified(); + assertTrue(secondModTime > modTime); + + // number of milliseconds in a day + final int millisperday=24 * 3600 * 1000; + // in a previous version, the date of the file was set to 123456 + // milliseconds since 01.01.1970 + // it did not work on a computer running JDK 1.4.1_02 + Windows 2000 + FILE_UTILS.setFileLastModified(removeThis, secondModTime + millisperday); + long thirdModTime = removeThis.lastModified(); + /* + * I would love to compare this with 123456, but depending on + * the filesystems granularity it can take an arbitrary value. + * + * Just assert the time has changed. + */ + assertTrue(thirdModTime != secondModTime); + } + + @Test + public void testResolveFile() { + if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { + /* + * Start with simple absolute file names. + */ + assertEquals(File.separator, + FILE_UTILS.resolveFile(null, "/").getPath()); + assertEquals(File.separator, + FILE_UTILS.resolveFile(null, "\\").getPath()); + } else { + assertEqualsIgnoreDriveCase(localize(File.separator), + FILE_UTILS.resolveFile(null, "/").getPath()); + assertEqualsIgnoreDriveCase(localize(File.separator), + FILE_UTILS.resolveFile(null, "\\").getPath()); + /* + * throw in drive letters + */ + String driveSpec = "C:"; + assertEquals(driveSpec + "\\", + FILE_UTILS.resolveFile(null, driveSpec + "/").getPath()); + assertEquals(driveSpec + "\\", + FILE_UTILS.resolveFile(null, driveSpec + "\\").getPath()); + String driveSpecLower = "c:"; + assertEquals(driveSpecLower + "\\", + FILE_UTILS.resolveFile(null, driveSpecLower + "/").getPath()); + assertEquals(driveSpecLower + "\\", + FILE_UTILS.resolveFile(null, driveSpecLower + "\\").getPath()); + /* + * promised to eliminate consecutive slashes after drive letter. + */ + assertEquals(driveSpec + "\\", + FILE_UTILS.resolveFile(null, driveSpec + "/////").getPath()); + assertEquals(driveSpec + "\\", + FILE_UTILS.resolveFile(null, driveSpec + "\\\\\\\\\\\\").getPath()); + } + if (Os.isFamily("netware")) { + /* + * throw in NetWare volume names + */ + String driveSpec = "SYS:"; + assertEquals(driveSpec, + FILE_UTILS.resolveFile(null, driveSpec + "/").getPath()); + assertEquals(driveSpec, + FILE_UTILS.resolveFile(null, driveSpec + "\\").getPath()); + String driveSpecLower = "sys:"; + assertEquals(driveSpec, + FILE_UTILS.resolveFile(null, driveSpecLower + "/").getPath()); + assertEquals(driveSpec, + FILE_UTILS.resolveFile(null, driveSpecLower + "\\").getPath()); + /* + * promised to eliminate consecutive slashes after drive letter. + */ + assertEquals(driveSpec, + FILE_UTILS.resolveFile(null, driveSpec + "/////").getPath()); + assertEquals(driveSpec, + FILE_UTILS.resolveFile(null, driveSpec + "\\\\\\\\\\\\").getPath()); + } else if (!(Os.isFamily("dos"))) { + /* + * drive letters must be considered just normal filenames. + */ + String driveSpec = "C:"; + String udir = System.getProperty("user.dir"); + assertEquals(udir + File.separator + driveSpec, + FILE_UTILS.resolveFile(null, driveSpec + "/").getPath()); + assertEquals(udir + File.separator + driveSpec, + FILE_UTILS.resolveFile(null, driveSpec + "\\").getPath()); + String driveSpecLower = "c:"; + assertEquals(udir + File.separator + driveSpecLower, + FILE_UTILS.resolveFile(null, driveSpecLower + "/").getPath()); + assertEquals(udir + File.separator + driveSpecLower, + FILE_UTILS.resolveFile(null, driveSpecLower + "\\").getPath()); + } + + /* + * Now test some relative file name magic. + */ + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "./4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), ".\\4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "./.\\4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "../3/4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "..\\3\\4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "../../5/.././2/./3/6/../4").getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.resolveFile(new File(localize("/1/2/3")), "..\\../5/..\\./2/./3/6\\../4").getPath()); + + assertEquals("meaningless result but no exception", + new File(localize("/1/../../b")), + FILE_UTILS.resolveFile(new File(localize("/1")), "../../b")); + + } + + @Test + public void testNormalize() { + if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { + /* + * Start with simple absolute file names. + */ + assertEquals(File.separator, + FILE_UTILS.normalize("/").getPath()); + assertEquals(File.separator, + FILE_UTILS.normalize("\\").getPath()); + } else { + try { + FILE_UTILS.normalize("/").getPath(); + fail("normalized \"/\" on dos or netware"); + } catch (Exception e) { + } + try { + FILE_UTILS.normalize("\\").getPath(); + fail("normalized \"\\\" on dos or netware"); + } catch (Exception e) { + } + } + + if (Os.isFamily("dos")) { + /* + * throw in drive letters + */ + String driveSpec = "C:"; + try { + FILE_UTILS.normalize(driveSpec).getPath(); + fail(driveSpec + " is not an absolute path"); + } catch (Exception e) { + } + assertEquals(driveSpec + "\\", + FILE_UTILS.normalize(driveSpec + "/").getPath()); + assertEquals(driveSpec + "\\", + FILE_UTILS.normalize(driveSpec + "\\").getPath()); + String driveSpecLower = "c:"; + assertEquals(driveSpecLower + "\\", + FILE_UTILS.normalize(driveSpecLower + "/").getPath()); + assertEquals(driveSpecLower + "\\", + FILE_UTILS.normalize(driveSpecLower + "\\").getPath()); + /* + * promised to eliminate consecutive slashes after drive letter. + */ + assertEquals(driveSpec + "\\", + FILE_UTILS.normalize(driveSpec + "/////").getPath()); + assertEquals(driveSpec + "\\", + FILE_UTILS.normalize(driveSpec + "\\\\\\\\\\\\").getPath()); + } else if (Os.isFamily("netware")) { + /* + * throw in NetWare volume names + */ + String driveSpec = "SYS:"; + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpec).getPath()); + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpec + "/").getPath()); + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpec + "\\").getPath()); + String driveSpecLower = "sys:"; + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpecLower).getPath()); + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpecLower + "/").getPath()); + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpecLower + "\\").getPath()); + assertEquals(driveSpec + "\\junk", + FILE_UTILS.normalize(driveSpecLower + "\\junk").getPath()); + /* + * promised to eliminate consecutive slashes after drive letter. + */ + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpec + "/////").getPath()); + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpec + "\\\\\\\\\\\\").getPath()); + } else { + try { + String driveSpec = "C:"; + assertEquals(driveSpec, + FILE_UTILS.normalize(driveSpec).getPath()); + fail("Expected failure, C: isn't an absolute path on other os's"); + } catch (BuildException e) { + // Passed test + } + } + + /* + * Now test some relative file name magic. + */ + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/./4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/.\\4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/./.\\4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/../3/4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/..\\3\\4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/../../5/.././2/./3/6/../4")).getPath()); + assertEquals(localize("/1/2/3/4"), + FILE_UTILS.normalize(localize("/1/2/3/..\\../5/..\\./2/./3/6\\../4")).getPath()); + + try { + FILE_UTILS.normalize("foo"); + fail("foo is not an absolute path"); + } catch (BuildException e) { + // Expected exception caught + } + + assertEquals("will not go outside FS root (but will not throw an exception either)", + new File(localize("/1/../../b")), + FILE_UTILS.normalize(localize("/1/../../b"))); + } + + /** + * Test handling of null arguments. + */ + @Test + public void testNullArgs() { + try { + FILE_UTILS.normalize(null); + fail("successfully normalized a null-file"); + } catch (NullPointerException npe) { + // Expected exception caught + } + + File f = FILE_UTILS.resolveFile(null, "a"); + assertEquals(f, new File("a").getAbsoluteFile()); + } + + + /** + * Test createTempFile + */ + @Test + public void testCreateTempFile() + { + // null parent dir + File tmp1 = FILE_UTILS.createTempFile("pre", ".suf", null, false, true); + String tmploc = System.getProperty("java.io.tmpdir"); + String name = tmp1.getName(); + assertTrue("starts with pre", name.startsWith("pre")); + assertTrue("ends with .suf", name.endsWith(".suf")); + assertTrue("File was created", tmp1.exists()); + assertEquals((new File(tmploc, tmp1.getName())).getAbsolutePath(), tmp1 + .getAbsolutePath()); + tmp1.delete(); + + File dir2 = new File(tmploc + "/ant-test"); + dir2.mkdir(); + removeThis = dir2; + + File tmp2 = FILE_UTILS.createTempFile("pre", ".suf", dir2, true, true); + String name2 = tmp2.getName(); + assertTrue("starts with pre", name2.startsWith("pre")); + assertTrue("ends with .suf", name2.endsWith(".suf")); + assertTrue("File was created", tmp2.exists()); + assertEquals((new File(dir2, tmp2.getName())).getAbsolutePath(), tmp2 + .getAbsolutePath()); + tmp2.delete(); + dir2.delete(); + + File parent = new File((new File("/tmp")).getAbsolutePath()); + tmp1 = FILE_UTILS.createTempFile("pre", ".suf", parent, false); + assertTrue("new file", !tmp1.exists()); + + name = tmp1.getName(); + assertTrue("starts with pre", name.startsWith("pre")); + assertTrue("ends with .suf", name.endsWith(".suf")); + assertEquals("is inside parent dir", parent.getAbsolutePath(), tmp1 + .getParent()); + + tmp2 = FILE_UTILS.createTempFile("pre", ".suf", parent, false); + assertTrue("files are different", !tmp1.getAbsolutePath().equals( + tmp2.getAbsolutePath())); + + // null parent dir + File tmp3 = FILE_UTILS.createTempFile("pre", ".suf", null, false); + tmploc = System.getProperty("java.io.tmpdir"); + assertEquals((new File(tmploc, tmp3.getName())).getAbsolutePath(), tmp3 + .getAbsolutePath()); + } + + /** + * Test contentEquals + */ + @Test + public void testContentEquals() throws IOException { + assertTrue("Non existing files", FILE_UTILS.contentEquals(new File(System.getProperty("root"), "foo"), + new File(System.getProperty("root"), "bar"))); + assertTrue("One exists, the other one doesn\'t", + !FILE_UTILS.contentEquals(new File(System.getProperty("root"), "foo"), new File(System.getProperty("root"), "build.xml"))); + assertTrue("Don\'t compare directories", + !FILE_UTILS.contentEquals(new File(System.getProperty("root"), "src"), new File(System.getProperty("root"), "src"))); + assertTrue("File equals itself", + FILE_UTILS.contentEquals(new File(System.getProperty("root"), "build.xml"), + new File(System.getProperty("root"), "build.xml"))); + assertTrue("Files are different", + !FILE_UTILS.contentEquals(new File(System.getProperty("root"), "build.xml"), + new File(System.getProperty("root"), "docs.xml"))); + } + + /** + * Test createNewFile + */ + @Test + public void testCreateNewFile() throws IOException { + removeThis = new File("dummy"); + assertTrue(!removeThis.exists()); + FILE_UTILS.createNewFile(removeThis); + assertTrue(removeThis.exists()); + } + + /** + * Test removeLeadingPath. + */ + @Test + public void testRemoveLeadingPath() { + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("/foo"), + new File("/foo/bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("/foo/"), + new File("/foo/bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("\\foo"), + new File("\\foo\\bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("\\foo\\"), + new File("\\foo\\bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:/foo"), + new File("c:/foo/bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:/foo/"), + new File("c:/foo/bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:\\foo"), + new File("c:\\foo\\bar"))); + assertEquals("bar", FILE_UTILS.removeLeadingPath(new File("c:\\foo\\"), + new File("c:\\foo\\bar"))); + if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { + assertEquals(FILE_UTILS.normalize("/bar").getAbsolutePath(), + FILE_UTILS.removeLeadingPath(new File("/foo"), new File("/bar"))); + assertEquals(FILE_UTILS.normalize("/foobar").getAbsolutePath(), + FILE_UTILS.removeLeadingPath(new File("/foo"), new File("/foobar"))); + } + // bugzilla report 19979 + assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar"), + new File("/foo/bar"))); + assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar"), + new File("/foo/bar/"))); + assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar/"), + new File("/foo/bar/"))); + assertEquals("", FILE_UTILS.removeLeadingPath(new File("/foo/bar/"), + new File("/foo/bar"))); + + String expected = "foo/bar".replace('\\', File.separatorChar) + .replace('/', File.separatorChar); + assertEquals(expected, FILE_UTILS.removeLeadingPath(new File("/"), + new File("/foo/bar"))); + assertEquals(expected, FILE_UTILS.removeLeadingPath(new File("c:/"), + new File("c:/foo/bar"))); + assertEquals(expected, FILE_UTILS.removeLeadingPath(new File("c:\\"), + new File("c:\\foo\\bar"))); + } + + /** + * test toUri + */ + @Test + public void testToURI() { + String dosRoot; + if (Os.isFamily("dos") || Os.isFamily("netware")) { + dosRoot = System.getProperty("user.dir") + .substring(0, 3).replace(File.separatorChar, '/'); + } + else + { + dosRoot = ""; + } + if (Os.isFamily("dos")) { + assertEquals("file:/c:/foo", removeExtraneousAuthority(FILE_UTILS.toURI("c:\\foo"))); + } + if (Os.isFamily("netware")) { + assertEquals("file:/SYS:/foo", removeExtraneousAuthority(FILE_UTILS.toURI("sys:\\foo"))); + } + if (File.pathSeparatorChar == '/') { + assertEquals("file:/foo", removeExtraneousAuthority(FILE_UTILS.toURI("/foo"))); + assertTrue("file: URIs must name absolute paths", FILE_UTILS.toURI("./foo").startsWith("file:/")); + assertTrue(FILE_UTILS.toURI("./foo").endsWith("/foo")); + assertEquals("file:/" + dosRoot + "foo%20bar", removeExtraneousAuthority(FILE_UTILS.toURI("/foo bar"))); + assertEquals("file:/" + dosRoot + "foo%23bar", removeExtraneousAuthority(FILE_UTILS.toURI("/foo#bar"))); + } else if (File.pathSeparatorChar == '\\') { + assertEquals("file:/" + dosRoot + "foo", removeExtraneousAuthority(FILE_UTILS.toURI("\\foo"))); + assertTrue("file: URIs must name absolute paths", FILE_UTILS.toURI(".\\foo").startsWith("file:/")); + assertTrue(FILE_UTILS.toURI(".\\foo").endsWith("/foo")); + assertEquals("file:/" + dosRoot + "foo%20bar", removeExtraneousAuthority(FILE_UTILS.toURI("\\foo bar"))); + assertEquals("file:/" + dosRoot + "foo%23bar", removeExtraneousAuthority(FILE_UTILS.toURI("\\foo#bar"))); + } + // a test with ant for germans + // the escaped character used for the test is the "a umlaut" + // this is the fix for the bug 37348 + assertEquals("file:/" + dosRoot + "%C3%A4nt", removeExtraneousAuthority(FILE_UTILS.toURI("/\u00E4nt"))); + } + + /** + * Authority field is unnecessary, but harmless, in file: URIs. + * Java 1.4 does not produce it when using File.toURI. + */ + private static String removeExtraneousAuthority(String uri) { + String prefix = "file:///"; + if (uri.startsWith(prefix)) { + return "file:/" + uri.substring(prefix.length()); + } else { + return uri; + } + } + + @Test + public void testIsContextRelativePath() { + assumeTrue("Test only runs on DOS", Os.isFamily("dos")); + assertTrue(FileUtils.isContextRelativePath("/\u00E4nt")); + assertTrue(FileUtils.isContextRelativePath("\\foo")); + } + + /** + * test fromUri + */ + @Test + public void testFromURI() { + String dosRoot; + if (Os.isFamily("dos") || Os.isFamily("netware")) { + dosRoot = System.getProperty("user.dir").substring(0, 2); + } else { + dosRoot = ""; + } + if (Os.isFamily("netware")) { + assertEqualsIgnoreDriveCase("SYS:\\foo", FILE_UTILS.fromURI("file:///sys:/foo")); + } + if (Os.isFamily("dos")) { + assertEqualsIgnoreDriveCase("C:\\foo", FILE_UTILS.fromURI("file:///c:/foo")); + } + assertEqualsIgnoreDriveCase(dosRoot + File.separator + "foo", FILE_UTILS.fromURI("file:///foo")); + assertEquals("." + File.separator + "foo", + FILE_UTILS.fromURI("file:./foo")); + assertEquals(dosRoot + File.separator + "foo bar", FILE_UTILS.fromURI("file:///foo%20bar")); + assertEquals(dosRoot + File.separator + "foo#bar", FILE_UTILS.fromURI("file:///foo%23bar")); + } + + @Test + public void testModificationTests() { + + //get a time + long firstTime=System.currentTimeMillis(); + //add some time. We assume no OS has a granularity this bad + long secondTime=firstTime+60000; +/* + assertTrue("same timestamp is up to date", + fu.isUpToDate(firstTime, firstTime)); + */ + + //check that older is up to date with a newer dest + assertTrue("older source files are up to date", + FILE_UTILS.isUpToDate(firstTime,secondTime)); + //check that older is up to date with a newer dest + assertFalse("newer source files are no up to date", + FILE_UTILS.isUpToDate(secondTime, firstTime)); + + assertTrue("-1 dest timestamp implies nonexistence", + !FILE_UTILS.isUpToDate(firstTime,-1L)); + } + + @Test + public void testHasErrorInCase() { + File tempFolder = new File(System.getProperty("java.io.tmpdir")); + File wellcased = FILE_UTILS.createTempFile("alpha", "beta", tempFolder, + true, true); + String s = wellcased.getName().toUpperCase(); + File wrongcased = new File(tempFolder, s); + if (Os.isFamily("mac") && Os.isFamily("unix")) { + //no guarantees on filesystem case-sensitivity + } else if (Os.isFamily("dos")) { + assertTrue(FILE_UTILS.hasErrorInCase(wrongcased)); + assertFalse(FILE_UTILS.hasErrorInCase(wellcased)); + } else { + assertFalse(FILE_UTILS.hasErrorInCase(wrongcased)); + assertFalse(FILE_UTILS.hasErrorInCase(wellcased)); + } + + } + public void testGetDefaultEncoding() { + // This just tests that the function does not blow up + FILE_UTILS.getDefaultEncoding(); + } + + /** + * adapt file separators to local conventions + */ + private String localize(String path) { + path = root + path.substring(1); + return path.replace('\\', File.separatorChar).replace('/', File.separatorChar); + } + + /** + * convenience method + * normalize brings the drive in uppercase + * the drive letter is in lower case under cygwin + * calling this method allows tests where normalize is called to pass under cygwin + */ + private void assertEqualsIgnoreDriveCase(String s1, String s2) { + if ((Os.isFamily("dos") || Os.isFamily("netware")) + && s1.length() > 0 && s2.length() > 0) { + StringBuilder sb1 = new StringBuilder(s1); + StringBuilder sb2 = new StringBuilder(s2); + sb1.setCharAt(0, Character.toUpperCase(s1.charAt(0))); + sb2.setCharAt(0, Character.toUpperCase(s2.charAt(0))); + assertEquals(sb1.toString(), sb2.toString()); + } else { + assertEquals(s1, s2); + } + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/GlobPatternMapperTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/GlobPatternMapperTest.java b/src/tests/junit/org/apache/tools/ant/util/GlobPatternMapperTest.java index 5bd7db6..25af0e1 100644 --- a/src/tests/junit/org/apache/tools/ant/util/GlobPatternMapperTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/GlobPatternMapperTest.java @@ -1,102 +1,102 @@ -/* - * 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.util; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -/** - * Tests for org.apache.tools.ant.util;GlobPatternMapper. - * - */ -public class GlobPatternMapperTest { - - @Test - public void testNoPatternAtAll() { - GlobPatternMapper m = new GlobPatternMapper(); - m.setFrom("foobar"); - m.setTo("baz"); - assertNull("Shouldn\'t match foobar", m.mapFileName("plonk")); - String[] result = m.mapFileName("foobar"); - assertNotNull("Should match foobar", result); - assertEquals("only one result for foobar", 1, result.length); - assertEquals("baz", result[0]); - } - - @Test - public void testPostfixOnly() { - GlobPatternMapper m = new GlobPatternMapper(); - m.setFrom("*foo"); - m.setTo("*plonk"); - assertNull("Shouldn\'t match *foo", m.mapFileName("bar.baz")); - String[] result = m.mapFileName("bar.foo"); - assertNotNull("Should match *.foo", result); - assertEquals("only one result for bar.foo", 1, result.length); - assertEquals("bar.plonk", result[0]); - - // Try a silly case - m.setTo("foo*"); - result = m.mapFileName("bar.foo"); - assertEquals("foobar.", result[0]); - } - - @Test - public void testPrefixOnly() { - GlobPatternMapper m = new GlobPatternMapper(); - m.setFrom("foo*"); - m.setTo("plonk*"); - assertNull("Shouldn\'t match foo*", m.mapFileName("bar.baz")); - String[] result = m.mapFileName("foo.bar"); - assertNotNull("Should match foo*", result); - assertEquals("only one result for foo.bar", 1, result.length); - assertEquals("plonk.bar", result[0]); - - // Try a silly case - m.setTo("*foo"); - result = m.mapFileName("foo.bar"); - assertEquals(".barfoo", result[0]); - } - - @Test - public void testPreAndPostfix() { - GlobPatternMapper m = new GlobPatternMapper(); - m.setFrom("foo*bar"); - m.setTo("plonk*pling"); - assertNull("Shouldn\'t match foo*bar", m.mapFileName("bar.baz")); - String[] result = m.mapFileName("foo.bar"); - assertNotNull("Should match foo*bar", result); - assertEquals("only one result for foo.bar", 1, result.length); - assertEquals("plonk.pling", result[0]); - - // and a little longer - result = m.mapFileName("foo.baz.bar"); - assertNotNull("Should match foo*bar", result); - assertEquals("only one result for foo.baz.bar", 1, result.length); - assertEquals("plonk.baz.pling", result[0]); - - // and a little shorter - result = m.mapFileName("foobar"); - assertNotNull("Should match foo*bar", result); - assertEquals("only one result for foobar", 1, result.length); - assertEquals("plonkpling", result[0]); - } -} +/* + * 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.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +/** + * Tests for org.apache.tools.ant.util;GlobPatternMapper. + * + */ +public class GlobPatternMapperTest { + + @Test + public void testNoPatternAtAll() { + GlobPatternMapper m = new GlobPatternMapper(); + m.setFrom("foobar"); + m.setTo("baz"); + assertNull("Shouldn\'t match foobar", m.mapFileName("plonk")); + String[] result = m.mapFileName("foobar"); + assertNotNull("Should match foobar", result); + assertEquals("only one result for foobar", 1, result.length); + assertEquals("baz", result[0]); + } + + @Test + public void testPostfixOnly() { + GlobPatternMapper m = new GlobPatternMapper(); + m.setFrom("*foo"); + m.setTo("*plonk"); + assertNull("Shouldn\'t match *foo", m.mapFileName("bar.baz")); + String[] result = m.mapFileName("bar.foo"); + assertNotNull("Should match *.foo", result); + assertEquals("only one result for bar.foo", 1, result.length); + assertEquals("bar.plonk", result[0]); + + // Try a silly case + m.setTo("foo*"); + result = m.mapFileName("bar.foo"); + assertEquals("foobar.", result[0]); + } + + @Test + public void testPrefixOnly() { + GlobPatternMapper m = new GlobPatternMapper(); + m.setFrom("foo*"); + m.setTo("plonk*"); + assertNull("Shouldn\'t match foo*", m.mapFileName("bar.baz")); + String[] result = m.mapFileName("foo.bar"); + assertNotNull("Should match foo*", result); + assertEquals("only one result for foo.bar", 1, result.length); + assertEquals("plonk.bar", result[0]); + + // Try a silly case + m.setTo("*foo"); + result = m.mapFileName("foo.bar"); + assertEquals(".barfoo", result[0]); + } + + @Test + public void testPreAndPostfix() { + GlobPatternMapper m = new GlobPatternMapper(); + m.setFrom("foo*bar"); + m.setTo("plonk*pling"); + assertNull("Shouldn\'t match foo*bar", m.mapFileName("bar.baz")); + String[] result = m.mapFileName("foo.bar"); + assertNotNull("Should match foo*bar", result); + assertEquals("only one result for foo.bar", 1, result.length); + assertEquals("plonk.pling", result[0]); + + // and a little longer + result = m.mapFileName("foo.baz.bar"); + assertNotNull("Should match foo*bar", result); + assertEquals("only one result for foo.baz.bar", 1, result.length); + assertEquals("plonk.baz.pling", result[0]); + + // and a little shorter + result = m.mapFileName("foobar"); + assertNotNull("Should match foo*bar", result); + assertEquals("only one result for foobar", 1, result.length); + assertEquals("plonkpling", result[0]); + } +} http://git-wip-us.apache.org/repos/asf/ant/blob/1ae68097/src/tests/junit/org/apache/tools/ant/util/JAXPUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/util/JAXPUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/JAXPUtilsTest.java index 105c33d..f21be8a 100644 --- a/src/tests/junit/org/apache/tools/ant/util/JAXPUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/JAXPUtilsTest.java @@ -1,43 +1,43 @@ -/* - * 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.util; - -import org.junit.Test; - -import java.io.File; - -import static org.junit.Assert.assertTrue; - -/** - * JAXPUtils test case - */ -public class JAXPUtilsTest { - - @Test - public void testGetSystemId(){ - File file = null; - if ( File.separatorChar == '\\' ){ - file = new File("d:\\jdk"); - } else { - file = new File("/user/local/bin"); - } - String systemid = JAXPUtils.getSystemId(file); - assertTrue("SystemIDs should start by file:/", systemid.startsWith("file:/")); - assertTrue("SystemIDs should not start with file:////", !systemid.startsWith("file:////")); - } -} +/* + * 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.util; + +import org.junit.Test; + +import java.io.File; + +import static org.junit.Assert.assertTrue; + +/** + * JAXPUtils test case + */ +public class JAXPUtilsTest { + + @Test + public void testGetSystemId(){ + File file = null; + if ( File.separatorChar == '\\' ){ + file = new File("d:\\jdk"); + } else { + file = new File("/user/local/bin"); + } + String systemid = JAXPUtils.getSystemId(file); + assertTrue("SystemIDs should start by file:/", systemid.startsWith("file:/")); + assertTrue("SystemIDs should not start with file:////", !systemid.startsWith("file:////")); + } +}
