| @@ -1,21 +1,21 @@ | |||
| /* | |||
| 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. | |||
| */ | |||
| * 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. | |||
| */ | |||
| public class Alpha { | |||
| public String toString() { | |||
| return "alpha"; | |||
| return "alpha"; | |||
| } | |||
| } | |||
| @@ -1,25 +1,25 @@ | |||
| /* | |||
| 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. | |||
| */ | |||
| * 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. | |||
| */ | |||
| public class Beta extends Alpha { | |||
| public String toString() { | |||
| return "beta " + super.toString(); | |||
| return "beta " + super.toString(); | |||
| } | |||
| public static void main(String [] args) { | |||
| Beta myBeta = new Beta(); | |||
| System.out.println(myBeta.toString()); | |||
| Beta myBeta = new Beta(); | |||
| System.out.println(myBeta.toString()); | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| /* | |||
| /* | |||
| * 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. | |||
| @@ -13,19 +13,19 @@ | |||
| * 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. | |||
| * | |||
| * | |||
| */ | |||
| /** | |||
| * this is an assertion tester | |||
| * It has a main() entry | |||
| */ | |||
| public class AssertionMain { | |||
| public static void main(String args[]) { | |||
| assert true == false : "there exist no facts that are both true and false"; | |||
| System.out.println("Assertions are disabled"); | |||
| assert true == false : "there exist no facts that are both true and false"; | |||
| System.out.println("Assertions are disabled"); | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| /* | |||
| /* | |||
| * 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. | |||
| @@ -13,33 +13,33 @@ | |||
| * 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. | |||
| * | |||
| * | |||
| */ | |||
| import junit.framework.TestCase; | |||
| /** | |||
| * this is an assertion tester for junit | |||
| * this is an assertion tester for junit | |||
| */ | |||
| public class AssertionTest extends TestCase { | |||
| public AssertionTest(String name) { | |||
| super(name); | |||
| } | |||
| public void testAssertRaised() { | |||
| try { | |||
| assert true == false; | |||
| fail("expected an assertion"); | |||
| } catch(AssertionError asserto) { | |||
| //if we got here, all was well | |||
| } | |||
| } | |||
| public void testAssertNotRaised() { | |||
| assert(2+2==4); | |||
| } | |||
| public AssertionTest(String name) { | |||
| super(name); | |||
| } | |||
| public void testAssertRaised() { | |||
| try { | |||
| assert true == false; | |||
| fail("expected an assertion"); | |||
| } catch(AssertionError asserto) { | |||
| //if we got here, all was well | |||
| } | |||
| } | |||
| public void testAssertNotRaised() { | |||
| assert(2+2==4); | |||
| } | |||
| } | |||
| @@ -426,8 +426,8 @@ public class Target implements TaskContainer { | |||
| try { | |||
| // use index-based approach to avoid ConcurrentModificationExceptions; | |||
| // also account for growing target children | |||
| // do not optimize this loop by replacing children.size() by a variable | |||
| // as children can be added dynamically as in RhinoScriptTest where a target is adding work for itself | |||
| // do not optimize this loop by replacing children.size() by a variable | |||
| // as children can be added dynamically as in RhinoScriptTest where a target is adding work for itself | |||
| for (int i = 0; i < children.size(); i++) { | |||
| Object o = children.get(i); | |||
| if (o instanceof Task) { | |||
| @@ -745,7 +745,7 @@ public class NetRexxC extends MatchingTask { | |||
| filecopyList.put(srcFile.getAbsolutePath(), destFile.getAbsolutePath()); | |||
| compileList.addElement(destFile.getAbsolutePath()); | |||
| } else if (compile && srcFile.lastModified() > classFile.lastModified()) { | |||
| // compile case tests against .class file | |||
| // compile case tests against .class file | |||
| filecopyList.put(srcFile.getAbsolutePath(), destFile.getAbsolutePath()); | |||
| compileList.addElement(destFile.getAbsolutePath()); | |||
| } | |||
| @@ -1039,4 +1039,3 @@ public class NetRexxC extends MatchingTask { | |||
| } | |||
| } | |||
| } | |||
| @@ -83,7 +83,7 @@ public class IgnoredTestResult extends TestResult { | |||
| * @param cause the details of the test and assumption failure. | |||
| */ | |||
| public void testAssumptionFailure(Test test, Throwable cause) { | |||
| skipped.add(new TestIgnored(test)); | |||
| skipped.add(new TestIgnored(test)); | |||
| for (IgnoredTestListener listener : listeners) { | |||
| listener.testAssumptionFailure(test, cause); | |||
| } | |||
| @@ -145,10 +145,10 @@ public class JUnitVersionHelper { | |||
| Class<?> junit4FacadeClass = Class.forName("junit.framework.JUnit4TestCaseFacade"); | |||
| if (test != null && test.getClass().isAssignableFrom(junit4FacadeClass)) { | |||
| //try and get the message coded as part of the ignore | |||
| /* | |||
| * org.junit.runner.Description contains a getAnnotation(Class) method... but this | |||
| * wasn't in older versions of JUnit4 so we have to try and do this by reflection | |||
| */ | |||
| /* | |||
| * org.junit.runner.Description contains a getAnnotation(Class) method... but this | |||
| * wasn't in older versions of JUnit4 so we have to try and do this by reflection | |||
| */ | |||
| Class<?> testClass = Class.forName(JUnitVersionHelper.getTestCaseClassName(test)); | |||
| Method testMethod = testClass.getMethod(JUnitVersionHelper.getTestCaseName(test)); | |||
| @@ -36,7 +36,7 @@ public abstract class BaseResourceCollectionWrapper | |||
| return cacheCollection().iterator(); | |||
| } | |||
| protected int getSize() { | |||
| protected int getSize() { | |||
| return cacheCollection().size(); | |||
| } | |||
| @@ -518,7 +518,7 @@ public final class JavaEnvUtils { | |||
| case VERSION_1_4: | |||
| tests.addElement("sun.audio.AudioPlayer"); | |||
| if (javaVersionNumber == VERSION_1_4) { | |||
| // only for 1.4, not for higher versions which fall through | |||
| // only for 1.4, not for higher versions which fall through | |||
| tests.addElement("org.apache.crimson.parser.ContentModel"); | |||
| tests.addElement("org.apache.xalan.processor.ProcessorImport"); | |||
| tests.addElement("org.apache.xml.utils.URI"); | |||
| @@ -1,26 +1,26 @@ | |||
| /* | |||
| 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. | |||
| */ | |||
| * 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 task; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.Task; | |||
| public class EchoLocation extends Task { | |||
| public void execute() { | |||
| public void execute() { | |||
| log("Line: " + getLocation().getLineNumber(), Project.MSG_INFO); | |||
| } | |||
| } | |||
| } | |||
| @@ -32,10 +32,10 @@ public class AntAssert { | |||
| * @param needle the string to search for. | |||
| * @param haystack the string to search in. | |||
| */ | |||
| public static void assertContains(String message, String needle, String haystack) { | |||
| String formattedMessage = (message == null ? "" : message + " "); | |||
| assertTrue(formattedMessage + String.format("expected message containing: <%s> but got: <%s>", needle, haystack), haystack.contains(needle)); | |||
| } | |||
| public static void assertContains(String message, String needle, String haystack) { | |||
| String formattedMessage = (message == null ? "" : message + " "); | |||
| assertTrue(formattedMessage + String.format("expected message containing: <%s> but got: <%s>", needle, haystack), haystack.contains(needle)); | |||
| } | |||
| /** | |||
| * Assert that a string contains the given substring. A default failure message will be used if the target string | |||
| @@ -43,9 +43,9 @@ public class AntAssert { | |||
| * @param needle the target string to search for. | |||
| * @param haystack the string to search in. | |||
| */ | |||
| public static void assertContains(String needle, String haystack) { | |||
| assertContains("", needle, haystack); | |||
| } | |||
| public static void assertContains(String needle, String haystack) { | |||
| assertContains("", needle, haystack); | |||
| } | |||
| /** | |||
| * Assert that a string does not contain the given substring. | |||
| @@ -54,8 +54,8 @@ public class AntAssert { | |||
| * @param haystack the string to search in. | |||
| */ | |||
| public static void assertNotContains(String message, String needle, String haystack) { | |||
| String formattedMessage = (message == null ? "" : message + " "); | |||
| assertFalse(formattedMessage + String.format("expected message not to contain: <%s> but got: <%s>", needle, haystack), haystack.contains(needle)); | |||
| String formattedMessage = (message == null ? "" : message + " "); | |||
| assertFalse(formattedMessage + String.format("expected message not to contain: <%s> but got: <%s>", needle, haystack), haystack.contains(needle)); | |||
| } | |||
| /** | |||
| @@ -67,6 +67,6 @@ public class AntAssert { | |||
| public static void assertNotContains(String needle, String haystack) { | |||
| assertNotContains("", needle, haystack); | |||
| } | |||
| } | |||
| @@ -44,7 +44,7 @@ import org.junit.Test; | |||
| * | |||
| */ | |||
| public class AntClassLoaderTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @@ -62,7 +62,7 @@ public class AntClassLoaderTest { | |||
| loader.cleanup(); | |||
| } | |||
| } | |||
| //test inspired by bug report 37085 | |||
| @Test | |||
| public void testJarWithManifestInDirWithSpace() { | |||
| @@ -75,7 +75,7 @@ public class AntClassLoaderTest { | |||
| String path = loader.getClasspath(); | |||
| assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | |||
| } | |||
| @Test | |||
| public void testJarWithManifestInNonAsciiDir() { | |||
| String mainjarstring = buildRule.getProject().getProperty("main.jar.nonascii"); | |||
| @@ -87,7 +87,7 @@ public class AntClassLoaderTest { | |||
| String path = loader.getClasspath(); | |||
| assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | |||
| } | |||
| @Test | |||
| public void testCleanup() throws BuildException { | |||
| Path path = new Path(buildRule.getProject(), "."); | |||
| @@ -61,14 +61,14 @@ import org.junit.rules.ExternalResource; | |||
| */ | |||
| public class BuildFileRule extends ExternalResource { | |||
| private Project project; | |||
| private Project project; | |||
| private StringBuffer logBuffer; | |||
| private StringBuffer fullLogBuffer; | |||
| private StringBuffer outputBuffer; | |||
| private StringBuffer errorBuffer; | |||
| /** | |||
| * Tidies up following a test execution. If the currently configured | |||
| @@ -313,6 +313,5 @@ public class BuildFileRule extends ExternalResource { | |||
| public File getOutputDir() { | |||
| return new File(getProject().getProperty("output")); | |||
| } | |||
| } | |||
| } | |||
| @@ -29,9 +29,9 @@ import static org.junit.Assert.fail; | |||
| * Simple tests of build file processing | |||
| */ | |||
| public class CaseTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| @@ -53,12 +53,11 @@ public class CaseTest { | |||
| */ | |||
| @Test | |||
| public void testTaskCase() { | |||
| try { | |||
| buildRule.executeTarget("taskcase"); | |||
| fail("Build exception should have been thrown due to case sensitivity of name"); | |||
| } catch(BuildException ex) { | |||
| assertContains("Task names should be case sensitive", "Problem: failed to create task or type ecHO", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("taskcase"); | |||
| fail("Build exception should have been thrown due to case sensitivity of name"); | |||
| } catch(BuildException ex) { | |||
| assertContains("Task names should be case sensitive", "Problem: failed to create task or type ecHO", ex.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -44,9 +44,9 @@ import org.junit.Test; | |||
| */ | |||
| public class DirectoryScannerTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| // keep track of what operating systems are supported here. | |||
| private boolean supportsSymlinks = Os.isFamily("unix"); | |||
| @@ -121,8 +121,8 @@ public class DirectoryScannerTest { | |||
| @Test | |||
| public void testAllowSymlinks() { | |||
| assumeTrue("Current system does not support Symlinks", supportsSymlinks); | |||
| assumeTrue("Current system does not support Symlinks", supportsSymlinks); | |||
| buildRule.getProject().executeTarget("symlink-setup"); | |||
| DirectoryScanner ds = new DirectoryScanner(); | |||
| @@ -135,7 +135,7 @@ public class DirectoryScannerTest { | |||
| @Test | |||
| public void testProhibitSymlinks() { | |||
| assumeTrue("Current system does not support Symlinks", supportsSymlinks); | |||
| assumeTrue("Current system does not support Symlinks", supportsSymlinks); | |||
| buildRule.getProject().executeTarget("symlink-setup"); | |||
| @@ -244,14 +244,14 @@ public class DirectoryScannerTest { | |||
| * Only supports test on Linux at the moment because Java has | |||
| * no real notion of symlinks built in, so an os-specfic call | |||
| * to Runtime.exec() must be made to create a link to test against. | |||
| * @throws InterruptedException | |||
| * @throws InterruptedException | |||
| */ | |||
| @Test | |||
| public void testSetFollowLinks() throws IOException, InterruptedException { | |||
| if (supportsSymlinks) { | |||
| File linkFile = new File(System.getProperty("root"), "src/main/org/apache/tools/ThisIsALink"); | |||
| System.err.println("link exists pre-test? " + linkFile.exists()); | |||
| try { | |||
| // add conditions and more commands as soon as the need arises | |||
| String[] command = new String[] { | |||
| @@ -26,8 +26,8 @@ import org.junit.Test; | |||
| public class DispatchTaskTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| @@ -37,10 +37,10 @@ public class DispatchTaskTest { | |||
| @Test | |||
| public void testDisp() { | |||
| try { | |||
| buildRule.executeTarget("disp"); | |||
| fail("BuildException should have been thrown"); | |||
| buildRule.executeTarget("disp"); | |||
| fail("BuildException should have been thrown"); | |||
| } catch(BuildException ex) { | |||
| //FIXME the previous method used here ignored the build exception - what are we trying to test | |||
| //FIXME the previous method used here ignored the build exception - what are we trying to test | |||
| } | |||
| } | |||
| } | |||
| @@ -31,22 +31,22 @@ import org.junit.Test; | |||
| * Executor tests | |||
| */ | |||
| public class ExecutorTest implements BuildListener { | |||
| private static final String SINGLE_CHECK | |||
| private static final String SINGLE_CHECK | |||
| = "org.apache.tools.ant.helper.SingleCheckExecutor"; | |||
| private static final String IGNORE_DEPS | |||
| = "org.apache.tools.ant.helper.IgnoreDependenciesExecutor"; | |||
| private static final Vector<String> TARGET_NAMES; | |||
| static { | |||
| TARGET_NAMES = new Vector<String>(); | |||
| TARGET_NAMES.add("a"); | |||
| TARGET_NAMES.add("b"); | |||
| } | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private int targetCount; | |||
| /* BuildListener stuff */ | |||
| @@ -168,4 +168,3 @@ public class ExecutorTest implements BuildListener { | |||
| } | |||
| } | |||
| @@ -32,10 +32,10 @@ import org.junit.Test; | |||
| public class ExtendedTaskdefTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/core/extended-taskdef.xml"); | |||
| } | |||
| @@ -47,22 +47,22 @@ public class ExtendedTaskdefTest { | |||
| @Test | |||
| public void testRun() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testRun"); | |||
| fail("BuildException should have been thrown"); | |||
| } catch(BuildException ex) { | |||
| assertContains("exception thrown by the subclass", "executing the Foo task", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("testRun"); | |||
| fail("BuildException should have been thrown"); | |||
| } catch(BuildException ex) { | |||
| assertContains("exception thrown by the subclass", "executing the Foo task", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testRun2() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testRun2"); | |||
| fail("BuildException should have been thrown"); | |||
| } catch(BuildException ex) { | |||
| assertContains("exception thrown by the subclass", "executing the Foo task", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("testRun2"); | |||
| fail("BuildException should have been thrown"); | |||
| } catch(BuildException ex) { | |||
| assertContains("exception thrown by the subclass", "executing the Foo task", ex.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -31,9 +31,9 @@ import org.junit.Test; | |||
| * | |||
| */ | |||
| public class IncludeTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| public void test1() { | |||
| @@ -29,10 +29,10 @@ import org.junit.Test; | |||
| */ | |||
| public class LoaderRefTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/core/loaderref/loaderref.xml"); | |||
| buildRule.executeTarget("setUp"); | |||
| @@ -40,13 +40,12 @@ public class LoaderRefTest { | |||
| // override allowed on <available> | |||
| @Test | |||
| public void testBadRef() { | |||
| try { | |||
| buildRule.executeTarget("testbadref"); | |||
| fail("BuildRule should have thrown an exception due to a bad classloader being specified"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Should fail due to ref not being a class loader", "does not reference a class loader", ex.getMessage()); | |||
| } | |||
| public void testBadRef() { | |||
| try { | |||
| buildRule.executeTarget("testbadref"); | |||
| fail("BuildRule should have thrown an exception due to a bad classloader being specified"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Should fail due to ref not being a class loader", "does not reference a class loader", ex.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -37,12 +37,12 @@ import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class TokenFilterTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/filters/tokenfilter.xml"); | |||
| @@ -57,20 +57,20 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testTrimignore() throws IOException { | |||
| buildRule.executeTarget("trimignore"); | |||
| assertContains("Hello-World", buildRule.getLog()); | |||
| buildRule.executeTarget("trimignore"); | |||
| assertContains("Hello-World", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testStringTokenizer() throws IOException { | |||
| buildRule.executeTarget("stringtokenizer"); | |||
| buildRule.executeTarget("stringtokenizer"); | |||
| assertContains("#This#is#a#number#of#words#", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testUnixLineOutput() throws IOException { | |||
| buildRule.executeTarget("unixlineoutput"); | |||
| assertContains("\nThis\nis\na\nnumber\nof\nwords\n", | |||
| buildRule.executeTarget("unixlineoutput"); | |||
| assertContains("\nThis\nis\na\nnumber\nof\nwords\n", | |||
| getFileString(buildRule.getProject().getProperty("output") + "/unixlineoutput")); | |||
| } | |||
| @@ -84,7 +84,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testFileTokenizer() throws IOException { | |||
| buildRule.executeTarget("filetokenizer"); | |||
| buildRule.executeTarget("filetokenizer"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/filetokenizer"); | |||
| assertContains(" of words", contents); | |||
| assertNotContains(" This is", contents); | |||
| @@ -92,20 +92,20 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testReplaceString() throws IOException { | |||
| buildRule.executeTarget("replacestring"); | |||
| assertContains("this is the moon", | |||
| buildRule.executeTarget("replacestring"); | |||
| assertContains("this is the moon", | |||
| getFileString(buildRule.getProject().getProperty("output") + "/replacestring")); | |||
| } | |||
| @Test | |||
| public void testReplaceStrings() throws IOException { | |||
| buildRule.executeTarget("replacestrings"); | |||
| assertContains("bar bar bar", buildRule.getLog()); | |||
| buildRule.executeTarget("replacestrings"); | |||
| assertContains("bar bar bar", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testContainsString() throws IOException { | |||
| buildRule.executeTarget("containsstring"); | |||
| buildRule.executeTarget("containsstring"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/containsstring"); | |||
| assertContains("this is a line contains foo", contents); | |||
| assertNotContains("this line does not", contents); | |||
| @@ -114,7 +114,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testReplaceRegex() throws IOException { | |||
| buildRule.executeTarget("hasregex"); | |||
| buildRule.executeTarget("hasregex"); | |||
| Assume.assumeTrue("Regex not present", | |||
| getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||
| @@ -130,7 +130,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testFilterReplaceRegex() throws IOException { | |||
| buildRule.executeTarget("hasregex"); | |||
| buildRule.executeTarget("hasregex"); | |||
| Assume.assumeTrue("Regex not present", | |||
| getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||
| @@ -142,7 +142,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testHandleDollerMatch() throws IOException { | |||
| buildRule.executeTarget("hasregex"); | |||
| buildRule.executeTarget("hasregex"); | |||
| Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||
| buildRule.executeTarget("dollermatch"); | |||
| @@ -150,7 +150,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testTrimFile() throws IOException { | |||
| buildRule.executeTarget("trimfile"); | |||
| buildRule.executeTarget("trimfile"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/trimfile"); | |||
| assertTrue("no ws at start", contents.startsWith("This is th")); | |||
| assertTrue("no ws at end", contents.endsWith("second line.")); | |||
| @@ -159,7 +159,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testTrimFileByLine() throws IOException { | |||
| buildRule.executeTarget("trimfilebyline"); | |||
| buildRule.executeTarget("trimfilebyline"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/trimfilebyline"); | |||
| assertFalse("no ws at start", contents.startsWith("This is th")); | |||
| assertFalse("no ws at end", contents.endsWith("second line.")); | |||
| @@ -169,20 +169,20 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testFilterReplaceString() throws IOException { | |||
| buildRule.executeTarget("filterreplacestring"); | |||
| buildRule.executeTarget("filterreplacestring"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/filterreplacestring"); | |||
| assertContains("This is the moon", contents); | |||
| } | |||
| @Test | |||
| public void testFilterReplaceStrings() throws IOException { | |||
| buildRule.executeTarget("filterreplacestrings"); | |||
| assertContains("bar bar bar", buildRule.getLog()); | |||
| buildRule.executeTarget("filterreplacestrings"); | |||
| assertContains("bar bar bar", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testContainsRegex() throws IOException { | |||
| buildRule.executeTarget("hasregex"); | |||
| buildRule.executeTarget("hasregex"); | |||
| Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||
| //expectFileContains(buildRule.getProject().getProperty("output") + "/replaceregexp", "bye world"); | |||
| @@ -196,7 +196,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testFilterContainsRegex() throws IOException { | |||
| buildRule.executeTarget("hasregex"); | |||
| buildRule.executeTarget("hasregex"); | |||
| Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||
| buildRule.executeTarget("filtercontainsregex"); | |||
| @@ -208,9 +208,9 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testContainsRegex2() throws IOException { | |||
| buildRule.executeTarget("hasregex"); | |||
| buildRule.executeTarget("hasregex"); | |||
| Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||
| buildRule.executeTarget("containsregex2"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/containsregex2"); | |||
| assertContains("void register_bits();", contents); | |||
| @@ -218,7 +218,7 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testDeleteCharacters() throws IOException { | |||
| buildRule.executeTarget("deletecharacters"); | |||
| buildRule.executeTarget("deletecharacters"); | |||
| String contents = getFileString(buildRule.getProject().getProperty("output") + "/deletechars"); | |||
| assertNotContains("#", contents); | |||
| assertNotContains("*", contents); | |||
| @@ -227,24 +227,24 @@ public class TokenFilterTest { | |||
| @Test | |||
| public void testScriptFilter() throws IOException { | |||
| Assume.assumeTrue("Project does not have 'testScriptFilter' target", | |||
| Assume.assumeTrue("Project does not have 'testScriptFilter' target", | |||
| buildRule.getProject().getTargets().contains("testScriptFilter")); | |||
| buildRule.executeTarget("scriptfilter"); | |||
| assertContains("HELLO WORLD", getFileString(buildRule.getProject().getProperty("output") + "/scriptfilter")); | |||
| buildRule.executeTarget("scriptfilter"); | |||
| assertContains("HELLO WORLD", getFileString(buildRule.getProject().getProperty("output") + "/scriptfilter")); | |||
| } | |||
| @Test | |||
| public void testScriptFilter2() throws IOException { | |||
| Assume.assumeTrue("Project does not have 'testScriptFilter' target", buildRule.getProject().getTargets().contains("testScriptFilter")); | |||
| Assume.assumeTrue("Project does not have 'testScriptFilter' target", buildRule.getProject().getTargets().contains("testScriptFilter")); | |||
| buildRule.executeTarget("scriptfilter2"); | |||
| assertContains("HELLO MOON", getFileString(buildRule.getProject().getProperty("output") + "/scriptfilter2")); | |||
| assertContains("HELLO MOON", getFileString(buildRule.getProject().getProperty("output") + "/scriptfilter2")); | |||
| } | |||
| @Test | |||
| public void testCustomTokenFilter() throws IOException { | |||
| buildRule.executeTarget("customtokenfilter"); | |||
| assertContains("Hello World", getFileString(buildRule.getProject().getProperty("output") + "/custom")); | |||
| assertContains("Hello World", getFileString(buildRule.getProject().getProperty("output") + "/custom")); | |||
| } | |||
| // ------------------------------------------------------ | |||
| @@ -32,9 +32,9 @@ import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class DirnameTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| @@ -43,32 +43,32 @@ public class DirnameTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("Build exception should have been thrown as property attribute is required"); | |||
| } catch(BuildException ex) { | |||
| assertEquals("property attribute required", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("Build exception should have been thrown as property attribute is required"); | |||
| } catch(BuildException ex) { | |||
| assertEquals("property attribute required", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("Build exception should have been thrown as file attribute is required"); | |||
| } catch(BuildException ex) { | |||
| assertEquals("file attribute required", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("Build exception should have been thrown as file attribute is required"); | |||
| } catch(BuildException ex) { | |||
| assertEquals("file attribute required", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("Build exception should have been thrown as property attribute is required"); | |||
| } catch(BuildException ex) { | |||
| assertEquals("property attribute required", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("Build exception should have been thrown as property attribute is required"); | |||
| } catch(BuildException ex) { | |||
| assertEquals("property attribute required", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| @@ -39,10 +39,10 @@ import org.junit.Test; | |||
| * Unit test for the <exec> task. | |||
| */ | |||
| public class ExecTaskTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private static final String BUILD_PATH = "src/etc/testcases/taskdefs/exec/"; | |||
| private static final String BUILD_FILE = BUILD_PATH + "exec.xml"; | |||
| private static final int TIME_TO_WAIT = 1; | |||
| @@ -31,7 +31,7 @@ import static org.junit.Assert.fail; | |||
| /** | |||
| */ | |||
| public class GzipTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| @@ -44,41 +44,41 @@ public class GzipTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| try { | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: zipfile must not point to a directory"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: zipfile must not point to a directory"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -39,16 +39,16 @@ import org.junit.Test; | |||
| public class ImportTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| public void testSimpleImport() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/import/import.xml"); | |||
| assertContains("Before importIn imported topAfter import", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testUnnamedNesting() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/import/unnamedImport.xml", | |||
| Project.MSG_WARN); | |||
| @@ -57,17 +57,17 @@ public class ImportTest { | |||
| log.length() == 0); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testSerial() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/import/subdir/serial.xml"); | |||
| assertContains("Unnamed2.xmlUnnamed1.xml", buildRule.getLog()); | |||
| assertContains("Expected string was not found in log", | |||
| "Skipped already imported file", buildRule.getFullLog()); | |||
| "Skipped already imported file", buildRule.getFullLog()); | |||
| } | |||
| // allow this as imported in targets are only tested when a target is run | |||
| @Test | |||
| public void testImportInTargetNoEffect() { | |||
| public void testImportInTargetNoEffect() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | |||
| buildRule.executeTarget("no-import"); | |||
| assertNull(buildRule.getProject().getProperty("foo")); | |||
| @@ -88,10 +88,10 @@ public class ImportTest { | |||
| buildRule.configureProject( | |||
| "src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | |||
| try { | |||
| buildRule.executeTarget("do-import"); | |||
| fail("Build exception should have been thrown as import only allowed in top level task"); | |||
| buildRule.executeTarget("do-import"); | |||
| fail("Build exception should have been thrown as import only allowed in top level task"); | |||
| } catch(BuildException ex) { | |||
| assertContains( "not a top level task", "import only allowed as a top-level task", ex.getMessage()); | |||
| assertContains( "not a top level task", "import only allowed as a top-level task", ex.getMessage()); | |||
| } | |||
| } | |||
| @@ -111,7 +111,7 @@ public class ImportTest { | |||
| "src/etc/testcases/taskdefs/import/same_target.xml"); | |||
| fail("Expected build exception"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Message did not contain expected contents", "Duplicate target", ex.getMessage()); | |||
| assertContains("Message did not contain expected contents", "Duplicate target", ex.getMessage()); | |||
| } | |||
| } | |||
| @@ -48,7 +48,7 @@ import static org.junit.Assert.fail; | |||
| /** | |||
| */ | |||
| public class JarTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| @@ -56,7 +56,7 @@ public class JarTest { | |||
| private static String tempDir = "jartmp/"; | |||
| private Reader r1, r2; | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/jar.xml"); | |||
| @@ -82,31 +82,31 @@ public class JarTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: manifest file does not exist"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: manifest file does not exist"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: Unrecognized whenempty attribute: format C: /y"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: Unrecognized whenempty attribute: format C: /y"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| private File getOutputDir() { | |||
| @@ -329,17 +329,17 @@ public class JarTest { | |||
| public void testIndexJarsPlusJarMarker() { | |||
| buildRule.executeTarget("testIndexJarsPlusJarMarker"); | |||
| } | |||
| @Test | |||
| public void testNoVersionInfoFail() { | |||
| try { | |||
| buildRule.executeTarget("testNoVersionInfoFail"); | |||
| fail("BuildException expected: Manifest Implemention information missing."); | |||
| } catch (BuildException ex) { | |||
| assertContains("No Implementation-Title set.", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testNoVersionInfoFail"); | |||
| fail("BuildException expected: Manifest Implemention information missing."); | |||
| } catch (BuildException ex) { | |||
| assertContains("No Implementation-Title set.", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoVersionInfoIgnore() { | |||
| buildRule.executeTarget("testNoVersionInfoIgnore"); | |||
| @@ -363,7 +363,7 @@ public class JarTest { | |||
| assertFalse(buildRule.getLog().indexOf("No Implementation-Version set.") > -1 ); | |||
| assertFalse(buildRule.getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||
| } | |||
| @Test | |||
| public void testHasVersionInfo() { | |||
| buildRule.executeTarget("testHasVersionInfo"); | |||
| @@ -371,5 +371,5 @@ public class JarTest { | |||
| assertFalse(buildRule.getLog().indexOf("No Implementation-Version set.") > -1 ); | |||
| assertFalse(buildRule.getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||
| } | |||
| } | |||
| @@ -37,7 +37,7 @@ public class LoadFileTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| @@ -57,11 +57,11 @@ public class LoadFileTest { | |||
| @Test | |||
| public void testNoSourcefileDefined() { | |||
| try { | |||
| buildRule.executeTarget("testNoSourcefileDefined"); | |||
| fail("BuildException expected: source file not defined"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("testNoSourcefileDefined"); | |||
| fail("BuildException expected: source file not defined"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @@ -71,11 +71,11 @@ public class LoadFileTest { | |||
| @Test | |||
| public void testNoPropertyDefined() { | |||
| try { | |||
| buildRule.executeTarget("testNoPropertyDefined"); | |||
| fail("BuildException expected: output property not defined"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("testNoPropertyDefined"); | |||
| fail("BuildException expected: output property not defined"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @@ -85,11 +85,11 @@ public class LoadFileTest { | |||
| @Test | |||
| public void testNoSourcefilefound() { | |||
| try { | |||
| buildRule.executeTarget("testNoSourcefilefound"); | |||
| fail("BuildException expected: File not found"); | |||
| } catch (BuildException ex) { | |||
| assertContains(" doesn't exist", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testNoSourcefilefound"); | |||
| fail("BuildException expected: File not found"); | |||
| } catch (BuildException ex) { | |||
| assertContains(" doesn't exist", ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| @@ -99,7 +99,7 @@ public class LoadFileTest { | |||
| public void testFailOnError() | |||
| throws BuildException { | |||
| buildRule.executeTarget("testFailOnError"); | |||
| assertNull(buildRule.getProject().getProperty("testFailOnError")); | |||
| assertNull(buildRule.getProject().getProperty("testFailOnError")); | |||
| } | |||
| @@ -43,114 +43,114 @@ public class MacroDefTest { | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| assertEquals("Hello World", buildRule.getLog()); | |||
| assertEquals("Hello World", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testText() { | |||
| buildRule.executeTarget("text"); | |||
| assertEquals("Inner Text", buildRule.getLog()); | |||
| assertEquals("Inner Text", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDuplicateAttribute() { | |||
| try { | |||
| buildRule.executeTarget("duplicate.attribute"); | |||
| fail("BuildException expected: the attribute text has already been specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("duplicate.attribute"); | |||
| fail("BuildException expected: the attribute text has already been specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testDuplicateElement() { | |||
| try { | |||
| buildRule.executeTarget("duplicate.element"); | |||
| fail("BuildException expected: the element text has already been specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("duplicate.element"); | |||
| fail("BuildException expected: the element text has already been specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testUri() { | |||
| buildRule.executeTarget("uri"); | |||
| assertEquals("Hello World", buildRule.getLog()); | |||
| assertEquals("Hello World", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNested() { | |||
| buildRule.executeTarget("nested"); | |||
| assertEquals("A nested element", buildRule.getLog()); | |||
| assertEquals("A nested element", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDouble() { | |||
| buildRule.executeTarget("double"); | |||
| assertEquals("@{prop} is 'property', value of ${property} is 'A property value'", buildRule.getLog()); | |||
| assertEquals("@{prop} is 'property', value of ${property} is 'A property value'", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testIgnoreCase() { | |||
| buildRule.executeTarget("ignorecase"); | |||
| assertEquals("a is ab is b", buildRule.getLog()); | |||
| assertEquals("a is ab is b", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testIgnoreElementCase() { | |||
| buildRule.executeTarget("ignore-element-case"); | |||
| assertEquals("nested elementnested element", buildRule.getLog()); | |||
| assertEquals("nested elementnested element", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testTextElement() { | |||
| buildRule.executeTarget("textelement"); | |||
| assertContains("Hello world", buildRule.getLog()); | |||
| assertContains("Hello world", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testTextTrim() { | |||
| buildRule.executeTarget("text.trim"); | |||
| assertContains("[Hello world]", buildRule.getLog()); | |||
| assertContains("[Hello world]", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDuplicateTextName() { | |||
| try { | |||
| buildRule.executeTarget("duplicatetextname"); | |||
| fail("BuildException expected: the name \"text\" is already used as an attribute"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("duplicatetextname"); | |||
| fail("BuildException expected: the name \"text\" is already used as an attribute"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testDuplicateTextName2() { | |||
| try { | |||
| buildRule.executeTarget("duplicatetextname2"); | |||
| fail("BuildException expected: the attribute name \"text\" has already been used by the text element"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("duplicatetextname2"); | |||
| fail("BuildException expected: the attribute name \"text\" has already been used by the text element"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testEscape() { | |||
| buildRule.executeTarget("escape"); | |||
| assertEquals("a@b or a@b is avalue@bvalue", buildRule.getLog()); | |||
| assertEquals("a@b or a@b is avalue@bvalue", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testAttributeDescription() { | |||
| buildRule.executeTarget("attribute.description"); | |||
| assertEquals("description is hello world", buildRule.getLog()); | |||
| assertEquals("description is hello world", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testOverrideDefault() { | |||
| buildRule.executeTarget("override.default"); | |||
| assertEquals("value is new", buildRule.getLog()); | |||
| assertEquals("value is new", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testImplicit() { | |||
| buildRule.executeTarget("implicit"); | |||
| assertEquals("Before implicitIn implicitAfter implicit", buildRule.getLog()); | |||
| assertEquals("Before implicitIn implicitAfter implicit", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testImplicitNotOptional() { | |||
| @@ -164,7 +164,7 @@ public class MacroDefTest { | |||
| @Test | |||
| public void testImplicitOptional() { | |||
| buildRule.executeTarget("implicit.optional"); | |||
| assertEquals("Before implicitAfter implicit", buildRule.getLog()); | |||
| assertEquals("Before implicitAfter implicit", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testImplicitExplicit() { | |||
| @@ -200,7 +200,6 @@ public class MacroDefTest { | |||
| @Test | |||
| public void testTopLevelText() { | |||
| buildRule.executeTarget("top-level-text"); | |||
| assertContains("Hello World", buildRule.getLog()); | |||
| assertContains("Hello World", buildRule.getLog()); | |||
| } | |||
| } | |||
| @@ -46,41 +46,41 @@ public class MakeUrlTest { | |||
| @Test | |||
| public void testEmpty() { | |||
| try { | |||
| buildRule.executeTarget("testEmpty"); | |||
| fail("BuildException expected: missing property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("property", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testEmpty"); | |||
| fail("BuildException expected: missing property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("property", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoProperty() { | |||
| try { | |||
| buildRule.executeTarget("testNoProperty"); | |||
| fail("BuildException expected: missing property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("property", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testNoProperty"); | |||
| fail("BuildException expected: missing property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("property", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoFile() { | |||
| try { | |||
| buildRule.executeTarget("testNoFile"); | |||
| fail("BuildException expected: missing file"); | |||
| } catch (BuildException ex) { | |||
| assertContains("file", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testNoFile"); | |||
| fail("BuildException expected: missing file"); | |||
| } catch (BuildException ex) { | |||
| assertContains("file", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testValidation() { | |||
| try { | |||
| buildRule.executeTarget("testValidation"); | |||
| fail("BuildException expected: " + MakeUrl.ERROR_MISSING_FILE); | |||
| } catch (BuildException ex) { | |||
| assertContains("file", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testValidation"); | |||
| fail("BuildException expected: " + MakeUrl.ERROR_MISSING_FILE); | |||
| } catch (BuildException ex) { | |||
| assertContains("file", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| @@ -39,71 +39,71 @@ import org.junit.Test; | |||
| * Tests <bm:manifestclasspath>. | |||
| */ | |||
| public class ManifestClassPathTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/manifestclasspath.xml"); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testBadDirectory() { | |||
| try { | |||
| buildRule.executeTarget("test-bad-directory"); | |||
| fail("Build exception should have been thrown on bad directory"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Jar's directory not found:", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test-bad-directory"); | |||
| fail("Build exception should have been thrown on bad directory"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Jar's directory not found:", ex.getMessage()); | |||
| } | |||
| assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testBadNoProperty() { | |||
| try { | |||
| buildRule.executeTarget("test-bad-no-property"); | |||
| fail("Build exception should have been thrown on no property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Missing 'property' attribute!", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("test-bad-no-property"); | |||
| fail("Build exception should have been thrown on no property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Missing 'property' attribute!", ex.getMessage()); | |||
| } | |||
| assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testBadPropertyExists() { | |||
| try { | |||
| buildRule.executeTarget("test-bad-property-exists"); | |||
| fail("Build exception should have been thrown on bad property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Property 'jar.classpath' already set!", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("test-bad-property-exists"); | |||
| fail("Build exception should have been thrown on bad property"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Property 'jar.classpath' already set!", ex.getMessage()); | |||
| } | |||
| assertEquals(buildRule.getProject().getProperty("jar.classpath"), "exists"); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testBadNoJarfile() { | |||
| try { | |||
| buildRule.executeTarget("test-bad-no-jarfile"); | |||
| fail("Build exception should have been thrown on bad jar file"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Missing 'jarfile' attribute!", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test-bad-no-jarfile"); | |||
| fail("Build exception should have been thrown on bad jar file"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Missing 'jarfile' attribute!", ex.getMessage()); | |||
| } | |||
| assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testBadNoClassPath() { | |||
| try { | |||
| buildRule.executeTarget("test-bad-no-classpath"); | |||
| fail("Build exception should have been thrown on no classpath"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Missing nested <classpath>!", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test-bad-no-classpath"); | |||
| fail("Build exception should have been thrown on no classpath"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Missing nested <classpath>!", ex.getMessage()); | |||
| } | |||
| assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testParentLevel1() { | |||
| buildRule.executeTarget("test-parent-level1"); | |||
| @@ -118,7 +118,7 @@ public class ManifestClassPathTest { | |||
| "../resources/dsp-void/"); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testParentLevel2() { | |||
| buildRule.executeTarget("test-parent-level2"); | |||
| @@ -133,21 +133,21 @@ public class ManifestClassPathTest { | |||
| "../../resources/dsp-void/"); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testParentLevel2TooDeep() { | |||
| try { | |||
| buildRule.executeTarget("test-parent-level2-too-deep"); | |||
| fail("Build exception should have been thrown on no suitable path"); | |||
| } catch (BuildException ex) { | |||
| assertContains("No suitable relative path from ", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("test-parent-level2-too-deep"); | |||
| fail("Build exception should have been thrown on no suitable path"); | |||
| } catch (BuildException ex) { | |||
| assertContains("No suitable relative path from ", ex.getMessage()); | |||
| } | |||
| assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||
| } | |||
| @Test | |||
| public void testPseudoTahoeRefid() { | |||
| Assume.assumeTrue("No regexp matcher is present", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||
| buildRule.executeTarget("test-pseudo-tahoe-refid"); | |||
| assertEquals(buildRule.getProject().getProperty("jar.classpath"), "classes/dsp-core/ " + | |||
| "classes/dsp-pres/ " + | |||
| @@ -159,9 +159,9 @@ public class ManifestClassPathTest { | |||
| @Test | |||
| public void testPseudoTahoeNested() { | |||
| Assume.assumeTrue("No regexp matcher is present", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||
| buildRule.executeTarget("test-pseudo-tahoe-nested"); | |||
| Assume.assumeTrue("No regexp matcher is present", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||
| buildRule.executeTarget("test-pseudo-tahoe-nested"); | |||
| assertEquals(buildRule.getProject().getProperty("jar.classpath"), "classes/dsp-core/ " + | |||
| "classes/dsp-pres/ " + | |||
| "classes/dsp-void/ " + | |||
| @@ -186,7 +186,7 @@ public class ManifestClassPathTest { | |||
| "../../resources/dsp-pres/ " + | |||
| "../../resources/dsp-void/"); | |||
| } | |||
| @Test | |||
| public void testInternationalGerman() { | |||
| buildRule.executeTarget("international-german"); | |||
| @@ -194,10 +194,10 @@ public class ManifestClassPathTest { | |||
| assertContains("beta alpha", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testInternationalHebrew() { | |||
| Assume.assumeFalse("Test with hebrew path not attempted under Windows", Os.isFamily("windows")); | |||
| Assume.assumeFalse("Test with hebrew path not attempted under Windows", Os.isFamily("windows")); | |||
| buildRule.executeTarget("international-hebrew"); | |||
| buildRule.executeTarget("run-two-jars"); | |||
| assertContains("beta alpha", buildRule.getLog()); | |||
| @@ -212,7 +212,7 @@ public class ManifestClassPathTest { | |||
| @Test | |||
| public void testDifferentWindowsDrive() { | |||
| Assume.assumeTrue("Test with drive letters only run on windows", Os.isFamily("windows")); | |||
| Assume.assumeTrue("Test with drive letters only run on windows", Os.isFamily("windows")); | |||
| // the lines below try to find a drive name different than the one containing the temp dir | |||
| // if the temp dir is C will try to use D | |||
| // if the temp dir is on D or other will try to use C | |||
| @@ -233,17 +233,17 @@ public class ManifestClassPathTest { | |||
| } | |||
| new java.io.File(altDriveLetter + ":/foo.txt").getCanonicalPath(); | |||
| } catch (java.io.IOException e) { | |||
| Assume.assumeNoException("Drive " + altDriveLetter + ": doesn't exist or is not ready", e); | |||
| Assume.assumeNoException("Drive " + altDriveLetter + ": doesn't exist or is not ready", e); | |||
| } | |||
| buildRule.getProject().setProperty("altDriveLetter", altDriveLetter); | |||
| try { | |||
| buildRule.executeTarget("testDifferentDrive"); | |||
| fail("Build exception should have been thrown on no alternative drive"); | |||
| } catch (BuildException ex) { | |||
| assertContains("No suitable relative path from ", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("testDifferentDrive"); | |||
| fail("Build exception should have been thrown on no alternative drive"); | |||
| } catch (BuildException ex) { | |||
| assertContains("No suitable relative path from ", ex.getMessage()); | |||
| } | |||
| assertNull(buildRule.getProject().getProperty("cp")); | |||
| } | |||
| } // END class ManifestClassPathTest | |||
| } | |||
| @@ -40,21 +40,21 @@ public class MkdirTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: directory already exists as a file"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: directory already exists as a file"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -63,21 +63,21 @@ public class NiceTest { | |||
| @Test | |||
| public void testTooSlow() { | |||
| try { | |||
| buildRule.executeTarget("too_slow"); | |||
| fail("BuildException expected: out of range"); | |||
| } catch (BuildException ex) { | |||
| assertContains("out of the range 1-10", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("too_slow"); | |||
| fail("BuildException expected: out of range"); | |||
| } catch (BuildException ex) { | |||
| assertContains("out of the range 1-10", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testTooFast() { | |||
| try { | |||
| buildRule.executeTarget("too_fast"); | |||
| fail("BuildException expected: out of range"); | |||
| } catch (BuildException ex) { | |||
| assertContains("out of the range 1-10", ex.getMessage()); | |||
| } | |||
| buildRule.executeTarget("too_fast"); | |||
| fail("BuildException expected: out of range"); | |||
| } catch (BuildException ex) { | |||
| assertContains("out of the range 1-10", ex.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -33,10 +33,10 @@ import static org.junit.Assert.fail; | |||
| /** | |||
| */ | |||
| public class PreSetDefTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/presetdef.xml"); | |||
| @@ -45,55 +45,55 @@ public class PreSetDefTest { | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| assertEquals("Hello world", buildRule.getLog()); | |||
| assertEquals("Hello world", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testText() { | |||
| buildRule.executeTarget("text"); | |||
| assertEquals("Inner Text", buildRule.getLog()); | |||
| assertEquals("Inner Text", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testUri() { | |||
| buildRule.executeTarget("uri"); | |||
| assertEquals("Hello world", buildRule.getLog()); | |||
| assertEquals("Hello world", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDefaultTest() { | |||
| buildRule.executeTarget("defaulttest"); | |||
| assertEquals("attribute is false", buildRule.getLog()); | |||
| assertEquals("attribute is false", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDoubleDefault() { | |||
| buildRule.executeTarget("doubledefault"); | |||
| assertEquals("attribute is falseattribute is true", buildRule.getLog()); | |||
| assertEquals("attribute is falseattribute is true", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testTextOptional() { | |||
| buildRule.executeTarget("text.optional"); | |||
| assertEquals("MyTextoverride text", buildRule.getLog()); | |||
| assertEquals("MyTextoverride text", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testElementOrder() { | |||
| buildRule.executeTarget("element.order"); | |||
| assertEquals("Line 1Line 2", buildRule.getLog()); | |||
| assertEquals("Line 1Line 2", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testElementOrder2() { | |||
| buildRule.executeTarget("element.order2"); | |||
| assertEquals("Line 1Line 2Line 3", buildRule.getLog()); | |||
| assertEquals("Line 1Line 2Line 3", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testAntTypeTest() { | |||
| buildRule.executeTarget("antTypeTest"); | |||
| assertEquals("", buildRule.getLog()); | |||
| assertEquals("", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| @@ -115,13 +115,13 @@ public class PreSetDefTest { | |||
| assertContains("javac doesn't support the", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testPresetdefWithNestedElementTwice() { // #38056 | |||
| buildRule.executeTarget("presetdef-with-nested-element-twice"); | |||
| buildRule.executeTarget("presetdef-with-nested-element-twice"); | |||
| } | |||
| /** | |||
| * A test class to check default properties | |||
| */ | |||
| @@ -151,4 +151,3 @@ public class PreSetDefTest { | |||
| } | |||
| } | |||
| } | |||
| @@ -34,9 +34,9 @@ import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class PropertyTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| /** Utilities used for file operations */ | |||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
| @@ -50,14 +50,14 @@ public class PropertyTest { | |||
| @Test | |||
| public void test1() { | |||
| // should get no output at all | |||
| buildRule.executeTarget("test1"); | |||
| assertEquals("System output should have been empty", "", buildRule.getOutput()); | |||
| assertEquals("System error should have been empty", "", buildRule.getError()); | |||
| buildRule.executeTarget("test1"); | |||
| assertEquals("System output should have been empty", "", buildRule.getOutput()); | |||
| assertEquals("System error should have been empty", "", buildRule.getError()); | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| buildRule.executeTarget("test2"); | |||
| buildRule.executeTarget("test2"); | |||
| assertContains("testprop1=aa, testprop3=xxyy, testprop4=aazz", buildRule.getLog()); | |||
| } | |||
| @@ -71,21 +71,21 @@ public class PropertyTest { | |||
| assertTrue("Circular definition not detected - ", | |||
| e.getMessage().indexOf("was circularly defined") != -1); | |||
| } | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.executeTarget("test4"); | |||
| assertContains("http.url is http://localhost:999", buildRule.getLog()); | |||
| buildRule.executeTarget("test4"); | |||
| assertContains("http.url is http://localhost:999", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void test5() { | |||
| String baseDir = buildRule.getProject().getProperty("basedir"); | |||
| String uri = FILE_UTILS.toURI(baseDir + "/property3.properties"); | |||
| String uri = FILE_UTILS.toURI(baseDir + "/property3.properties"); | |||
| buildRule.getProject().setNewProperty("test5.url", uri); | |||
| buildRule.executeTarget("test5"); | |||
| assertContains("http.url is http://localhost:999", buildRule.getLog()); | |||
| } | |||
| @@ -103,7 +103,7 @@ public class PropertyTest { | |||
| fail("Did not throw exception on invalid use of prefix"); | |||
| } | |||
| catch (BuildException e) { | |||
| assertContains("Prefix allowed on non-resource/file load - ", | |||
| assertContains("Prefix allowed on non-resource/file load - ", | |||
| "Prefix is only valid", e.getMessage()); | |||
| } | |||
| } | |||
| @@ -121,21 +121,21 @@ public class PropertyTest { | |||
| @Test | |||
| public void testThisIsNotACircularReference() { | |||
| buildRule.executeTarget("thisIsNotACircularReference"); | |||
| buildRule.executeTarget("thisIsNotACircularReference"); | |||
| assertContains("b is A/A/A", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testXmlProperty() { | |||
| try { | |||
| Class.forName("java.lang.Iterable"); | |||
| } catch (ClassNotFoundException e) { | |||
| Assume.assumeNoException("XML Loading only on Java 5+", e); | |||
| Assume.assumeNoException("XML Loading only on Java 5+", e); | |||
| } | |||
| buildRule.executeTarget("testXmlProperty"); | |||
| assertEquals("ONE", buildRule.getProject().getProperty("xml.one")); | |||
| assertEquals("TWO", buildRule.getProject().getProperty("xml.two")); | |||
| } | |||
| } | |||
| @@ -41,7 +41,7 @@ import static org.junit.Assume.assumeTrue; | |||
| /** | |||
| */ | |||
| public class ReplaceTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| @@ -54,41 +54,41 @@ public class ReplaceTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| try { | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: empty token not allowed"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: empty token not allowed"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -99,21 +99,21 @@ public class ReplaceTest { | |||
| @Test | |||
| public void test6() { | |||
| try { | |||
| buildRule.executeTarget("test6"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test6"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test7() { | |||
| try { | |||
| buildRule.executeTarget("test7"); | |||
| fail("BuildException expected: empty token not allowed"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test7"); | |||
| fail("BuildException expected: empty token not allowed"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -33,9 +33,9 @@ public class SleepTest { | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/"; | |||
| private final static int ERROR_RANGE=1000; | |||
| private final static int ERROR_RANGE=1000; | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "sleep.xml"); | |||
| @@ -117,4 +117,3 @@ public class SleepTest { | |||
| } | |||
| } | |||
| @@ -103,7 +103,7 @@ public class TStampTest { | |||
| @Test | |||
| public void testFormatPrefix() throws Exception { | |||
| Tstamp.CustomFormat format = tstamp.createFormat(); | |||
| Tstamp.CustomFormat format = tstamp.createFormat(); | |||
| format.setProperty("format"); | |||
| format.setPattern("HH:mm:ss z"); | |||
| format.setTimezone("GMT"); | |||
| @@ -45,41 +45,41 @@ public class TarTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| try { | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: tar cannot include itself"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: tar cannot include itself"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -96,11 +96,11 @@ public class TarTest { | |||
| @Test | |||
| public void test6() { | |||
| try { | |||
| buildRule.executeTarget("test6"); | |||
| fail("BuildException expected: Invalid value specified for longfile attribute."); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test6"); | |||
| fail("BuildException expected: Invalid value specified for longfile attribute."); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -172,11 +172,11 @@ public class TarTest { | |||
| @Test | |||
| public void test9() { | |||
| try { | |||
| buildRule.executeTarget("test9"); | |||
| fail("BuildException expected: Invalid value specified for compression attribute."); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test9"); | |||
| fail("BuildException expected: Invalid value specified for compression attribute."); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -44,41 +44,41 @@ public class TaskdefTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| try { | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: classname specified doesn't exist"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: classname specified doesn't exist"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -99,19 +99,19 @@ public class TaskdefTest { | |||
| @Test | |||
| public void test6() { | |||
| buildRule.executeTarget("test6"); | |||
| assertEquals("simpletask: worked", buildRule.getLog()); | |||
| assertEquals("simpletask: worked", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void test7() { | |||
| buildRule.executeTarget("test7"); | |||
| assertEquals("worked", buildRule.getLog()); | |||
| assertEquals("worked", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testGlobal() { | |||
| buildRule.executeTarget("testGlobal"); | |||
| assertEquals("worked", buildRule.getLog()); | |||
| assertEquals("worked", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| @@ -50,13 +50,13 @@ public class TypeAdapterTest { | |||
| @Test | |||
| public void testTaskAdapter() { | |||
| buildRule.executeTarget("taskadapter"); | |||
| assertContains("MyExec called", buildRule.getLog()); | |||
| assertContains("MyExec called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testRunAdapter() { | |||
| buildRule.executeTarget("runadapter"); | |||
| assertContains("MyRunnable called", buildRule.getLog()); | |||
| assertContains("MyRunnable called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| @@ -72,19 +72,19 @@ public class TypeAdapterTest { | |||
| @Test | |||
| public void testDelay() { | |||
| buildRule.executeTarget("delay"); | |||
| assertContains("MyTask called", buildRule.getLog()); | |||
| assertContains("MyTask called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testOnErrorReport() { | |||
| buildRule.executeTarget("onerror.report"); | |||
| assertContains("MyTaskNotPresent cannot be found", buildRule.getLog()); | |||
| assertContains("MyTaskNotPresent cannot be found", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testOnErrorIgnore() { | |||
| buildRule.executeTarget("onerror.ignore"); | |||
| assertEquals("", buildRule.getLog()); | |||
| assertEquals("", buildRule.getLog()); | |||
| } | |||
| public static class MyTask extends Task { | |||
| @@ -32,7 +32,7 @@ import static org.junit.Assert.fail; | |||
| /** | |||
| */ | |||
| public class TypedefTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| @@ -45,41 +45,41 @@ public class TypedefTest { | |||
| @Test | |||
| public void testEmpty() { | |||
| try { | |||
| buildRule.executeTarget("empty"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("empty"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoName() { | |||
| try { | |||
| buildRule.executeTarget("noName"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("noName"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoClassname() { | |||
| try { | |||
| buildRule.executeTarget("noClassname"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("noClassname"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void testClassNotFound() { | |||
| try { | |||
| buildRule.executeTarget("classNotFound"); | |||
| fail("BuildException expected: classname specified doesn't exist"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("classNotFound"); | |||
| fail("BuildException expected: classname specified doesn't exist"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -109,28 +109,28 @@ public class TypedefTest { | |||
| @Test | |||
| public void testDoubleNotPresent() { | |||
| buildRule.executeTarget("double-notpresent"); | |||
| assertContains("hi", buildRule.getLog()); | |||
| assertContains("hi", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNoResourceOnErrorFailAll(){ | |||
| try { | |||
| buildRule.executeTarget("noresourcefailall"); | |||
| fail("BuildException expected: the requested resource does not exist"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Could not load definitions from resource ", ex.getMessage()); | |||
| } | |||
| try { | |||
| buildRule.executeTarget("noresourcefailall"); | |||
| fail("BuildException expected: the requested resource does not exist"); | |||
| } catch (BuildException ex) { | |||
| assertContains("Could not load definitions from resource ", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoResourceOnErrorFail(){ | |||
| buildRule.executeTarget("noresourcefail"); | |||
| assertContains("Could not load definitions from resource ", buildRule.getLog()); | |||
| buildRule.executeTarget("noresourcefail"); | |||
| assertContains("Could not load definitions from resource ", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNoResourceOnErrorNotFail(){ | |||
| buildRule.executeTarget("noresourcenotfail"); | |||
| assertContains("Could not load definitions from resource ", buildRule.getLog()); | |||
| buildRule.executeTarget("noresourcenotfail"); | |||
| assertContains("Could not load definitions from resource ", buildRule.getLog()); | |||
| } | |||
| } | |||
| @@ -45,31 +45,31 @@ public class UnzipTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @@ -227,11 +227,11 @@ public class UnzipTest { | |||
| @Test | |||
| public void testTwoMappers() { | |||
| try { | |||
| buildRule.executeTarget("testTwoMappers"); | |||
| fail("BuildException expected: " + Expand.ERROR_MULTIPLE_MAPPERS); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("testTwoMappers"); | |||
| fail("BuildException expected: " + Expand.ERROR_MULTIPLE_MAPPERS); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @@ -54,24 +54,24 @@ public class UpToDateTest { | |||
| @Test | |||
| public void testFilesetUpToDate() { | |||
| buildRule.executeTarget("testFilesetUpToDate"); | |||
| assertEquals("true", buildRule.getProject().getProperty("foo")); | |||
| assertEquals("true", buildRule.getProject().getProperty("foo")); | |||
| } | |||
| @Test | |||
| public void testFilesetOutOfDate() { | |||
| buildRule.executeTarget("testFilesetOutOfDate"); | |||
| assertNull(buildRule.getProject().getProperty("foo")); | |||
| assertNull(buildRule.getProject().getProperty("foo")); | |||
| } | |||
| @Test | |||
| public void testRCUpToDate() { | |||
| buildRule.executeTarget("testRCUpToDate"); | |||
| assertEquals("true", buildRule.getProject().getProperty("foo")); | |||
| assertEquals("true", buildRule.getProject().getProperty("foo")); | |||
| } | |||
| @Test | |||
| public void testRCOutOfDate() { | |||
| buildRule.executeTarget("testRCOutOfDate"); | |||
| assertNull(buildRule.getProject().getProperty("foo")); | |||
| assertNull(buildRule.getProject().getProperty("foo")); | |||
| } | |||
| } | |||
| @@ -42,19 +42,19 @@ public class XmlnsTest { | |||
| @Test | |||
| public void testXmlns() { | |||
| buildRule.executeTarget("xmlns"); | |||
| assertEquals("MyTask called", buildRule.getLog()); | |||
| assertEquals("MyTask called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testXmlnsFile() { | |||
| buildRule.executeTarget("xmlns.file"); | |||
| assertEquals("MyTask called", buildRule.getLog()); | |||
| assertEquals("MyTask called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testCore() { | |||
| buildRule.executeTarget("core"); | |||
| assertEquals("MyTask called", buildRule.getLog()); | |||
| assertEquals("MyTask called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| @@ -70,13 +70,13 @@ public class XmlnsTest { | |||
| @Test | |||
| public void testOther() { | |||
| buildRule.executeTarget("other"); | |||
| assertEquals("a message", buildRule.getLog()); | |||
| assertEquals("a message", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNsAttributes() { | |||
| buildRule.executeTarget("ns.attributes"); | |||
| assertEquals("hello world", buildRule.getLog()); | |||
| assertEquals("hello world", buildRule.getLog()); | |||
| } | |||
| public static class MyTask extends Task { | |||
| @@ -86,4 +86,3 @@ public class XmlnsTest { | |||
| } | |||
| } | |||
| @@ -43,10 +43,10 @@ import static org.junit.Assume.assumeTrue; | |||
| public class ZipTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| //instance variable to allow cleanup | |||
| ZipFile zfPrefixAddsDir = null; | |||
| @@ -60,42 +60,42 @@ public class ZipTest { | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test1"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test2"); | |||
| fail("BuildException expected: required argument not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| try { | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: zip cannot include itself"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test3"); | |||
| fail("BuildException expected: zip cannot include itself"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @Test | |||
| @Ignore("Previously commented out") | |||
| public void test4() { | |||
| try { | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: zip cannot include itself"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| buildRule.executeTarget("test4"); | |||
| fail("BuildException expected: zip cannot include itself"); | |||
| } catch (BuildException ex) { | |||
| //TODO assert value | |||
| } | |||
| } | |||
| @After | |||
| @@ -157,7 +157,7 @@ public class ZipTest { | |||
| @Test | |||
| public void testUpdateIsNecessary() { | |||
| buildRule.executeTarget("testUpdateIsNecessary"); | |||
| assertContains("Updating", buildRule.getLog()); | |||
| assertContains("Updating", buildRule.getLog()); | |||
| } | |||
| // Bugzilla Report 18403 | |||
| @@ -202,7 +202,7 @@ public class ZipTest { | |||
| @Test | |||
| public void testZipEmptyCreate() { | |||
| buildRule.executeTarget("zipEmptyCreate"); | |||
| assertContains("Note: creating empty", buildRule.getLog()); | |||
| assertContains("Note: creating empty", buildRule.getLog()); | |||
| } | |||
| // Bugzilla Report 25513 | |||
| @Test | |||
| @@ -1,62 +1,62 @@ | |||
| /* | |||
| * 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.taskdefs.email; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.io.PrintStream; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.After; | |||
| import org.junit.Test; | |||
| public class MessageTest { | |||
| private static final File f = new File(System.getProperty("java.io.tmpdir"), | |||
| "message.txt"); | |||
| /** | |||
| * test for bugzilla 48932 | |||
| */ | |||
| @Test | |||
| public void testPrintStreamDoesNotGetClosed() throws IOException { | |||
| Message ms = new Message(); | |||
| Project p = new Project(); | |||
| ms.setProject(p); | |||
| ms.addText("hi, this is an email"); | |||
| FileOutputStream fis = null; | |||
| try { | |||
| fis = new FileOutputStream(f); | |||
| ms.print(new PrintStream(fis)); | |||
| fis.write(120); | |||
| } finally { | |||
| FileUtils.close(fis); | |||
| } | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| if (f.exists()) { | |||
| FileUtils fu = FileUtils.getFileUtils(); | |||
| fu.tryHardToDelete(f); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.email; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.io.PrintStream; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.After; | |||
| import org.junit.Test; | |||
| public class MessageTest { | |||
| private static final File f = new File(System.getProperty("java.io.tmpdir"), | |||
| "message.txt"); | |||
| /** | |||
| * test for bugzilla 48932 | |||
| */ | |||
| @Test | |||
| public void testPrintStreamDoesNotGetClosed() throws IOException { | |||
| Message ms = new Message(); | |||
| Project p = new Project(); | |||
| ms.setProject(p); | |||
| ms.addText("hi, this is an email"); | |||
| FileOutputStream fis = null; | |||
| try { | |||
| fis = new FileOutputStream(f); | |||
| ms.print(new PrintStream(fis)); | |||
| fis.write(120); | |||
| } finally { | |||
| FileUtils.close(fis); | |||
| } | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| if (f.exists()) { | |||
| FileUtils fu = FileUtils.getFileUtils(); | |||
| fu.tryHardToDelete(f); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,216 +1,216 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.FileUtilities; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import java.io.FilenameFilter; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * If you want to run tests, it is highly recommended | |||
| * to download ANTLR (www.antlr.org), build the 'antlrall.jar' jar | |||
| * with <code>make antlr-all.jar</code> and drop the jar (about 300KB) into | |||
| * Ant lib. | |||
| * - Running w/ the default antlr.jar (70KB) does not work (missing class) | |||
| * | |||
| * Unless of course you specify the ANTLR classpath in your | |||
| * system classpath. (see ANTLR install.html) | |||
| * | |||
| */ | |||
| public class ANTLRTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/antlr/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "antlr.xml"); | |||
| } | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("required argument, target, missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("Invalid output directory"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| buildRule.executeTarget("test3"); | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.executeTarget("test4"); | |||
| } | |||
| @Test | |||
| public void test5() { | |||
| // should print "panic: Cannot find importVocab file 'JavaTokenTypes.txt'" | |||
| // since it needs to run java.g first before java.tree.g | |||
| try { | |||
| buildRule.executeTarget("test5"); | |||
| fail("ANTLR returned: 1"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test6() { | |||
| buildRule.executeTarget("test6"); | |||
| } | |||
| @Test | |||
| public void test7() { | |||
| try { | |||
| buildRule.executeTarget("test7"); | |||
| fail("Unable to determine generated class"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| /** | |||
| * This is a negative test for the super grammar (glib) option. | |||
| */ | |||
| @Test | |||
| public void test8() { | |||
| try { | |||
| buildRule.executeTarget("test8"); | |||
| fail("Invalid super grammar file"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| /** | |||
| * This is a positive test for the super grammar (glib) option. ANTLR | |||
| * will throw an error if everything is not correct. | |||
| */ | |||
| @Test | |||
| public void test9() { | |||
| buildRule.executeTarget("test9"); | |||
| } | |||
| /** | |||
| * This test creates an html-ized version of the calculator grammar. | |||
| * The sanity check is simply whether or not an html file was generated. | |||
| */ | |||
| @Test | |||
| public void test10() { | |||
| buildRule.executeTarget("test10"); | |||
| File outputDirectory = new File(buildRule.getProject().getProperty("output")); | |||
| String[] calcFiles = outputDirectory.list(new HTMLFilter()); | |||
| assertTrue(calcFiles.length > 0); | |||
| } | |||
| /** | |||
| * This is just a quick sanity check to run the diagnostic option and | |||
| * make sure that it doesn't throw any funny exceptions. | |||
| */ | |||
| @Test | |||
| public void test11() { | |||
| buildRule.executeTarget("test11"); | |||
| } | |||
| /** | |||
| * This is just a quick sanity check to run the trace option and | |||
| * make sure that it doesn't throw any funny exceptions. | |||
| */ | |||
| @Test | |||
| public void test12() { | |||
| buildRule.executeTarget("test12"); | |||
| } | |||
| /** | |||
| * This is just a quick sanity check to run all the rest of the | |||
| * trace options (traceLexer, traceParser, and traceTreeWalker) to | |||
| * make sure that they don't throw any funny exceptions. | |||
| */ | |||
| @Test | |||
| public void test13() { | |||
| buildRule.executeTarget("test13"); | |||
| } | |||
| @Test | |||
| public void testNoRecompile() { | |||
| buildRule.executeTarget("test9"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| buildRule.executeTarget("noRecompile"); | |||
| assertContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNormalRecompile() { | |||
| buildRule.executeTarget("test9"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| FileUtilities.rollbackTimetamps(buildRule.getOutputDir(), 5); | |||
| buildRule.executeTarget("normalRecompile"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| // Bugzilla Report 12961 | |||
| public void testSupergrammarChangeRecompile() { | |||
| buildRule.executeTarget("test9"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| FileUtilities.rollbackTimetamps(buildRule.getOutputDir(), 5); | |||
| buildRule.executeTarget("supergrammarChangeRecompile"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| } | |||
| } | |||
| class HTMLFilter implements FilenameFilter { | |||
| public boolean accept(File dir, String name) { | |||
| return name.endsWith("html"); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.FileUtilities; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import java.io.FilenameFilter; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * If you want to run tests, it is highly recommended | |||
| * to download ANTLR (www.antlr.org), build the 'antlrall.jar' jar | |||
| * with <code>make antlr-all.jar</code> and drop the jar (about 300KB) into | |||
| * Ant lib. | |||
| * - Running w/ the default antlr.jar (70KB) does not work (missing class) | |||
| * | |||
| * Unless of course you specify the ANTLR classpath in your | |||
| * system classpath. (see ANTLR install.html) | |||
| * | |||
| */ | |||
| public class ANTLRTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/antlr/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "antlr.xml"); | |||
| } | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("required argument, target, missing"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| try { | |||
| buildRule.executeTarget("test2"); | |||
| fail("Invalid output directory"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| buildRule.executeTarget("test3"); | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.executeTarget("test4"); | |||
| } | |||
| @Test | |||
| public void test5() { | |||
| // should print "panic: Cannot find importVocab file 'JavaTokenTypes.txt'" | |||
| // since it needs to run java.g first before java.tree.g | |||
| try { | |||
| buildRule.executeTarget("test5"); | |||
| fail("ANTLR returned: 1"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test6() { | |||
| buildRule.executeTarget("test6"); | |||
| } | |||
| @Test | |||
| public void test7() { | |||
| try { | |||
| buildRule.executeTarget("test7"); | |||
| fail("Unable to determine generated class"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| /** | |||
| * This is a negative test for the super grammar (glib) option. | |||
| */ | |||
| @Test | |||
| public void test8() { | |||
| try { | |||
| buildRule.executeTarget("test8"); | |||
| fail("Invalid super grammar file"); | |||
| } catch (BuildException ex) { | |||
| //TODO should check exception message | |||
| } | |||
| } | |||
| /** | |||
| * This is a positive test for the super grammar (glib) option. ANTLR | |||
| * will throw an error if everything is not correct. | |||
| */ | |||
| @Test | |||
| public void test9() { | |||
| buildRule.executeTarget("test9"); | |||
| } | |||
| /** | |||
| * This test creates an html-ized version of the calculator grammar. | |||
| * The sanity check is simply whether or not an html file was generated. | |||
| */ | |||
| @Test | |||
| public void test10() { | |||
| buildRule.executeTarget("test10"); | |||
| File outputDirectory = new File(buildRule.getProject().getProperty("output")); | |||
| String[] calcFiles = outputDirectory.list(new HTMLFilter()); | |||
| assertTrue(calcFiles.length > 0); | |||
| } | |||
| /** | |||
| * This is just a quick sanity check to run the diagnostic option and | |||
| * make sure that it doesn't throw any funny exceptions. | |||
| */ | |||
| @Test | |||
| public void test11() { | |||
| buildRule.executeTarget("test11"); | |||
| } | |||
| /** | |||
| * This is just a quick sanity check to run the trace option and | |||
| * make sure that it doesn't throw any funny exceptions. | |||
| */ | |||
| @Test | |||
| public void test12() { | |||
| buildRule.executeTarget("test12"); | |||
| } | |||
| /** | |||
| * This is just a quick sanity check to run all the rest of the | |||
| * trace options (traceLexer, traceParser, and traceTreeWalker) to | |||
| * make sure that they don't throw any funny exceptions. | |||
| */ | |||
| @Test | |||
| public void test13() { | |||
| buildRule.executeTarget("test13"); | |||
| } | |||
| @Test | |||
| public void testNoRecompile() { | |||
| buildRule.executeTarget("test9"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| buildRule.executeTarget("noRecompile"); | |||
| assertContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNormalRecompile() { | |||
| buildRule.executeTarget("test9"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| FileUtilities.rollbackTimetamps(buildRule.getOutputDir(), 5); | |||
| buildRule.executeTarget("normalRecompile"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| // Bugzilla Report 12961 | |||
| public void testSupergrammarChangeRecompile() { | |||
| buildRule.executeTarget("test9"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| FileUtilities.rollbackTimetamps(buildRule.getOutputDir(), 5); | |||
| buildRule.executeTarget("supergrammarChangeRecompile"); | |||
| assertNotContains("Skipped grammar file.", buildRule.getFullLog()); | |||
| } | |||
| } | |||
| class HTMLFilter implements FilenameFilter { | |||
| public boolean accept(File dir, String name) { | |||
| return name.endsWith("html"); | |||
| } | |||
| } | |||
| @@ -1,104 +1,104 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import static org.junit.Assert.assertEquals; | |||
| import java.io.File; | |||
| import java.io.FileNotFoundException; | |||
| import java.net.URL; | |||
| import javax.xml.parsers.DocumentBuilder; | |||
| import javax.xml.parsers.DocumentBuilderFactory; | |||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| import org.w3c.dom.Document; | |||
| /** | |||
| * Abtract testcase for XSLTLiaison. | |||
| * Override createLiaison for each XSLTLiaison. | |||
| * | |||
| * <a href="sbailliez@apache.org">Stephane Bailliez</a> | |||
| */ | |||
| public abstract class AbstractXSLTLiaisonTest { | |||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
| protected XSLTLiaison liaison; | |||
| @Before | |||
| public void setUp() throws Exception { | |||
| liaison = createLiaison(); | |||
| } | |||
| // to override | |||
| protected abstract XSLTLiaison createLiaison() throws Exception ; | |||
| /** load the file from the caller classloader that loaded this class */ | |||
| protected File getFile(String name) throws FileNotFoundException { | |||
| URL url = getClass().getResource(name); | |||
| if (url == null){ | |||
| throw new FileNotFoundException("Unable to load '" + name + "' from classpath"); | |||
| } | |||
| return new File(FILE_UTILS.fromURI(url.toExternalForm())); | |||
| } | |||
| /** keep it simple stupid */ | |||
| @Test | |||
| public void testTransform() throws Exception { | |||
| File xsl = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| liaison.addParam("param", "value"); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xml"); | |||
| File out = new File("xsltliaison.tmp"); | |||
| out.deleteOnExit(); // just to be sure | |||
| try { | |||
| liaison.transform(in, out); | |||
| } finally { | |||
| out.delete(); | |||
| } | |||
| } | |||
| @Test | |||
| public void testEncoding() throws Exception { | |||
| File xsl = getFile("/taskdefs/optional/xsltliaison-encoding-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-encoding-in.xml"); | |||
| File out = new File("xsltliaison-encoding.tmp"); | |||
| out.deleteOnExit(); // just to be sure | |||
| try { | |||
| liaison.transform(in, out); | |||
| Document doc = parseXML(out); | |||
| assertEquals("root",doc.getDocumentElement().getNodeName()); | |||
| assertEquals("message",doc.getDocumentElement().getFirstChild().getNodeName()); | |||
| assertEquals("\u00E9\u00E0\u00E8\u00EF\u00F9",doc.getDocumentElement().getFirstChild().getFirstChild().getNodeValue()); | |||
| } finally { | |||
| out.delete(); | |||
| } | |||
| } | |||
| public Document parseXML(File file) throws Exception { | |||
| DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); | |||
| DocumentBuilder dbuilder = dbfactory.newDocumentBuilder(); | |||
| return dbuilder.parse(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.taskdefs.optional; | |||
| import static org.junit.Assert.assertEquals; | |||
| import java.io.File; | |||
| import java.io.FileNotFoundException; | |||
| import java.net.URL; | |||
| import javax.xml.parsers.DocumentBuilder; | |||
| import javax.xml.parsers.DocumentBuilderFactory; | |||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| import org.w3c.dom.Document; | |||
| /** | |||
| * Abtract testcase for XSLTLiaison. | |||
| * Override createLiaison for each XSLTLiaison. | |||
| * | |||
| * <a href="sbailliez@apache.org">Stephane Bailliez</a> | |||
| */ | |||
| public abstract class AbstractXSLTLiaisonTest { | |||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
| protected XSLTLiaison liaison; | |||
| @Before | |||
| public void setUp() throws Exception { | |||
| liaison = createLiaison(); | |||
| } | |||
| // to override | |||
| protected abstract XSLTLiaison createLiaison() throws Exception ; | |||
| /** load the file from the caller classloader that loaded this class */ | |||
| protected File getFile(String name) throws FileNotFoundException { | |||
| URL url = getClass().getResource(name); | |||
| if (url == null){ | |||
| throw new FileNotFoundException("Unable to load '" + name + "' from classpath"); | |||
| } | |||
| return new File(FILE_UTILS.fromURI(url.toExternalForm())); | |||
| } | |||
| /** keep it simple stupid */ | |||
| @Test | |||
| public void testTransform() throws Exception { | |||
| File xsl = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| liaison.addParam("param", "value"); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xml"); | |||
| File out = new File("xsltliaison.tmp"); | |||
| out.deleteOnExit(); // just to be sure | |||
| try { | |||
| liaison.transform(in, out); | |||
| } finally { | |||
| out.delete(); | |||
| } | |||
| } | |||
| @Test | |||
| public void testEncoding() throws Exception { | |||
| File xsl = getFile("/taskdefs/optional/xsltliaison-encoding-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-encoding-in.xml"); | |||
| File out = new File("xsltliaison-encoding.tmp"); | |||
| out.deleteOnExit(); // just to be sure | |||
| try { | |||
| liaison.transform(in, out); | |||
| Document doc = parseXML(out); | |||
| assertEquals("root",doc.getDocumentElement().getNodeName()); | |||
| assertEquals("message",doc.getDocumentElement().getFirstChild().getNodeName()); | |||
| assertEquals("\u00E9\u00E0\u00E8\u00EF\u00F9",doc.getDocumentElement().getFirstChild().getFirstChild().getNodeValue()); | |||
| } finally { | |||
| out.delete(); | |||
| } | |||
| } | |||
| public Document parseXML(File file) throws Exception { | |||
| DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); | |||
| DocumentBuilder dbuilder = dbfactory.newDocumentBuilder(); | |||
| return dbuilder.parse(file); | |||
| } | |||
| } | |||
| @@ -1,48 +1,48 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| /** | |||
| * Tests the examples of the <script> task docs. | |||
| * | |||
| * @since Ant 1.5.2 | |||
| */ | |||
| public class BeanShellScriptTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/script.xml"); | |||
| } | |||
| @Test | |||
| public void testCanLoad() { | |||
| buildRule.executeTarget("useBeanshell"); | |||
| assertEquals("I'm here", buildRule.getLog()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| /** | |||
| * Tests the examples of the <script> task docs. | |||
| * | |||
| * @since Ant 1.5.2 | |||
| */ | |||
| public class BeanShellScriptTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/script.xml"); | |||
| } | |||
| @Test | |||
| public void testCanLoad() { | |||
| buildRule.executeTarget("useBeanshell"); | |||
| assertEquals("I'm here", buildRule.getLog()); | |||
| } | |||
| } | |||
| @@ -1,266 +1,265 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| 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.Assume.assumeTrue; | |||
| import java.io.BufferedInputStream; | |||
| import java.io.BufferedReader; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.FileReader; | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import java.util.Properties; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Tests the EchoProperties task. | |||
| * | |||
| * @created 17-Jan-2002 | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class EchoPropertiesTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| private static final String GOOD_OUTFILE = "test.properties"; | |||
| private static final String GOOD_OUTFILE_XML = "test.xml"; | |||
| private static final String PREFIX_OUTFILE = "test-prefix.properties"; | |||
| private static final String TEST_VALUE = "isSet"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "echoproperties.xml"); | |||
| buildRule.getProject().setProperty("test.property", TEST_VALUE); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| buildRule.executeTarget("cleanup"); | |||
| } | |||
| @Test | |||
| public void testEchoToLog() { | |||
| buildRule.executeTarget("testEchoToLog"); | |||
| assertContains("test.property=" + TEST_VALUE, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testEchoWithEmptyPrefixToLog() { | |||
| buildRule.executeTarget("testEchoWithEmptyPrefixToLog"); | |||
| assertContains("test.property="+TEST_VALUE, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testReadBadFile() { | |||
| try { | |||
| buildRule.executeTarget("testReadBadFile"); | |||
| fail("BuildException should have been thrown on bad file"); | |||
| } | |||
| catch(BuildException ex) { | |||
| assertContains("srcfile is a directory","srcfile is a directory!", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testReadBadFileNoFail() { | |||
| buildRule.executeTarget("testReadBadFileNoFail"); | |||
| assertContains("srcfile is a directory!", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testEchoToBadFile() { | |||
| try { | |||
| buildRule.executeTarget("testEchoToBadFile"); | |||
| fail("BuildException should have been thrown on destination file being a directory"); | |||
| } catch(BuildException ex) { | |||
| assertContains("destfile is a directory", "destfile is a directory!", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testEchoToBadFileNoFail() { | |||
| buildRule.executeTarget("testEchoToBadFileNoFail"); | |||
| assertContains("destfile is a directory!", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFile() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFile"); | |||
| assertGoodFile(); | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFileXml() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFileXml"); | |||
| // read in the file | |||
| File f = createRelativeFile(GOOD_OUTFILE_XML); | |||
| FileReader fr = new FileReader(f); | |||
| BufferedReader br = new BufferedReader(fr); | |||
| try { | |||
| String read = null; | |||
| while ((read = br.readLine()) != null) { | |||
| if (read.indexOf("<property name=\"test.property\" value=\""+TEST_VALUE+"\" />") >= 0) { | |||
| // found the property we set - it's good. | |||
| return; | |||
| } | |||
| } | |||
| fail("did not encounter set property in generated file."); | |||
| } finally { | |||
| try { | |||
| fr.close(); | |||
| } catch(IOException e) {} | |||
| try { | |||
| br.close(); | |||
| } catch(IOException e) {} | |||
| } | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFileFail() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFileFail"); | |||
| assertGoodFile(); | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFileNoFail() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFileNoFail"); | |||
| assertGoodFile(); | |||
| } | |||
| @Test | |||
| public void testEchoPrefix() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefix"); | |||
| } | |||
| @Test | |||
| public void testEchoPrefixAsPropertyset() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefixAsPropertyset"); | |||
| } | |||
| @Test | |||
| public void testEchoPrefixAsNegatedPropertyset() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefixAsNegatedPropertyset"); | |||
| } | |||
| @Test | |||
| public void testEchoPrefixAsDoublyNegatedPropertyset() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefixAsDoublyNegatedPropertyset"); | |||
| } | |||
| @Test | |||
| public void testWithPrefixAndRegex() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testWithPrefixAndRegex"); | |||
| fail("BuildException should have been thrown on Prefix and RegEx beng set"); | |||
| } catch (BuildException ex) { | |||
| assertEquals("The target must fail with prefix and regex attributes set", "Please specify either prefix or regex, but not both", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testWithEmptyPrefixAndRegex() throws Exception { | |||
| buildRule.executeTarget("testEchoWithEmptyPrefixToLog"); | |||
| assertContains("test.property="+TEST_VALUE, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testWithRegex() throws Exception { | |||
| assumeTrue("Test skipped because no regexp matcher is present.", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||
| buildRule.executeTarget("testWithRegex"); | |||
| // the following line has been changed from checking ant.home to ant.version so the test will still work when run outside of an ant script | |||
| assertContains("ant.version=", buildRule.getFullLog()); | |||
| } | |||
| private void testEchoPrefixVarious(String target) throws Exception { | |||
| buildRule.executeTarget(target); | |||
| Properties props = loadPropFile(PREFIX_OUTFILE); | |||
| assertEquals("prefix didn't include 'a.set' property", | |||
| "true", props.getProperty("a.set")); | |||
| assertNull("prefix failed to filter out property 'b.set'", | |||
| props.getProperty("b.set")); | |||
| } | |||
| protected Properties loadPropFile(String relativeFilename) | |||
| throws IOException { | |||
| File f = createRelativeFile(relativeFilename); | |||
| Properties props=new Properties(); | |||
| InputStream in=null; | |||
| try { | |||
| in=new BufferedInputStream(new FileInputStream(f)); | |||
| props.load(in); | |||
| } finally { | |||
| if(in!=null) { | |||
| try { in.close(); } catch(IOException e) {} | |||
| } | |||
| } | |||
| return props; | |||
| } | |||
| protected void assertGoodFile() throws Exception { | |||
| File f = createRelativeFile(GOOD_OUTFILE); | |||
| assertTrue("Did not create "+f.getAbsolutePath(), | |||
| f.exists()); | |||
| Properties props=loadPropFile(GOOD_OUTFILE); | |||
| props.list(System.out); | |||
| assertEquals("test property not found ", | |||
| TEST_VALUE, props.getProperty("test.property")); | |||
| } | |||
| protected String toAbsolute(String filename) { | |||
| return createRelativeFile(filename).getAbsolutePath(); | |||
| } | |||
| protected File createRelativeFile(String filename) { | |||
| if (filename.equals(".")) { | |||
| return buildRule.getProject().getBaseDir(); | |||
| } | |||
| // else | |||
| return new File(buildRule.getProject().getBaseDir(), filename); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| 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.Assume.assumeTrue; | |||
| import java.io.BufferedInputStream; | |||
| import java.io.BufferedReader; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.FileReader; | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import java.util.Properties; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Tests the EchoProperties task. | |||
| * | |||
| * @created 17-Jan-2002 | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class EchoPropertiesTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| private static final String GOOD_OUTFILE = "test.properties"; | |||
| private static final String GOOD_OUTFILE_XML = "test.xml"; | |||
| private static final String PREFIX_OUTFILE = "test-prefix.properties"; | |||
| private static final String TEST_VALUE = "isSet"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "echoproperties.xml"); | |||
| buildRule.getProject().setProperty("test.property", TEST_VALUE); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| buildRule.executeTarget("cleanup"); | |||
| } | |||
| @Test | |||
| public void testEchoToLog() { | |||
| buildRule.executeTarget("testEchoToLog"); | |||
| assertContains("test.property=" + TEST_VALUE, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testEchoWithEmptyPrefixToLog() { | |||
| buildRule.executeTarget("testEchoWithEmptyPrefixToLog"); | |||
| assertContains("test.property="+TEST_VALUE, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testReadBadFile() { | |||
| try { | |||
| buildRule.executeTarget("testReadBadFile"); | |||
| fail("BuildException should have been thrown on bad file"); | |||
| } | |||
| catch(BuildException ex) { | |||
| assertContains("srcfile is a directory","srcfile is a directory!", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testReadBadFileNoFail() { | |||
| buildRule.executeTarget("testReadBadFileNoFail"); | |||
| assertContains("srcfile is a directory!", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testEchoToBadFile() { | |||
| try { | |||
| buildRule.executeTarget("testEchoToBadFile"); | |||
| fail("BuildException should have been thrown on destination file being a directory"); | |||
| } catch(BuildException ex) { | |||
| assertContains("destfile is a directory", "destfile is a directory!", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testEchoToBadFileNoFail() { | |||
| buildRule.executeTarget("testEchoToBadFileNoFail"); | |||
| assertContains("destfile is a directory!", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFile() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFile"); | |||
| assertGoodFile(); | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFileXml() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFileXml"); | |||
| // read in the file | |||
| File f = createRelativeFile(GOOD_OUTFILE_XML); | |||
| FileReader fr = new FileReader(f); | |||
| BufferedReader br = new BufferedReader(fr); | |||
| try { | |||
| String read = null; | |||
| while ((read = br.readLine()) != null) { | |||
| if (read.indexOf("<property name=\"test.property\" value=\""+TEST_VALUE+"\" />") >= 0) { | |||
| // found the property we set - it's good. | |||
| return; | |||
| } | |||
| } | |||
| fail("did not encounter set property in generated file."); | |||
| } finally { | |||
| try { | |||
| fr.close(); | |||
| } catch(IOException e) {} | |||
| try { | |||
| br.close(); | |||
| } catch(IOException e) {} | |||
| } | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFileFail() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFileFail"); | |||
| assertGoodFile(); | |||
| } | |||
| @Test | |||
| public void testEchoToGoodFileNoFail() throws Exception { | |||
| buildRule.executeTarget("testEchoToGoodFileNoFail"); | |||
| assertGoodFile(); | |||
| } | |||
| @Test | |||
| public void testEchoPrefix() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefix"); | |||
| } | |||
| @Test | |||
| public void testEchoPrefixAsPropertyset() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefixAsPropertyset"); | |||
| } | |||
| @Test | |||
| public void testEchoPrefixAsNegatedPropertyset() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefixAsNegatedPropertyset"); | |||
| } | |||
| @Test | |||
| public void testEchoPrefixAsDoublyNegatedPropertyset() throws Exception { | |||
| testEchoPrefixVarious("testEchoPrefixAsDoublyNegatedPropertyset"); | |||
| } | |||
| @Test | |||
| public void testWithPrefixAndRegex() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testWithPrefixAndRegex"); | |||
| fail("BuildException should have been thrown on Prefix and RegEx beng set"); | |||
| } catch (BuildException ex) { | |||
| assertEquals("The target must fail with prefix and regex attributes set", "Please specify either prefix or regex, but not both", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testWithEmptyPrefixAndRegex() throws Exception { | |||
| buildRule.executeTarget("testEchoWithEmptyPrefixToLog"); | |||
| assertContains("test.property="+TEST_VALUE, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testWithRegex() throws Exception { | |||
| assumeTrue("Test skipped because no regexp matcher is present.", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||
| buildRule.executeTarget("testWithRegex"); | |||
| // the following line has been changed from checking ant.home to ant.version so the test will still work when run outside of an ant script | |||
| assertContains("ant.version=", buildRule.getFullLog()); | |||
| } | |||
| private void testEchoPrefixVarious(String target) throws Exception { | |||
| buildRule.executeTarget(target); | |||
| Properties props = loadPropFile(PREFIX_OUTFILE); | |||
| assertEquals("prefix didn't include 'a.set' property", | |||
| "true", props.getProperty("a.set")); | |||
| assertNull("prefix failed to filter out property 'b.set'", | |||
| props.getProperty("b.set")); | |||
| } | |||
| protected Properties loadPropFile(String relativeFilename) | |||
| throws IOException { | |||
| File f = createRelativeFile(relativeFilename); | |||
| Properties props=new Properties(); | |||
| InputStream in=null; | |||
| try { | |||
| in=new BufferedInputStream(new FileInputStream(f)); | |||
| props.load(in); | |||
| } finally { | |||
| if(in!=null) { | |||
| try { in.close(); } catch(IOException e) {} | |||
| } | |||
| } | |||
| return props; | |||
| } | |||
| protected void assertGoodFile() throws Exception { | |||
| File f = createRelativeFile(GOOD_OUTFILE); | |||
| assertTrue("Did not create "+f.getAbsolutePath(), | |||
| f.exists()); | |||
| Properties props=loadPropFile(GOOD_OUTFILE); | |||
| props.list(System.out); | |||
| assertEquals("test property not found ", | |||
| TEST_VALUE, props.getProperty("test.property")); | |||
| } | |||
| protected String toAbsolute(String filename) { | |||
| return createRelativeFile(filename).getAbsolutePath(); | |||
| } | |||
| protected File createRelativeFile(String filename) { | |||
| if (filename.equals(".")) { | |||
| return buildRule.getProject().getBaseDir(); | |||
| } | |||
| // else | |||
| return new File(buildRule.getProject().getBaseDir(), filename); | |||
| } | |||
| } | |||
| @@ -1,60 +1,60 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertTrue; | |||
| public class JavahTest { | |||
| private final static String BUILD_XML = | |||
| "src/etc/testcases/taskdefs/optional/javah/build.xml"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(BUILD_XML); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| buildRule.executeTarget("tearDown"); | |||
| } | |||
| @Test | |||
| public void testSimpleCompile() { | |||
| buildRule.executeTarget("simple-compile"); | |||
| assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h") | |||
| .exists()); | |||
| } | |||
| @Test | |||
| public void testCompileFileset() { | |||
| buildRule.executeTarget("test-fileset"); | |||
| assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h").exists()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertTrue; | |||
| public class JavahTest { | |||
| private final static String BUILD_XML = | |||
| "src/etc/testcases/taskdefs/optional/javah/build.xml"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(BUILD_XML); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| buildRule.executeTarget("tearDown"); | |||
| } | |||
| @Test | |||
| public void testSimpleCompile() { | |||
| buildRule.executeTarget("simple-compile"); | |||
| assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h") | |||
| .exists()); | |||
| } | |||
| @Test | |||
| public void testCompileFileset() { | |||
| buildRule.executeTarget("test-fileset"); | |||
| assertTrue(new File(buildRule.getProject().getProperty("output"), "org_example_Foo.h").exists()); | |||
| } | |||
| } | |||
| @@ -1,200 +1,199 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import java.io.File; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.Jasper41Mangler; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.JspMangler; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.JspNameMangler; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.compilers.JspCompilerAdapter; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.compilers.JspCompilerAdapterFactory; | |||
| import org.junit.Before; | |||
| import org.junit.Ignore; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the Jspc task. | |||
| * | |||
| * created 07 March 2002 | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class JspcTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "jspc.xml"); | |||
| } | |||
| @Test | |||
| public void testSimple() { | |||
| executeJspCompile("testSimple", "simple_jsp.java"); | |||
| } | |||
| @Test | |||
| public void testUriroot() throws Exception { | |||
| executeJspCompile("testUriroot", "uriroot_jsp.java"); | |||
| } | |||
| @Test | |||
| public void testXml() throws Exception { | |||
| executeJspCompile("testXml", "xml_jsp.java"); | |||
| } | |||
| /** | |||
| * try a keyword in a file | |||
| */ | |||
| @Test | |||
| public void testKeyword() throws Exception { | |||
| executeJspCompile("testKeyword", "default_jsp.java"); | |||
| } | |||
| /** | |||
| * what happens to 1nvalid-classname | |||
| */ | |||
| @Test | |||
| public void testInvalidClassname() throws Exception { | |||
| executeJspCompile("testInvalidClassname", | |||
| "_1nvalid_0002dclassname_jsp.java"); | |||
| } | |||
| @Test | |||
| public void testNoTld() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoTld"); | |||
| fail("Not found"); | |||
| } catch (BuildException ex) { | |||
| assertEquals("Java returned: 9", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNotAJspFile() throws Exception { | |||
| buildRule.executeTarget("testNotAJspFile"); | |||
| } | |||
| /** | |||
| * webapp test is currently broken, because it picks up | |||
| * on the missing_tld file, and bails. | |||
| */ | |||
| @Ignore("picks up on the missing_tld file, and incorrectly bails") | |||
| @Test | |||
| public void testWebapp() throws Exception { | |||
| buildRule.executeTarget("testWebapp"); | |||
| } | |||
| /** | |||
| * run a target then verify the named file gets created | |||
| * | |||
| * @param target Description of Parameter | |||
| * @param javafile Description of Parameter | |||
| */ | |||
| protected void executeJspCompile(String target, String javafile) { | |||
| buildRule.executeTarget(target); | |||
| assertJavaFileCreated(javafile); | |||
| } | |||
| /** | |||
| * verify that a named file was created | |||
| * | |||
| * @param filename Description of Parameter | |||
| */ | |||
| protected void assertJavaFileCreated(String filename) { | |||
| File file = getOutputFile(filename); | |||
| assertTrue("file " + filename + " not found", file.exists()); | |||
| assertTrue("file " + filename + " is empty", file.length() > 0); | |||
| } | |||
| /** | |||
| * Gets the OutputFile attribute of the JspcTest object | |||
| * | |||
| * @param subpath Description of Parameter | |||
| * @return The OutputFile value | |||
| */ | |||
| protected File getOutputFile(String subpath) { | |||
| return new File(buildRule.getProject().getProperty("output"), subpath); | |||
| } | |||
| /** | |||
| * verify that we select the appropriate mangler | |||
| */ | |||
| @Test | |||
| public void testJasperNameManglerSelection() { | |||
| JspCompilerAdapter adapter= | |||
| JspCompilerAdapterFactory.getCompiler("jasper", null,null); | |||
| JspMangler mangler=adapter.createMangler(); | |||
| assertTrue(mangler instanceof JspNameMangler); | |||
| adapter= JspCompilerAdapterFactory.getCompiler("jasper41", null, null); | |||
| mangler = adapter.createMangler(); | |||
| assertTrue(mangler instanceof Jasper41Mangler); | |||
| } | |||
| @Test | |||
| public void testJasper41() { | |||
| JspMangler mangler = new Jasper41Mangler(); | |||
| //java keywords are not special | |||
| assertMapped(mangler, "for.jsp", "for_jsp"); | |||
| //underscores go in front of invalid start chars | |||
| assertMapped(mangler, "0.jsp", "_0_jsp"); | |||
| //underscores at the front get an underscore too | |||
| assertMapped(mangler, "_.jsp", "___jsp"); | |||
| //non java char at start => underscore then the the _hex value | |||
| assertMapped(mangler, "-.jsp", "__0002d_jsp"); | |||
| //and paths are stripped | |||
| char s = File.separatorChar; | |||
| assertMapped(mangler, "" + s + s + "somewhere" + s + "file" + s + "index.jsp", "index_jsp"); | |||
| } | |||
| /** | |||
| * assert our mapping rules | |||
| * @param mangler | |||
| * @param filename | |||
| * @param classname | |||
| */ | |||
| protected void assertMapped(JspMangler mangler, String filename, String classname) { | |||
| String mappedname = mangler.mapJspToJavaName(new File(filename)); | |||
| assertTrue(filename+" should have mapped to "+classname | |||
| +" but instead mapped to "+mappedname, | |||
| classname.equals(mappedname)); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import java.io.File; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.Jasper41Mangler; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.JspMangler; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.JspNameMangler; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.compilers.JspCompilerAdapter; | |||
| import org.apache.tools.ant.taskdefs.optional.jsp.compilers.JspCompilerAdapterFactory; | |||
| import org.junit.Before; | |||
| import org.junit.Ignore; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the Jspc task. | |||
| * | |||
| * created 07 March 2002 | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class JspcTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "jspc.xml"); | |||
| } | |||
| @Test | |||
| public void testSimple() { | |||
| executeJspCompile("testSimple", "simple_jsp.java"); | |||
| } | |||
| @Test | |||
| public void testUriroot() throws Exception { | |||
| executeJspCompile("testUriroot", "uriroot_jsp.java"); | |||
| } | |||
| @Test | |||
| public void testXml() throws Exception { | |||
| executeJspCompile("testXml", "xml_jsp.java"); | |||
| } | |||
| /** | |||
| * try a keyword in a file | |||
| */ | |||
| @Test | |||
| public void testKeyword() throws Exception { | |||
| executeJspCompile("testKeyword", "default_jsp.java"); | |||
| } | |||
| /** | |||
| * what happens to 1nvalid-classname | |||
| */ | |||
| @Test | |||
| public void testInvalidClassname() throws Exception { | |||
| executeJspCompile("testInvalidClassname", | |||
| "_1nvalid_0002dclassname_jsp.java"); | |||
| } | |||
| @Test | |||
| public void testNoTld() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoTld"); | |||
| fail("Not found"); | |||
| } catch (BuildException ex) { | |||
| assertEquals("Java returned: 9", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNotAJspFile() throws Exception { | |||
| buildRule.executeTarget("testNotAJspFile"); | |||
| } | |||
| /** | |||
| * webapp test is currently broken, because it picks up | |||
| * on the missing_tld file, and bails. | |||
| */ | |||
| @Ignore("picks up on the missing_tld file, and incorrectly bails") | |||
| @Test | |||
| public void testWebapp() throws Exception { | |||
| buildRule.executeTarget("testWebapp"); | |||
| } | |||
| /** | |||
| * run a target then verify the named file gets created | |||
| * | |||
| * @param target Description of Parameter | |||
| * @param javafile Description of Parameter | |||
| */ | |||
| protected void executeJspCompile(String target, String javafile) { | |||
| buildRule.executeTarget(target); | |||
| assertJavaFileCreated(javafile); | |||
| } | |||
| /** | |||
| * verify that a named file was created | |||
| * | |||
| * @param filename Description of Parameter | |||
| */ | |||
| protected void assertJavaFileCreated(String filename) { | |||
| File file = getOutputFile(filename); | |||
| assertTrue("file " + filename + " not found", file.exists()); | |||
| assertTrue("file " + filename + " is empty", file.length() > 0); | |||
| } | |||
| /** | |||
| * Gets the OutputFile attribute of the JspcTest object | |||
| * | |||
| * @param subpath Description of Parameter | |||
| * @return The OutputFile value | |||
| */ | |||
| protected File getOutputFile(String subpath) { | |||
| return new File(buildRule.getProject().getProperty("output"), subpath); | |||
| } | |||
| /** | |||
| * verify that we select the appropriate mangler | |||
| */ | |||
| @Test | |||
| public void testJasperNameManglerSelection() { | |||
| JspCompilerAdapter adapter= | |||
| JspCompilerAdapterFactory.getCompiler("jasper", null,null); | |||
| JspMangler mangler=adapter.createMangler(); | |||
| assertTrue(mangler instanceof JspNameMangler); | |||
| adapter= JspCompilerAdapterFactory.getCompiler("jasper41", null, null); | |||
| mangler = adapter.createMangler(); | |||
| assertTrue(mangler instanceof Jasper41Mangler); | |||
| } | |||
| @Test | |||
| public void testJasper41() { | |||
| JspMangler mangler = new Jasper41Mangler(); | |||
| //java keywords are not special | |||
| assertMapped(mangler, "for.jsp", "for_jsp"); | |||
| //underscores go in front of invalid start chars | |||
| assertMapped(mangler, "0.jsp", "_0_jsp"); | |||
| //underscores at the front get an underscore too | |||
| assertMapped(mangler, "_.jsp", "___jsp"); | |||
| //non java char at start => underscore then the the _hex value | |||
| assertMapped(mangler, "-.jsp", "__0002d_jsp"); | |||
| //and paths are stripped | |||
| char s = File.separatorChar; | |||
| assertMapped(mangler, "" + s + s + "somewhere" + s + "file" + s + "index.jsp", "index_jsp"); | |||
| } | |||
| /** | |||
| * assert our mapping rules | |||
| * @param mangler | |||
| * @param filename | |||
| * @param classname | |||
| */ | |||
| protected void assertMapped(JspMangler mangler, String filename, String classname) { | |||
| String mappedname = mangler.mapJspToJavaName(new File(filename)); | |||
| assertTrue(filename+" should have mapped to "+classname | |||
| +" but instead mapped to "+mappedname, | |||
| classname.equals(mappedname)); | |||
| } | |||
| } | |||
| @@ -1,57 +1,57 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import java.io.File; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertTrue; | |||
| public class Native2AsciiTest { | |||
| private final static String BUILD_XML = | |||
| "src/etc/testcases/taskdefs/optional/native2ascii/build.xml"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(BUILD_XML); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| buildRule.executeTarget("tearDown"); | |||
| } | |||
| @Test | |||
| public void testIso8859_1() throws java.io.IOException { | |||
| buildRule.executeTarget("testIso8859-1"); | |||
| File in = buildRule.getProject().resolveFile("expected/iso8859-1.test"); | |||
| File out = new File(buildRule.getProject().getProperty("output"), "iso8859-1.test"); | |||
| assertTrue(FileUtils.getFileUtils().contentEquals(in, out, true)); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import java.io.File; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertTrue; | |||
| public class Native2AsciiTest { | |||
| private final static String BUILD_XML = | |||
| "src/etc/testcases/taskdefs/optional/native2ascii/build.xml"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(BUILD_XML); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| buildRule.executeTarget("tearDown"); | |||
| } | |||
| @Test | |||
| public void testIso8859_1() throws java.io.IOException { | |||
| buildRule.executeTarget("testIso8859-1"); | |||
| File in = buildRule.getProject().resolveFile("expected/iso8859-1.test"); | |||
| File out = new File(buildRule.getProject().getProperty("output"), "iso8859-1.test"); | |||
| assertTrue(FileUtils.getFileUtils().contentEquals(in, out, true)); | |||
| } | |||
| } | |||
| @@ -1,235 +1,235 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.util.Properties; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Ignore; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertFalse; | |||
| import static org.junit.Assert.assertNull; | |||
| import static org.junit.Assert.assertTrue; | |||
| /** | |||
| * JUnit testcase that exercises the optional PropertyFile task in ant. | |||
| * (this is really more of a functional test so far.., but it's enough to let | |||
| * me start refactoring...) | |||
| * | |||
| *created October 2, 2001 | |||
| */ | |||
| public class PropertyFileTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() throws Exception { | |||
| buildRule.configureProject(projectFilePath); | |||
| buildRule.executeTarget("setUp"); | |||
| initTestPropFile(); | |||
| initBuildPropFile(); | |||
| buildRule.configureProject(projectFilePath); | |||
| buildRule.getProject().setProperty(valueDoesNotGetOverwrittenPropertyFileKey, | |||
| valueDoesNotGetOverwrittenPropertyFile); | |||
| } | |||
| @Test | |||
| public void testNonExistingFile() { | |||
| PropertyFile props = new PropertyFile(); | |||
| props.setProject( buildRule.getProject() ); | |||
| File file = new File("this-file-does-not-exist.properties"); | |||
| props.setFile(file); | |||
| assertFalse("Properties file exists before test.", file.exists()); | |||
| props.execute(); | |||
| assertTrue("Properties file does not exist after test.", file.exists()); | |||
| file.delete(); | |||
| } | |||
| /** | |||
| * A unit test for JUnit- Exercises the propertyfile tasks ability to | |||
| * update properties that are already defined- | |||
| */ | |||
| @Test | |||
| public void testUpdatesExistingProperties() throws Exception { | |||
| Properties beforeUpdate = getTestProperties(); | |||
| assertEquals(FNAME, beforeUpdate.getProperty(FNAME_KEY)); | |||
| assertEquals(LNAME, beforeUpdate.getProperty(LNAME_KEY)); | |||
| assertEquals(EMAIL, beforeUpdate.getProperty(EMAIL_KEY)); | |||
| assertEquals(null, beforeUpdate.getProperty(PHONE_KEY)); | |||
| assertEquals(null, beforeUpdate.getProperty(AGE_KEY)); | |||
| assertEquals(null, beforeUpdate.getProperty(DATE_KEY)); | |||
| // ask ant to update the properties... | |||
| buildRule.executeTarget("update-existing-properties"); | |||
| Properties afterUpdate = getTestProperties(); | |||
| assertEquals(NEW_FNAME, afterUpdate.getProperty(FNAME_KEY)); | |||
| assertEquals(NEW_LNAME, afterUpdate.getProperty(LNAME_KEY)); | |||
| assertEquals(NEW_EMAIL, afterUpdate.getProperty(EMAIL_KEY)); | |||
| assertEquals(NEW_PHONE, afterUpdate.getProperty(PHONE_KEY)); | |||
| assertEquals(NEW_AGE, afterUpdate.getProperty(AGE_KEY)); | |||
| assertEquals(NEW_DATE, afterUpdate.getProperty(DATE_KEY)); | |||
| } | |||
| @Test | |||
| public void testDeleteProperties() throws Exception { | |||
| Properties beforeUpdate = getTestProperties(); | |||
| assertEquals("Property '" + FNAME_KEY + "' should exist before deleting", | |||
| FNAME, beforeUpdate.getProperty(FNAME_KEY)); | |||
| assertEquals("Property '" + LNAME_KEY + "' should exist before deleting", | |||
| LNAME, beforeUpdate.getProperty(LNAME_KEY)); | |||
| buildRule.executeTarget("delete-properties"); | |||
| Properties afterUpdate = getTestProperties(); | |||
| assertEquals("Property '" + LNAME_KEY + "' should exist after deleting", | |||
| LNAME, afterUpdate.getProperty(LNAME_KEY)); | |||
| assertNull("Property '" + FNAME_KEY + "' should be deleted", | |||
| afterUpdate.getProperty(FNAME_KEY)); | |||
| } | |||
| @Test | |||
| public void testExerciseDefaultAndIncrement() throws Exception { | |||
| buildRule.executeTarget("exercise"); | |||
| assertEquals("3",buildRule.getProject().getProperty("int.with.default")); | |||
| assertEquals("1",buildRule.getProject().getProperty("int.without.default")); | |||
| assertEquals("-->",buildRule.getProject().getProperty("string.with.default")); | |||
| assertEquals(".",buildRule.getProject().getProperty("string.without.default")); | |||
| assertEquals("2002/01/21 12:18", buildRule.getProject().getProperty("ethans.birth")); | |||
| assertEquals("2003/01/21", buildRule.getProject().getProperty("first.birthday")); | |||
| assertEquals("0124", buildRule.getProject().getProperty("olderThanAWeek")); | |||
| assertEquals("37", buildRule.getProject().getProperty("existing.prop")); | |||
| assertEquals("6",buildRule.getProject().getProperty("int.without.value")); | |||
| } | |||
| @Test | |||
| public void testValueDoesNotGetOverwritten() { | |||
| // this test shows that the bug report 21505 is fixed | |||
| buildRule.executeTarget("bugDemo1"); | |||
| buildRule.executeTarget("bugDemo2"); | |||
| assertEquals("5", buildRule.getProject().getProperty("foo")); | |||
| } | |||
| @Test | |||
| @Ignore("Previously commented out") | |||
| public void testDirect() throws Exception { | |||
| PropertyFile pf = new PropertyFile(); | |||
| pf.setProject(buildRule.getProject()); | |||
| pf.setFile(new File(System.getProperty("root"), testPropsFilePath)); | |||
| PropertyFile.Entry entry = pf.createEntry(); | |||
| entry.setKey("date"); | |||
| entry.setValue("123"); | |||
| PropertyFile.Entry.Type type = new PropertyFile.Entry.Type(); | |||
| type.setValue("date"); | |||
| entry.setType(type); | |||
| entry.setPattern("yyyy/MM/dd"); | |||
| PropertyFile.Entry.Operation operation = new PropertyFile.Entry.Operation(); | |||
| operation.setValue("+"); | |||
| pf.execute(); | |||
| Properties props = getTestProperties(); | |||
| assertEquals("yeehaw", props.getProperty("date")); | |||
| } | |||
| private Properties getTestProperties() throws Exception { | |||
| Properties testProps = new Properties(); | |||
| FileInputStream propsFile = new FileInputStream(new File(buildRule.getOutputDir(), testPropsFilePath)); | |||
| testProps.load(propsFile); | |||
| propsFile.close(); | |||
| return testProps; | |||
| } | |||
| private void initTestPropFile() throws IOException { | |||
| Properties testProps = new Properties(); | |||
| testProps.put(FNAME_KEY, FNAME); | |||
| testProps.put(LNAME_KEY, LNAME); | |||
| testProps.put(EMAIL_KEY, EMAIL); | |||
| testProps.put("existing.prop", "37"); | |||
| FileOutputStream fos = new FileOutputStream(new File(buildRule.getOutputDir(), testPropsFilePath)); | |||
| testProps.store(fos, "defaults"); | |||
| fos.close(); | |||
| } | |||
| private void initBuildPropFile() throws IOException { | |||
| Properties buildProps = new Properties(); | |||
| buildProps.put(testPropertyFileKey, testPropertyFile); | |||
| buildProps.put(FNAME_KEY, NEW_FNAME); | |||
| buildProps.put(LNAME_KEY, NEW_LNAME); | |||
| buildProps.put(EMAIL_KEY, NEW_EMAIL); | |||
| buildProps.put(PHONE_KEY, NEW_PHONE); | |||
| buildProps.put(AGE_KEY, NEW_AGE); | |||
| buildProps.put(DATE_KEY, NEW_DATE); | |||
| FileOutputStream fos = new FileOutputStream(new File(buildRule.getOutputDir(), buildPropsFilePath)); | |||
| buildProps.store(fos, null); | |||
| fos.close(); | |||
| } | |||
| private static final String | |||
| projectFilePath = "src/etc/testcases/taskdefs/optional/propertyfile.xml", | |||
| testPropertyFile = "propertyfile.test.properties", | |||
| testPropertyFileKey = "test.propertyfile", | |||
| testPropsFilePath = testPropertyFile, | |||
| valueDoesNotGetOverwrittenPropertyFile = "overwrite.test.properties", | |||
| valueDoesNotGetOverwrittenPropertyFileKey = "overwrite.test.propertyfile", | |||
| valueDoesNotGetOverwrittenPropsFilePath = valueDoesNotGetOverwrittenPropertyFile, | |||
| buildPropsFilePath = "propertyfile.build.properties", | |||
| FNAME = "Bruce", | |||
| NEW_FNAME = "Clark", | |||
| FNAME_KEY = "firstname", | |||
| LNAME = "Banner", | |||
| NEW_LNAME = "Kent", | |||
| LNAME_KEY = "lastname", | |||
| EMAIL = "incredible@hulk.com", | |||
| NEW_EMAIL = "kc@superman.com", | |||
| EMAIL_KEY = "email", | |||
| NEW_PHONE = "(520) 555-1212", | |||
| PHONE_KEY = "phone", | |||
| NEW_AGE = "30", | |||
| AGE_KEY = "age", | |||
| NEW_DATE = "2001/01/01 12:45", | |||
| DATE_KEY = "date"; | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.util.Properties; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Ignore; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertFalse; | |||
| import static org.junit.Assert.assertNull; | |||
| import static org.junit.Assert.assertTrue; | |||
| /** | |||
| * JUnit testcase that exercises the optional PropertyFile task in ant. | |||
| * (this is really more of a functional test so far.., but it's enough to let | |||
| * me start refactoring...) | |||
| * | |||
| *created October 2, 2001 | |||
| */ | |||
| public class PropertyFileTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() throws Exception { | |||
| buildRule.configureProject(projectFilePath); | |||
| buildRule.executeTarget("setUp"); | |||
| initTestPropFile(); | |||
| initBuildPropFile(); | |||
| buildRule.configureProject(projectFilePath); | |||
| buildRule.getProject().setProperty(valueDoesNotGetOverwrittenPropertyFileKey, | |||
| valueDoesNotGetOverwrittenPropertyFile); | |||
| } | |||
| @Test | |||
| public void testNonExistingFile() { | |||
| PropertyFile props = new PropertyFile(); | |||
| props.setProject( buildRule.getProject() ); | |||
| File file = new File("this-file-does-not-exist.properties"); | |||
| props.setFile(file); | |||
| assertFalse("Properties file exists before test.", file.exists()); | |||
| props.execute(); | |||
| assertTrue("Properties file does not exist after test.", file.exists()); | |||
| file.delete(); | |||
| } | |||
| /** | |||
| * A unit test for JUnit- Exercises the propertyfile tasks ability to | |||
| * update properties that are already defined- | |||
| */ | |||
| @Test | |||
| public void testUpdatesExistingProperties() throws Exception { | |||
| Properties beforeUpdate = getTestProperties(); | |||
| assertEquals(FNAME, beforeUpdate.getProperty(FNAME_KEY)); | |||
| assertEquals(LNAME, beforeUpdate.getProperty(LNAME_KEY)); | |||
| assertEquals(EMAIL, beforeUpdate.getProperty(EMAIL_KEY)); | |||
| assertEquals(null, beforeUpdate.getProperty(PHONE_KEY)); | |||
| assertEquals(null, beforeUpdate.getProperty(AGE_KEY)); | |||
| assertEquals(null, beforeUpdate.getProperty(DATE_KEY)); | |||
| // ask ant to update the properties... | |||
| buildRule.executeTarget("update-existing-properties"); | |||
| Properties afterUpdate = getTestProperties(); | |||
| assertEquals(NEW_FNAME, afterUpdate.getProperty(FNAME_KEY)); | |||
| assertEquals(NEW_LNAME, afterUpdate.getProperty(LNAME_KEY)); | |||
| assertEquals(NEW_EMAIL, afterUpdate.getProperty(EMAIL_KEY)); | |||
| assertEquals(NEW_PHONE, afterUpdate.getProperty(PHONE_KEY)); | |||
| assertEquals(NEW_AGE, afterUpdate.getProperty(AGE_KEY)); | |||
| assertEquals(NEW_DATE, afterUpdate.getProperty(DATE_KEY)); | |||
| } | |||
| @Test | |||
| public void testDeleteProperties() throws Exception { | |||
| Properties beforeUpdate = getTestProperties(); | |||
| assertEquals("Property '" + FNAME_KEY + "' should exist before deleting", | |||
| FNAME, beforeUpdate.getProperty(FNAME_KEY)); | |||
| assertEquals("Property '" + LNAME_KEY + "' should exist before deleting", | |||
| LNAME, beforeUpdate.getProperty(LNAME_KEY)); | |||
| buildRule.executeTarget("delete-properties"); | |||
| Properties afterUpdate = getTestProperties(); | |||
| assertEquals("Property '" + LNAME_KEY + "' should exist after deleting", | |||
| LNAME, afterUpdate.getProperty(LNAME_KEY)); | |||
| assertNull("Property '" + FNAME_KEY + "' should be deleted", | |||
| afterUpdate.getProperty(FNAME_KEY)); | |||
| } | |||
| @Test | |||
| public void testExerciseDefaultAndIncrement() throws Exception { | |||
| buildRule.executeTarget("exercise"); | |||
| assertEquals("3",buildRule.getProject().getProperty("int.with.default")); | |||
| assertEquals("1",buildRule.getProject().getProperty("int.without.default")); | |||
| assertEquals("-->",buildRule.getProject().getProperty("string.with.default")); | |||
| assertEquals(".",buildRule.getProject().getProperty("string.without.default")); | |||
| assertEquals("2002/01/21 12:18", buildRule.getProject().getProperty("ethans.birth")); | |||
| assertEquals("2003/01/21", buildRule.getProject().getProperty("first.birthday")); | |||
| assertEquals("0124", buildRule.getProject().getProperty("olderThanAWeek")); | |||
| assertEquals("37", buildRule.getProject().getProperty("existing.prop")); | |||
| assertEquals("6",buildRule.getProject().getProperty("int.without.value")); | |||
| } | |||
| @Test | |||
| public void testValueDoesNotGetOverwritten() { | |||
| // this test shows that the bug report 21505 is fixed | |||
| buildRule.executeTarget("bugDemo1"); | |||
| buildRule.executeTarget("bugDemo2"); | |||
| assertEquals("5", buildRule.getProject().getProperty("foo")); | |||
| } | |||
| @Test | |||
| @Ignore("Previously commented out") | |||
| public void testDirect() throws Exception { | |||
| PropertyFile pf = new PropertyFile(); | |||
| pf.setProject(buildRule.getProject()); | |||
| pf.setFile(new File(System.getProperty("root"), testPropsFilePath)); | |||
| PropertyFile.Entry entry = pf.createEntry(); | |||
| entry.setKey("date"); | |||
| entry.setValue("123"); | |||
| PropertyFile.Entry.Type type = new PropertyFile.Entry.Type(); | |||
| type.setValue("date"); | |||
| entry.setType(type); | |||
| entry.setPattern("yyyy/MM/dd"); | |||
| PropertyFile.Entry.Operation operation = new PropertyFile.Entry.Operation(); | |||
| operation.setValue("+"); | |||
| pf.execute(); | |||
| Properties props = getTestProperties(); | |||
| assertEquals("yeehaw", props.getProperty("date")); | |||
| } | |||
| private Properties getTestProperties() throws Exception { | |||
| Properties testProps = new Properties(); | |||
| FileInputStream propsFile = new FileInputStream(new File(buildRule.getOutputDir(), testPropsFilePath)); | |||
| testProps.load(propsFile); | |||
| propsFile.close(); | |||
| return testProps; | |||
| } | |||
| private void initTestPropFile() throws IOException { | |||
| Properties testProps = new Properties(); | |||
| testProps.put(FNAME_KEY, FNAME); | |||
| testProps.put(LNAME_KEY, LNAME); | |||
| testProps.put(EMAIL_KEY, EMAIL); | |||
| testProps.put("existing.prop", "37"); | |||
| FileOutputStream fos = new FileOutputStream(new File(buildRule.getOutputDir(), testPropsFilePath)); | |||
| testProps.store(fos, "defaults"); | |||
| fos.close(); | |||
| } | |||
| private void initBuildPropFile() throws IOException { | |||
| Properties buildProps = new Properties(); | |||
| buildProps.put(testPropertyFileKey, testPropertyFile); | |||
| buildProps.put(FNAME_KEY, NEW_FNAME); | |||
| buildProps.put(LNAME_KEY, NEW_LNAME); | |||
| buildProps.put(EMAIL_KEY, NEW_EMAIL); | |||
| buildProps.put(PHONE_KEY, NEW_PHONE); | |||
| buildProps.put(AGE_KEY, NEW_AGE); | |||
| buildProps.put(DATE_KEY, NEW_DATE); | |||
| FileOutputStream fos = new FileOutputStream(new File(buildRule.getOutputDir(), buildPropsFilePath)); | |||
| buildProps.store(fos, null); | |||
| fos.close(); | |||
| } | |||
| private static final String | |||
| projectFilePath = "src/etc/testcases/taskdefs/optional/propertyfile.xml", | |||
| testPropertyFile = "propertyfile.test.properties", | |||
| testPropertyFileKey = "test.propertyfile", | |||
| testPropsFilePath = testPropertyFile, | |||
| valueDoesNotGetOverwrittenPropertyFile = "overwrite.test.properties", | |||
| valueDoesNotGetOverwrittenPropertyFileKey = "overwrite.test.propertyfile", | |||
| valueDoesNotGetOverwrittenPropsFilePath = valueDoesNotGetOverwrittenPropertyFile, | |||
| buildPropsFilePath = "propertyfile.build.properties", | |||
| FNAME = "Bruce", | |||
| NEW_FNAME = "Clark", | |||
| FNAME_KEY = "firstname", | |||
| LNAME = "Banner", | |||
| NEW_LNAME = "Kent", | |||
| LNAME_KEY = "lastname", | |||
| EMAIL = "incredible@hulk.com", | |||
| NEW_EMAIL = "kc@superman.com", | |||
| EMAIL_KEY = "email", | |||
| NEW_PHONE = "(520) 555-1212", | |||
| PHONE_KEY = "phone", | |||
| NEW_AGE = "30", | |||
| AGE_KEY = "age", | |||
| NEW_DATE = "2001/01/01 12:45", | |||
| DATE_KEY = "date"; | |||
| } | |||
| @@ -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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| public class PvcsTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/pvcs.xml"); | |||
| } | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("Required argument repository not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| buildRule.executeTarget("test2"); | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| buildRule.executeTarget("test3"); | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.executeTarget("test4"); | |||
| } | |||
| @Test | |||
| public void test5() { | |||
| buildRule.executeTarget("test5"); | |||
| } | |||
| @Test | |||
| public void test6() { | |||
| try { | |||
| buildRule.executeTarget("test6"); | |||
| fail("Failed executing: /never/heard/of/a/directory/structure/like/this/pcli lvf -z " + | |||
| "-aw -pr//ct4serv2/pvcs/monitor /. Exception: /never/heard/of/a/directory/structure/like/this/pcli: not found"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| public class PvcsTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/pvcs.xml"); | |||
| } | |||
| @Test | |||
| public void test1() { | |||
| try { | |||
| buildRule.executeTarget("test1"); | |||
| fail("Required argument repository not specified"); | |||
| } catch (BuildException ex) { | |||
| //TODO check exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| buildRule.executeTarget("test2"); | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| buildRule.executeTarget("test3"); | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.executeTarget("test4"); | |||
| } | |||
| @Test | |||
| public void test5() { | |||
| buildRule.executeTarget("test5"); | |||
| } | |||
| @Test | |||
| public void test6() { | |||
| try { | |||
| buildRule.executeTarget("test6"); | |||
| fail("Failed executing: /never/heard/of/a/directory/structure/like/this/pcli lvf -z " + | |||
| "-aw -pr//ct4serv2/pvcs/monitor /. Exception: /never/heard/of/a/directory/structure/like/this/pcli: not found"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| } | |||
| @@ -1,132 +1,132 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.FileUtilities; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.util.Properties; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.IOException; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.assertNull; | |||
| import static org.junit.Assume.assumeTrue; | |||
| /** | |||
| * JUnit Testcase for the optional replaceregexp task. | |||
| * | |||
| */ | |||
| public class ReplaceRegExpTest { | |||
| private static final String PROJECT_PATH = "src/etc/testcases/taskdefs/optional"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(PROJECT_PATH + "/replaceregexp.xml"); | |||
| } | |||
| @Test | |||
| public void testReplace() throws IOException { | |||
| Properties original = new Properties(); | |||
| FileInputStream propsFile = null; | |||
| try { | |||
| propsFile = new FileInputStream(new File(buildRule.getProject().getBaseDir() + "/replaceregexp.properties")); | |||
| original.load(propsFile); | |||
| } finally { | |||
| if (propsFile != null) { | |||
| propsFile.close(); | |||
| propsFile = null; | |||
| } | |||
| } | |||
| assertEquals("Def", original.get("OldAbc")); | |||
| buildRule.executeTarget("testReplace"); | |||
| Properties after = new Properties(); | |||
| try { | |||
| propsFile = new FileInputStream(new File(buildRule.getOutputDir(), "test.properties")); | |||
| after.load(propsFile); | |||
| } finally { | |||
| if (propsFile != null) { | |||
| propsFile.close(); | |||
| } | |||
| } | |||
| assertNull(after.get("OldAbc")); | |||
| assertEquals("AbcDef", after.get("NewProp")); | |||
| } | |||
| // inspired by bug 22541 | |||
| @Test | |||
| public void testDirectoryDateDoesNotChange() { | |||
| buildRule.executeTarget("touchDirectory"); | |||
| File myFile = buildRule.getOutputDir(); | |||
| long timeStampBefore = myFile.lastModified(); | |||
| buildRule.executeTarget("testDirectoryDateDoesNotChange"); | |||
| long timeStampAfter = myFile.lastModified(); | |||
| assertEquals("directory date should not change", | |||
| timeStampBefore, timeStampAfter); | |||
| } | |||
| @Test | |||
| public void testDontAddNewline1() throws IOException { | |||
| buildRule.executeTarget("testDontAddNewline1"); | |||
| assertEquals(FileUtilities.getFileContents(new File(buildRule.getOutputDir(), "test.properties")), | |||
| FileUtilities.getFileContents(new File(buildRule.getProject().getBaseDir(), "replaceregexp2.result.properties"))); | |||
| } | |||
| @Test | |||
| public void testDontAddNewline2() throws IOException { | |||
| buildRule.executeTarget("testDontAddNewline2"); | |||
| assertEquals(FileUtilities.getFileContents(new File(buildRule.getOutputDir(), "test.properties")), | |||
| FileUtilities.getFileContents(new File(buildRule.getProject().getBaseDir(), "replaceregexp2.result.properties"))); | |||
| } | |||
| @Test | |||
| public void testNoPreserveLastModified() throws Exception { | |||
| buildRule.executeTarget("lastModifiedSetup"); | |||
| File testFile = new File(buildRule.getOutputDir(), "test.txt"); | |||
| assumeTrue(testFile.setLastModified(testFile.lastModified() | |||
| - (FileUtils.getFileUtils().getFileTimestampGranularity() * 3))); | |||
| long ts1 = testFile.lastModified(); | |||
| buildRule.executeTarget("testNoPreserve"); | |||
| assertTrue(ts1 < testFile.lastModified()); | |||
| } | |||
| @Test | |||
| public void testPreserveLastModified() throws Exception { | |||
| buildRule.executeTarget("lastModifiedSetup"); | |||
| File testFile = new File(buildRule.getOutputDir(), "test.txt"); | |||
| assumeTrue(testFile.setLastModified(testFile.lastModified() | |||
| - (FileUtils.getFileUtils().getFileTimestampGranularity() * 3))); | |||
| long ts1 = testFile.lastModified(); | |||
| buildRule.executeTarget("testPreserve"); | |||
| assertEquals(ts1 , testFile.lastModified()); | |||
| } | |||
| }// ReplaceRegExpTest | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.FileUtilities; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.util.Properties; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.IOException; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.assertNull; | |||
| import static org.junit.Assume.assumeTrue; | |||
| /** | |||
| * JUnit Testcase for the optional replaceregexp task. | |||
| * | |||
| */ | |||
| public class ReplaceRegExpTest { | |||
| private static final String PROJECT_PATH = "src/etc/testcases/taskdefs/optional"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(PROJECT_PATH + "/replaceregexp.xml"); | |||
| } | |||
| @Test | |||
| public void testReplace() throws IOException { | |||
| Properties original = new Properties(); | |||
| FileInputStream propsFile = null; | |||
| try { | |||
| propsFile = new FileInputStream(new File(buildRule.getProject().getBaseDir() + "/replaceregexp.properties")); | |||
| original.load(propsFile); | |||
| } finally { | |||
| if (propsFile != null) { | |||
| propsFile.close(); | |||
| propsFile = null; | |||
| } | |||
| } | |||
| assertEquals("Def", original.get("OldAbc")); | |||
| buildRule.executeTarget("testReplace"); | |||
| Properties after = new Properties(); | |||
| try { | |||
| propsFile = new FileInputStream(new File(buildRule.getOutputDir(), "test.properties")); | |||
| after.load(propsFile); | |||
| } finally { | |||
| if (propsFile != null) { | |||
| propsFile.close(); | |||
| } | |||
| } | |||
| assertNull(after.get("OldAbc")); | |||
| assertEquals("AbcDef", after.get("NewProp")); | |||
| } | |||
| // inspired by bug 22541 | |||
| @Test | |||
| public void testDirectoryDateDoesNotChange() { | |||
| buildRule.executeTarget("touchDirectory"); | |||
| File myFile = buildRule.getOutputDir(); | |||
| long timeStampBefore = myFile.lastModified(); | |||
| buildRule.executeTarget("testDirectoryDateDoesNotChange"); | |||
| long timeStampAfter = myFile.lastModified(); | |||
| assertEquals("directory date should not change", | |||
| timeStampBefore, timeStampAfter); | |||
| } | |||
| @Test | |||
| public void testDontAddNewline1() throws IOException { | |||
| buildRule.executeTarget("testDontAddNewline1"); | |||
| assertEquals(FileUtilities.getFileContents(new File(buildRule.getOutputDir(), "test.properties")), | |||
| FileUtilities.getFileContents(new File(buildRule.getProject().getBaseDir(), "replaceregexp2.result.properties"))); | |||
| } | |||
| @Test | |||
| public void testDontAddNewline2() throws IOException { | |||
| buildRule.executeTarget("testDontAddNewline2"); | |||
| assertEquals(FileUtilities.getFileContents(new File(buildRule.getOutputDir(), "test.properties")), | |||
| FileUtilities.getFileContents(new File(buildRule.getProject().getBaseDir(), "replaceregexp2.result.properties"))); | |||
| } | |||
| @Test | |||
| public void testNoPreserveLastModified() throws Exception { | |||
| buildRule.executeTarget("lastModifiedSetup"); | |||
| File testFile = new File(buildRule.getOutputDir(), "test.txt"); | |||
| assumeTrue(testFile.setLastModified(testFile.lastModified() | |||
| - (FileUtils.getFileUtils().getFileTimestampGranularity() * 3))); | |||
| long ts1 = testFile.lastModified(); | |||
| buildRule.executeTarget("testNoPreserve"); | |||
| assertTrue(ts1 < testFile.lastModified()); | |||
| } | |||
| @Test | |||
| public void testPreserveLastModified() throws Exception { | |||
| buildRule.executeTarget("lastModifiedSetup"); | |||
| File testFile = new File(buildRule.getOutputDir(), "test.txt"); | |||
| assumeTrue(testFile.setLastModified(testFile.lastModified() | |||
| - (FileUtils.getFileUtils().getFileTimestampGranularity() * 3))); | |||
| long ts1 = testFile.lastModified(); | |||
| buildRule.executeTarget("testPreserve"); | |||
| assertEquals(ts1 , testFile.lastModified()); | |||
| } | |||
| }// ReplaceRegExpTest | |||
| @@ -1,45 +1,45 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Tests using an undefined reference. | |||
| * | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class RhinoReferenceTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject( | |||
| "src/etc/testcases/taskdefs/optional/script_reference.xml"); | |||
| } | |||
| @Test | |||
| public void testScript() { | |||
| buildRule.executeTarget("script"); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Tests using an undefined reference. | |||
| * | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class RhinoReferenceTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject( | |||
| "src/etc/testcases/taskdefs/optional/script_reference.xml"); | |||
| } | |||
| @Test | |||
| public void testScript() { | |||
| buildRule.executeTarget("script"); | |||
| } | |||
| } | |||
| @@ -1,67 +1,67 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertTrue; | |||
| /** | |||
| * Tests the examples of the <script> task docs. | |||
| * | |||
| * @since Ant 1.5.2 | |||
| */ | |||
| public class RhinoScriptTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/script.xml"); | |||
| } | |||
| @Test | |||
| public void testExample1() { | |||
| buildRule.executeTarget("example1"); | |||
| int index = buildRule.getLog().indexOf("1"); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("4", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("9", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("16", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("25", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("36", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("49", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("64", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("81", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("100", index); | |||
| assertTrue(index > -1); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertTrue; | |||
| /** | |||
| * Tests the examples of the <script> task docs. | |||
| * | |||
| * @since Ant 1.5.2 | |||
| */ | |||
| public class RhinoScriptTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/script.xml"); | |||
| } | |||
| @Test | |||
| public void testExample1() { | |||
| buildRule.executeTarget("example1"); | |||
| int index = buildRule.getLog().indexOf("1"); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("4", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("9", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("16", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("25", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("36", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("49", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("64", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("81", index); | |||
| assertTrue(index > -1); | |||
| index = buildRule.getLog().indexOf("100", index); | |||
| assertTrue(index > -1); | |||
| } | |||
| } | |||
| @@ -1,71 +1,71 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.taskdefs.Execute; | |||
| import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| public class RpmTest { | |||
| @Test | |||
| public void testShouldThrowExceptionWhenRpmFails() throws Exception { | |||
| Rpm rpm = new MyRpm(); | |||
| rpm.setProject(new org.apache.tools.ant.Project()); | |||
| rpm.setFailOnError(true); | |||
| // execute | |||
| try { | |||
| rpm.execute(); | |||
| fail("should have thrown a build exception"); | |||
| } catch (BuildException ex) { | |||
| assertContains("' failed with exit code 2", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testShouldNotThrowExceptionWhenRpmFails() throws Exception { | |||
| Rpm rpm = new MyRpm(); | |||
| rpm.execute(); | |||
| } | |||
| // override some of the code so we can test the handling of the | |||
| // return code only. | |||
| public static class MyRpm extends Rpm { | |||
| protected Execute getExecute(Commandline toExecute, | |||
| ExecuteStreamHandler streamhandler) { | |||
| return new Execute() { | |||
| public int execute() { | |||
| // 2 is != 0 and even, so it is considered | |||
| // failure on any platform currently supported | |||
| // by Execute#isFailure. | |||
| return 2; | |||
| } | |||
| }; | |||
| } | |||
| public void log(String msg, int msgLevel) { | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.taskdefs.Execute; | |||
| import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| public class RpmTest { | |||
| @Test | |||
| public void testShouldThrowExceptionWhenRpmFails() throws Exception { | |||
| Rpm rpm = new MyRpm(); | |||
| rpm.setProject(new org.apache.tools.ant.Project()); | |||
| rpm.setFailOnError(true); | |||
| // execute | |||
| try { | |||
| rpm.execute(); | |||
| fail("should have thrown a build exception"); | |||
| } catch (BuildException ex) { | |||
| assertContains("' failed with exit code 2", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testShouldNotThrowExceptionWhenRpmFails() throws Exception { | |||
| Rpm rpm = new MyRpm(); | |||
| rpm.execute(); | |||
| } | |||
| // override some of the code so we can test the handling of the | |||
| // return code only. | |||
| public static class MyRpm extends Rpm { | |||
| protected Execute getExecute(Commandline toExecute, | |||
| ExecuteStreamHandler streamhandler) { | |||
| return new Execute() { | |||
| public int execute() { | |||
| // 2 is != 0 and even, so it is considered | |||
| // failure on any platform currently supported | |||
| // by Execute#isFailure. | |||
| return 2; | |||
| } | |||
| }; | |||
| } | |||
| public void log(String msg, int msgLevel) { | |||
| } | |||
| } | |||
| } | |||
| @@ -1,128 +1,128 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.AntAssert; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Test schema validation | |||
| */ | |||
| public class SchemaValidateTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = | |||
| "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "schemavalidate.xml"); | |||
| } | |||
| /** | |||
| * test with no namespace | |||
| */ | |||
| @Test | |||
| public void testNoNamespace() throws Exception { | |||
| buildRule.executeTarget("testNoNamespace"); | |||
| } | |||
| /** | |||
| * add namespace awareness. | |||
| */ | |||
| @Test | |||
| public void testNSMapping() throws Exception { | |||
| buildRule.executeTarget("testNSMapping"); | |||
| } | |||
| @Test | |||
| public void testNoEmptySchemaNamespace() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoEmptySchemaNamespace"); | |||
| fail("Empty namespace URI"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_NO_URI, ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoEmptySchemaLocation() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoEmptySchemaLocation"); | |||
| fail("Empty schema location"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_NO_LOCATION, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoFile() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoFile"); | |||
| fail("No file at file attribute"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_NO_FILE, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoDoubleSchemaLocation() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoDoubleSchemaLocation"); | |||
| fail("Two locations for schemas"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_TWO_LOCATIONS, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoDuplicateSchema() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoDuplicateSchema"); | |||
| fail("duplicate schemas with different values"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.ERROR_DUPLICATE_SCHEMA, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testEqualsSchemasOK() throws Exception { | |||
| buildRule.executeTarget("testEqualsSchemasOK"); | |||
| } | |||
| @Test | |||
| public void testFileset() throws Exception { | |||
| buildRule.executeTarget("testFileset"); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.AntAssert; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Test schema validation | |||
| */ | |||
| public class SchemaValidateTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = | |||
| "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "schemavalidate.xml"); | |||
| } | |||
| /** | |||
| * test with no namespace | |||
| */ | |||
| @Test | |||
| public void testNoNamespace() throws Exception { | |||
| buildRule.executeTarget("testNoNamespace"); | |||
| } | |||
| /** | |||
| * add namespace awareness. | |||
| */ | |||
| @Test | |||
| public void testNSMapping() throws Exception { | |||
| buildRule.executeTarget("testNSMapping"); | |||
| } | |||
| @Test | |||
| public void testNoEmptySchemaNamespace() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoEmptySchemaNamespace"); | |||
| fail("Empty namespace URI"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_NO_URI, ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoEmptySchemaLocation() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoEmptySchemaLocation"); | |||
| fail("Empty schema location"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_NO_LOCATION, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoFile() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoFile"); | |||
| fail("No file at file attribute"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_NO_FILE, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoDoubleSchemaLocation() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoDoubleSchemaLocation"); | |||
| fail("Two locations for schemas"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.SchemaLocation.ERROR_TWO_LOCATIONS, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoDuplicateSchema() throws Exception { | |||
| try { | |||
| buildRule.executeTarget("testNoDuplicateSchema"); | |||
| fail("duplicate schemas with different values"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains(SchemaValidate.ERROR_DUPLICATE_SCHEMA, | |||
| ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testEqualsSchemasOK() throws Exception { | |||
| buildRule.executeTarget("testEqualsSchemasOK"); | |||
| } | |||
| @Test | |||
| public void testFileset() throws Exception { | |||
| buildRule.executeTarget("testFileset"); | |||
| } | |||
| } | |||
| @@ -1,71 +1,71 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Tests the XMLValidate optional task with nested external catalogs. | |||
| * | |||
| * @see XmlValidateTest | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class XmlValidateCatalogTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "xmlvalidate.xml"); | |||
| } | |||
| /** | |||
| * catalogfiles fileset should be ignored | |||
| * if resolver.jar is not present, but will | |||
| * be used if it is. either way, test should | |||
| * work b/c we have a nested dtd with the same | |||
| * entity | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogFiles() { | |||
| buildRule.executeTarget("xmlcatalogfiles"); | |||
| } | |||
| /** | |||
| * Test nested catalogpath. | |||
| * It should be ignored if resolver.jar is not | |||
| * present, but will be used if it is. either | |||
| * way, test should work b/c we have a nested | |||
| * dtd with the same entity | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogPath() { | |||
| buildRule.executeTarget("xmlcatalogpath"); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Tests the XMLValidate optional task with nested external catalogs. | |||
| * | |||
| * @see XmlValidateTest | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class XmlValidateCatalogTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "xmlvalidate.xml"); | |||
| } | |||
| /** | |||
| * catalogfiles fileset should be ignored | |||
| * if resolver.jar is not present, but will | |||
| * be used if it is. either way, test should | |||
| * work b/c we have a nested dtd with the same | |||
| * entity | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogFiles() { | |||
| buildRule.executeTarget("xmlcatalogfiles"); | |||
| } | |||
| /** | |||
| * Test nested catalogpath. | |||
| * It should be ignored if resolver.jar is not | |||
| * present, but will be used if it is. either | |||
| * way, test should work b/c we have a nested | |||
| * dtd with the same entity | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogPath() { | |||
| buildRule.executeTarget("xmlcatalogpath"); | |||
| } | |||
| } | |||
| @@ -1,193 +1,193 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import org.junit.internal.AssumptionViolatedException; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the XMLValidate optional task, by running targets in the test script | |||
| * <code>src/etc/testcases/taskdefs/optional/xmlvalidate.xml</code> | |||
| * <p> | |||
| * | |||
| * @see XmlValidateCatalogTest | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class XmlValidateTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = | |||
| "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "xmlvalidate.xml"); | |||
| } | |||
| /** | |||
| * Basic inline 'dtd' element test. | |||
| */ | |||
| @Test | |||
| public void testValidate() throws Exception { | |||
| buildRule.executeTarget("testValidate"); | |||
| } | |||
| /** | |||
| * Test indirect validation. | |||
| */ | |||
| @Test | |||
| public void testDeepValidate() throws Exception { | |||
| buildRule.executeTarget("testDeepValidate"); | |||
| } | |||
| @Test | |||
| public void testXmlCatalog() { | |||
| buildRule.executeTarget("xmlcatalog"); | |||
| } | |||
| @Test | |||
| public void testXmlCatalogViaRefid() { | |||
| buildRule.executeTarget("xmlcatalogViaRefid"); | |||
| } | |||
| /** | |||
| * Test that the nested dtd element is used when resolver.jar is not | |||
| * present. This test should pass either way. | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogFiles() { | |||
| buildRule.executeTarget("xmlcatalogfiles-override"); | |||
| } | |||
| /** | |||
| * Test nested catalogpath. | |||
| * Test that the nested dtd element is used when resolver.jar is not | |||
| * present. This test should pass either way. | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogPath() { | |||
| buildRule.executeTarget("xmlcatalogpath-override"); | |||
| } | |||
| /** | |||
| * Test nested xmlcatalog definitions | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogNested() { | |||
| buildRule.executeTarget("xmlcatalognested"); | |||
| } | |||
| /** | |||
| * Test xml schema validation | |||
| */ | |||
| @Test | |||
| public void testXmlSchemaGood() throws BuildException { | |||
| try { | |||
| buildRule.executeTarget("testSchemaGood"); | |||
| } catch (BuildException e) { | |||
| if (e | |||
| .getMessage() | |||
| .endsWith(" doesn't recognize feature http://apache.org/xml/features/validation/schema") | |||
| || e.getMessage().endsWith( | |||
| " doesn't support feature http://apache.org/xml/features/validation/schema")) { | |||
| throw new AssumptionViolatedException("parser doesn't support schema"); | |||
| } else { | |||
| throw e; | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| * Test xml schema validation | |||
| */ | |||
| @Test | |||
| public void testXmlSchemaBad() { | |||
| try { | |||
| buildRule.executeTarget("testSchemaBad"); | |||
| fail("Should throw BuildException because 'Bad Schema Validation'"); | |||
| } catch (BuildException e) { | |||
| if (e | |||
| .getMessage() | |||
| .endsWith(" doesn't recognize feature http://apache.org/xml/features/validation/schema") | |||
| || e.getMessage().endsWith( | |||
| " doesn't support feature http://apache.org/xml/features/validation/schema")) { | |||
| throw new AssumptionViolatedException("parser doesn't support schema"); | |||
| } else { | |||
| assertTrue( | |||
| e.getMessage().indexOf("not a valid XML document") > -1); | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| * iso-2022-jp.xml is valid but wouldn't get recognized on systems | |||
| * with a different native encoding. | |||
| * | |||
| * Bug 11279 | |||
| */ | |||
| @Test | |||
| public void testIso2022Jp() { | |||
| buildRule.executeTarget("testIso2022Jp"); | |||
| } | |||
| /** | |||
| * utf-8.xml is invalid as it contains non-UTF-8 characters, but | |||
| * would pass on systems with a native iso-8859-1 (or similar) | |||
| * encoding. | |||
| * | |||
| * Bug 11279 | |||
| */ | |||
| @Test | |||
| public void testUtf8() { | |||
| try { | |||
| buildRule.executeTarget("testUtf8"); | |||
| fail("Invalid characters in file"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| // Tests property element, using XML schema properties as an example. | |||
| @Test | |||
| public void testPropertySchemaForValidXML() { | |||
| buildRule.executeTarget("testProperty.validXML"); | |||
| } | |||
| @Test | |||
| public void testPropertySchemaForInvalidXML() { | |||
| try { | |||
| buildRule.executeTarget("testProperty.invalidXML"); | |||
| fail("XML file does not satisfy schema"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import org.junit.internal.AssumptionViolatedException; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the XMLValidate optional task, by running targets in the test script | |||
| * <code>src/etc/testcases/taskdefs/optional/xmlvalidate.xml</code> | |||
| * <p> | |||
| * | |||
| * @see XmlValidateCatalogTest | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class XmlValidateTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = | |||
| "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "xmlvalidate.xml"); | |||
| } | |||
| /** | |||
| * Basic inline 'dtd' element test. | |||
| */ | |||
| @Test | |||
| public void testValidate() throws Exception { | |||
| buildRule.executeTarget("testValidate"); | |||
| } | |||
| /** | |||
| * Test indirect validation. | |||
| */ | |||
| @Test | |||
| public void testDeepValidate() throws Exception { | |||
| buildRule.executeTarget("testDeepValidate"); | |||
| } | |||
| @Test | |||
| public void testXmlCatalog() { | |||
| buildRule.executeTarget("xmlcatalog"); | |||
| } | |||
| @Test | |||
| public void testXmlCatalogViaRefid() { | |||
| buildRule.executeTarget("xmlcatalogViaRefid"); | |||
| } | |||
| /** | |||
| * Test that the nested dtd element is used when resolver.jar is not | |||
| * present. This test should pass either way. | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogFiles() { | |||
| buildRule.executeTarget("xmlcatalogfiles-override"); | |||
| } | |||
| /** | |||
| * Test nested catalogpath. | |||
| * Test that the nested dtd element is used when resolver.jar is not | |||
| * present. This test should pass either way. | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogPath() { | |||
| buildRule.executeTarget("xmlcatalogpath-override"); | |||
| } | |||
| /** | |||
| * Test nested xmlcatalog definitions | |||
| */ | |||
| @Test | |||
| public void testXmlCatalogNested() { | |||
| buildRule.executeTarget("xmlcatalognested"); | |||
| } | |||
| /** | |||
| * Test xml schema validation | |||
| */ | |||
| @Test | |||
| public void testXmlSchemaGood() throws BuildException { | |||
| try { | |||
| buildRule.executeTarget("testSchemaGood"); | |||
| } catch (BuildException e) { | |||
| if (e | |||
| .getMessage() | |||
| .endsWith(" doesn't recognize feature http://apache.org/xml/features/validation/schema") | |||
| || e.getMessage().endsWith( | |||
| " doesn't support feature http://apache.org/xml/features/validation/schema")) { | |||
| throw new AssumptionViolatedException("parser doesn't support schema"); | |||
| } else { | |||
| throw e; | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| * Test xml schema validation | |||
| */ | |||
| @Test | |||
| public void testXmlSchemaBad() { | |||
| try { | |||
| buildRule.executeTarget("testSchemaBad"); | |||
| fail("Should throw BuildException because 'Bad Schema Validation'"); | |||
| } catch (BuildException e) { | |||
| if (e | |||
| .getMessage() | |||
| .endsWith(" doesn't recognize feature http://apache.org/xml/features/validation/schema") | |||
| || e.getMessage().endsWith( | |||
| " doesn't support feature http://apache.org/xml/features/validation/schema")) { | |||
| throw new AssumptionViolatedException("parser doesn't support schema"); | |||
| } else { | |||
| assertTrue( | |||
| e.getMessage().indexOf("not a valid XML document") > -1); | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| * iso-2022-jp.xml is valid but wouldn't get recognized on systems | |||
| * with a different native encoding. | |||
| * | |||
| * Bug 11279 | |||
| */ | |||
| @Test | |||
| public void testIso2022Jp() { | |||
| buildRule.executeTarget("testIso2022Jp"); | |||
| } | |||
| /** | |||
| * utf-8.xml is invalid as it contains non-UTF-8 characters, but | |||
| * would pass on systems with a native iso-8859-1 (or similar) | |||
| * encoding. | |||
| * | |||
| * Bug 11279 | |||
| */ | |||
| @Test | |||
| public void testUtf8() { | |||
| try { | |||
| buildRule.executeTarget("testUtf8"); | |||
| fail("Invalid characters in file"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| // Tests property element, using XML schema properties as an example. | |||
| @Test | |||
| public void testPropertySchemaForValidXML() { | |||
| buildRule.executeTarget("testProperty.validXML"); | |||
| } | |||
| @Test | |||
| public void testPropertySchemaForInvalidXML() { | |||
| try { | |||
| buildRule.executeTarget("testProperty.invalidXML"); | |||
| fail("XML file does not satisfy schema"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| } | |||
| @@ -1,86 +1,85 @@ | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the {@link org.apache.tools.ant.taskdefs.XSLTProcess} task. | |||
| * TODO merge with {@link org.apache.tools.ant.taskdefs.StyleTest}? | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class XsltTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "xslt.xml"); | |||
| } | |||
| @Test | |||
| public void testCatchNoDtd() { | |||
| try { | |||
| buildRule.executeTarget("testCatchNoDtd"); | |||
| fail("Expected failure"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void testCatalog() throws Exception { | |||
| buildRule.executeTarget("testCatalog"); | |||
| } | |||
| @Test | |||
| public void testOutputProperty() throws Exception { | |||
| buildRule.executeTarget("testOutputProperty"); | |||
| } | |||
| @Test | |||
| public void testXMLWithEntitiesInNonAsciiPath() throws Exception { | |||
| buildRule.executeTarget("testXMLWithEntitiesInNonAsciiPath"); | |||
| } | |||
| /** | |||
| * check that the system id gets set properly on stylesheets. | |||
| * @throws Exception if something goes wrong. | |||
| */ | |||
| @Test | |||
| public void testStyleSheetWithInclude() throws Exception { | |||
| buildRule.executeTarget("testStyleSheetWithInclude"); | |||
| if (buildRule.getLog().indexOf("java.io.FileNotFoundException") != -1) { | |||
| fail("xsl:include was not found"); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the {@link org.apache.tools.ant.taskdefs.XSLTProcess} task. | |||
| * TODO merge with {@link org.apache.tools.ant.taskdefs.StyleTest}? | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class XsltTest { | |||
| /** | |||
| * where tasks run | |||
| */ | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "xslt.xml"); | |||
| } | |||
| @Test | |||
| public void testCatchNoDtd() { | |||
| try { | |||
| buildRule.executeTarget("testCatchNoDtd"); | |||
| fail("Expected failure"); | |||
| } catch(BuildException ex) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void testCatalog() throws Exception { | |||
| buildRule.executeTarget("testCatalog"); | |||
| } | |||
| @Test | |||
| public void testOutputProperty() throws Exception { | |||
| buildRule.executeTarget("testOutputProperty"); | |||
| } | |||
| @Test | |||
| public void testXMLWithEntitiesInNonAsciiPath() throws Exception { | |||
| buildRule.executeTarget("testXMLWithEntitiesInNonAsciiPath"); | |||
| } | |||
| /** | |||
| * check that the system id gets set properly on stylesheets. | |||
| * @throws Exception if something goes wrong. | |||
| */ | |||
| @Test | |||
| public void testStyleSheetWithInclude() throws Exception { | |||
| buildRule.executeTarget("testStyleSheetWithInclude"); | |||
| if (buildRule.getLog().indexOf("java.io.FileNotFoundException") != -1) { | |||
| fail("xsl:include was not found"); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,213 +1,213 @@ | |||
| /* | |||
| * 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.taskdefs.optional.depend; | |||
| import java.io.File; | |||
| import java.util.Hashtable; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.DirectoryScanner; | |||
| import org.apache.tools.ant.FileUtilities; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Testcase for the Depend optional task. | |||
| * | |||
| */ | |||
| public class DependTest { | |||
| public static final String RESULT_FILESET = "result"; | |||
| public static final String TEST_BUILD_FILE | |||
| = "src/etc/testcases/taskdefs/optional/depend/depend.xml"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TEST_BUILD_FILE); | |||
| } | |||
| /** | |||
| * Test direct dependency removal | |||
| */ | |||
| @Test | |||
| public void testDirect() { | |||
| buildRule.executeTarget("src1setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testdirect"); | |||
| Hashtable files = getResultFiles(); | |||
| assertEquals("Depend did not leave correct number of files", 3, | |||
| files.size()); | |||
| assertTrue("Result did not contain A.class", | |||
| files.containsKey("A.class")); | |||
| assertTrue("Result did not contain D.class", | |||
| files.containsKey("D.class")); | |||
| } | |||
| /** | |||
| * Test dependency traversal (closure) | |||
| */ | |||
| @Test | |||
| public void testClosure() { | |||
| buildRule.executeTarget("src1setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testclosure"); | |||
| Hashtable files = getResultFiles(); | |||
| assertTrue("Depend did not leave correct number of files", | |||
| files.size() <= 2); | |||
| assertTrue("Result did not contain D.class", | |||
| files.containsKey("D.class")); | |||
| } | |||
| /** | |||
| * Test that inner class dependencies trigger deletion of the outer class | |||
| */ | |||
| @Test | |||
| public void testInner() { | |||
| buildRule.executeTarget("src2setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testinner"); | |||
| assertEquals("Depend did not leave correct number of files", 0, | |||
| getResultFiles().size()); | |||
| } | |||
| /** | |||
| * Test that multi-leve inner class dependencies trigger deletion of | |||
| * the outer class | |||
| */ | |||
| @Test | |||
| public void testInnerInner() { | |||
| buildRule.executeTarget("src3setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testinnerinner"); | |||
| assertEquals("Depend did not leave correct number of files", 0, | |||
| getResultFiles().size()); | |||
| } | |||
| /** | |||
| * Test that an exception is thrown when there is no source | |||
| */ | |||
| @Test | |||
| public void testNoSource() { | |||
| try { | |||
| buildRule.executeTarget("testnosource"); | |||
| fail("Build exception expected: No source specified"); | |||
| } catch(BuildException ex) { | |||
| assertContains("srcdir attribute must be set", ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| * Test that an exception is thrown when the source attribute is empty | |||
| */ | |||
| @Test | |||
| public void testEmptySource() { | |||
| try { | |||
| buildRule.executeTarget("testemptysource"); | |||
| fail("Build exception expected: No source specified"); | |||
| } catch(BuildException ex) { | |||
| assertContains("srcdir attribute must be non-empty", ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| * Read the result fileset into a Hashtable | |||
| * | |||
| * @return a Hashtable containing the names of the files in the result | |||
| * fileset | |||
| */ | |||
| private Hashtable getResultFiles() { | |||
| FileSet resultFileSet = (FileSet) buildRule.getProject().getReference(RESULT_FILESET); | |||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(buildRule.getProject()); | |||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||
| Hashtable files = new Hashtable(); | |||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||
| files.put(scannedFiles[i], scannedFiles[i]); | |||
| } | |||
| return files; | |||
| } | |||
| /** | |||
| * Test mutual dependency between inner and outer do not cause both to be | |||
| * deleted | |||
| */ | |||
| @Test | |||
| public void testInnerClosure() { | |||
| buildRule.executeTarget("testinnerclosure"); | |||
| assertEquals("Depend did not leave correct number of files", 4, | |||
| getResultFiles().size()); | |||
| } | |||
| /** | |||
| * Test the operation of the cache | |||
| */ | |||
| @Test | |||
| public void testCache() { | |||
| buildRule.executeTarget("testcache"); | |||
| } | |||
| /** | |||
| * Test the detection and warning of non public classes | |||
| */ | |||
| @Test | |||
| public void testNonPublic() { | |||
| buildRule.executeTarget("src5setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testnonpublic"); | |||
| String log = buildRule.getLog(); | |||
| assertContains("Expected warning about APrivate", | |||
| "The class APrivate in file", log); | |||
| assertContains("but has not been deleted because its source file " | |||
| + "could not be determined", | |||
| "The class APrivate in file", log); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.depend; | |||
| import java.io.File; | |||
| import java.util.Hashtable; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.DirectoryScanner; | |||
| import org.apache.tools.ant.FileUtilities; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Testcase for the Depend optional task. | |||
| * | |||
| */ | |||
| public class DependTest { | |||
| public static final String RESULT_FILESET = "result"; | |||
| public static final String TEST_BUILD_FILE | |||
| = "src/etc/testcases/taskdefs/optional/depend/depend.xml"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TEST_BUILD_FILE); | |||
| } | |||
| /** | |||
| * Test direct dependency removal | |||
| */ | |||
| @Test | |||
| public void testDirect() { | |||
| buildRule.executeTarget("src1setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testdirect"); | |||
| Hashtable files = getResultFiles(); | |||
| assertEquals("Depend did not leave correct number of files", 3, | |||
| files.size()); | |||
| assertTrue("Result did not contain A.class", | |||
| files.containsKey("A.class")); | |||
| assertTrue("Result did not contain D.class", | |||
| files.containsKey("D.class")); | |||
| } | |||
| /** | |||
| * Test dependency traversal (closure) | |||
| */ | |||
| @Test | |||
| public void testClosure() { | |||
| buildRule.executeTarget("src1setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testclosure"); | |||
| Hashtable files = getResultFiles(); | |||
| assertTrue("Depend did not leave correct number of files", | |||
| files.size() <= 2); | |||
| assertTrue("Result did not contain D.class", | |||
| files.containsKey("D.class")); | |||
| } | |||
| /** | |||
| * Test that inner class dependencies trigger deletion of the outer class | |||
| */ | |||
| @Test | |||
| public void testInner() { | |||
| buildRule.executeTarget("src2setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testinner"); | |||
| assertEquals("Depend did not leave correct number of files", 0, | |||
| getResultFiles().size()); | |||
| } | |||
| /** | |||
| * Test that multi-leve inner class dependencies trigger deletion of | |||
| * the outer class | |||
| */ | |||
| @Test | |||
| public void testInnerInner() { | |||
| buildRule.executeTarget("src3setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testinnerinner"); | |||
| assertEquals("Depend did not leave correct number of files", 0, | |||
| getResultFiles().size()); | |||
| } | |||
| /** | |||
| * Test that an exception is thrown when there is no source | |||
| */ | |||
| @Test | |||
| public void testNoSource() { | |||
| try { | |||
| buildRule.executeTarget("testnosource"); | |||
| fail("Build exception expected: No source specified"); | |||
| } catch(BuildException ex) { | |||
| assertContains("srcdir attribute must be set", ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| * Test that an exception is thrown when the source attribute is empty | |||
| */ | |||
| @Test | |||
| public void testEmptySource() { | |||
| try { | |||
| buildRule.executeTarget("testemptysource"); | |||
| fail("Build exception expected: No source specified"); | |||
| } catch(BuildException ex) { | |||
| assertContains("srcdir attribute must be non-empty", ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| * Read the result fileset into a Hashtable | |||
| * | |||
| * @return a Hashtable containing the names of the files in the result | |||
| * fileset | |||
| */ | |||
| private Hashtable getResultFiles() { | |||
| FileSet resultFileSet = (FileSet) buildRule.getProject().getReference(RESULT_FILESET); | |||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(buildRule.getProject()); | |||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||
| Hashtable files = new Hashtable(); | |||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||
| files.put(scannedFiles[i], scannedFiles[i]); | |||
| } | |||
| return files; | |||
| } | |||
| /** | |||
| * Test mutual dependency between inner and outer do not cause both to be | |||
| * deleted | |||
| */ | |||
| @Test | |||
| public void testInnerClosure() { | |||
| buildRule.executeTarget("testinnerclosure"); | |||
| assertEquals("Depend did not leave correct number of files", 4, | |||
| getResultFiles().size()); | |||
| } | |||
| /** | |||
| * Test the operation of the cache | |||
| */ | |||
| @Test | |||
| public void testCache() { | |||
| buildRule.executeTarget("testcache"); | |||
| } | |||
| /** | |||
| * Test the detection and warning of non public classes | |||
| */ | |||
| @Test | |||
| public void testNonPublic() { | |||
| buildRule.executeTarget("src5setup"); | |||
| buildRule.executeTarget("compile"); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("tempsrc.dir")), 5); | |||
| FileUtilities.rollbackTimetamps(new File(buildRule.getProject().getProperty("classes.dir")), 5); | |||
| buildRule.executeTarget("testnonpublic"); | |||
| String log = buildRule.getLog(); | |||
| assertContains("Expected warning about APrivate", | |||
| "The class APrivate in file", log); | |||
| assertContains("but has not been deleted because its source file " | |||
| + "could not be determined", | |||
| "The class APrivate in file", log); | |||
| } | |||
| } | |||
| @@ -1,87 +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.taskdefs.optional.i18n; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.IOException; | |||
| import static org.junit.Assert.assertTrue; | |||
| /** | |||
| * Tests the Translate task. | |||
| * | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class TranslateTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| static private final int BUF_SIZE = 32768; | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/i18n/translate"; | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "/translate.xml"); | |||
| } | |||
| @Test | |||
| public void test1() throws IOException { | |||
| buildRule.executeTarget("test1"); | |||
| assertTrue("translation of "+ TASKDEFS_DIR + "/input/template.txt",compareFiles(new File(buildRule.getProject().getBaseDir(), "expected/de/template.txt"), | |||
| new File(buildRule.getOutputDir(), "de/template.txt"))); | |||
| } | |||
| private boolean compareFiles(File file1, File file2) throws IOException { | |||
| if (!file1.exists() || !file2.exists()) { | |||
| return false; | |||
| } | |||
| if (file1.length() != file2.length()) { | |||
| return false; | |||
| } | |||
| // byte - byte compare | |||
| byte[] buffer1 = new byte[BUF_SIZE]; | |||
| byte[] buffer2 = new byte[BUF_SIZE]; | |||
| FileInputStream fis1 = new FileInputStream(file1); | |||
| FileInputStream fis2 = new FileInputStream(file2); | |||
| int index = 0; | |||
| int read = 0; | |||
| while ((read = fis1.read(buffer1)) != -1) { | |||
| fis2.read(buffer2); | |||
| for (int i = 0; i < read; ++i, ++index) { | |||
| if (buffer1[i] != buffer2[i]) { | |||
| return false; | |||
| } | |||
| } | |||
| } | |||
| return true; | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.i18n; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.IOException; | |||
| import static org.junit.Assert.assertTrue; | |||
| /** | |||
| * Tests the Translate task. | |||
| * | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class TranslateTest { | |||
| @Rule | |||
| public final BuildFileRule buildRule = new BuildFileRule(); | |||
| static private final int BUF_SIZE = 32768; | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/i18n/translate"; | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "/translate.xml"); | |||
| } | |||
| @Test | |||
| public void test1() throws IOException { | |||
| buildRule.executeTarget("test1"); | |||
| assertTrue("translation of "+ TASKDEFS_DIR + "/input/template.txt",compareFiles(new File(buildRule.getProject().getBaseDir(), "expected/de/template.txt"), | |||
| new File(buildRule.getOutputDir(), "de/template.txt"))); | |||
| } | |||
| private boolean compareFiles(File file1, File file2) throws IOException { | |||
| if (!file1.exists() || !file2.exists()) { | |||
| return false; | |||
| } | |||
| if (file1.length() != file2.length()) { | |||
| return false; | |||
| } | |||
| // byte - byte compare | |||
| byte[] buffer1 = new byte[BUF_SIZE]; | |||
| byte[] buffer2 = new byte[BUF_SIZE]; | |||
| FileInputStream fis1 = new FileInputStream(file1); | |||
| FileInputStream fis2 = new FileInputStream(file2); | |||
| int index = 0; | |||
| int read = 0; | |||
| while ((read = fis1.read(buffer1)) != -1) { | |||
| fis2.read(buffer2); | |||
| for (int i = 0; i < read; ++i, ++index) { | |||
| if (buffer1[i] != buffer2[i]) { | |||
| return false; | |||
| } | |||
| } | |||
| } | |||
| return true; | |||
| } | |||
| } | |||
| @@ -1,133 +1,132 @@ | |||
| /* | |||
| * 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.taskdefs.optional.image; | |||
| import org.apache.tools.ant.AntAssert; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Before; | |||
| import org.junit.Ignore; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assume.assumeTrue; | |||
| /** | |||
| * Tests the Image task. | |||
| * | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class ImageTest { | |||
| private final static String TASKDEFS_DIR = | |||
| "src/etc/testcases/taskdefs/optional/image/"; | |||
| private final static String LARGEIMAGE = "largeimage.jpg"; | |||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "image.xml"); | |||
| } | |||
| @Test | |||
| public void testEchoToLog() { | |||
| buildRule.executeTarget("testEchoToLog"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testSimpleScale(){ | |||
| buildRule.executeTarget("testSimpleScale"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| assertTrue( | |||
| "Did not create "+f.getAbsolutePath(), | |||
| f.exists()); | |||
| } | |||
| @Test | |||
| public void testOverwriteTrue() throws InterruptedException { | |||
| buildRule.executeTarget("testSimpleScale"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| assumeTrue("Could not change file modificaiton date", | |||
| f.setLastModified(f.lastModified() - (FILE_UTILS.getFileTimestampGranularity() * 2))); | |||
| long lastModified = f.lastModified(); | |||
| buildRule.executeTarget("testOverwriteTrue"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| long overwrittenLastModified = f.lastModified(); | |||
| assertTrue("File was not overwritten.", | |||
| lastModified < overwrittenLastModified); | |||
| } | |||
| @Test | |||
| public void testOverwriteFalse() { | |||
| buildRule.executeTarget("testSimpleScale"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| long lastModified = f.lastModified(); | |||
| buildRule.executeTarget("testOverwriteFalse"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| long overwrittenLastModified = f.lastModified(); | |||
| assertTrue("File was overwritten.", | |||
| lastModified == overwrittenLastModified); | |||
| } | |||
| @Test | |||
| public void testSimpleScaleWithMapper() { | |||
| buildRule.executeTarget("testSimpleScaleWithMapper"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), "scaled-" + LARGEIMAGE); | |||
| assertTrue( | |||
| "Did not create "+f.getAbsolutePath(), | |||
| f.exists()); | |||
| } | |||
| @Test | |||
| @Ignore("Previously named in a manner to prevent execution") | |||
| public void testFailOnError() { | |||
| try { | |||
| buildRule.executeTarget("testFailOnError"); | |||
| AntAssert.assertContains("Unable to process image stream", buildRule.getLog()); | |||
| } | |||
| catch (RuntimeException re){ | |||
| assertTrue("Run time exception should say " | |||
| + "'Unable to process image stream'. :" | |||
| + re.toString(), | |||
| re.toString() | |||
| .indexOf("Unable to process image stream") > -1); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.image; | |||
| import org.apache.tools.ant.AntAssert; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Before; | |||
| import org.junit.Ignore; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assume.assumeTrue; | |||
| /** | |||
| * Tests the Image task. | |||
| * | |||
| * @since Ant 1.5 | |||
| */ | |||
| public class ImageTest { | |||
| private final static String TASKDEFS_DIR = | |||
| "src/etc/testcases/taskdefs/optional/image/"; | |||
| private final static String LARGEIMAGE = "largeimage.jpg"; | |||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject(TASKDEFS_DIR + "image.xml"); | |||
| } | |||
| @Test | |||
| public void testEchoToLog() { | |||
| buildRule.executeTarget("testEchoToLog"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testSimpleScale(){ | |||
| buildRule.executeTarget("testSimpleScale"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| assertTrue( | |||
| "Did not create "+f.getAbsolutePath(), | |||
| f.exists()); | |||
| } | |||
| @Test | |||
| public void testOverwriteTrue() throws InterruptedException { | |||
| buildRule.executeTarget("testSimpleScale"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| assumeTrue("Could not change file modificaiton date", | |||
| f.setLastModified(f.lastModified() - (FILE_UTILS.getFileTimestampGranularity() * 2))); | |||
| long lastModified = f.lastModified(); | |||
| buildRule.executeTarget("testOverwriteTrue"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| long overwrittenLastModified = f.lastModified(); | |||
| assertTrue("File was not overwritten.", | |||
| lastModified < overwrittenLastModified); | |||
| } | |||
| @Test | |||
| public void testOverwriteFalse() { | |||
| buildRule.executeTarget("testSimpleScale"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| long lastModified = f.lastModified(); | |||
| buildRule.executeTarget("testOverwriteFalse"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| f = new File(buildRule.getOutputDir(), LARGEIMAGE); | |||
| long overwrittenLastModified = f.lastModified(); | |||
| assertTrue("File was overwritten.", | |||
| lastModified == overwrittenLastModified); | |||
| } | |||
| @Test | |||
| public void testSimpleScaleWithMapper() { | |||
| buildRule.executeTarget("testSimpleScaleWithMapper"); | |||
| AntAssert.assertContains("Processing File", buildRule.getLog()); | |||
| File f = new File(buildRule.getOutputDir(), "scaled-" + LARGEIMAGE); | |||
| assertTrue( | |||
| "Did not create "+f.getAbsolutePath(), | |||
| f.exists()); | |||
| } | |||
| @Test | |||
| @Ignore("Previously named in a manner to prevent execution") | |||
| public void testFailOnError() { | |||
| try { | |||
| buildRule.executeTarget("testFailOnError"); | |||
| AntAssert.assertContains("Unable to process image stream", buildRule.getLog()); | |||
| } | |||
| catch (RuntimeException re){ | |||
| assertTrue("Run time exception should say " | |||
| + "'Unable to process image stream'. :" | |||
| + re.toString(), | |||
| re.toString() | |||
| .indexOf("Unable to process image stream") > -1); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,99 +1,99 @@ | |||
| /* | |||
| * 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.taskdefs.optional.jdepend; | |||
| import org.apache.tools.ant.AntAssert; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Testcase for the JDepend optional task. | |||
| * | |||
| */ | |||
| public class JDependTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject( | |||
| "src/etc/testcases/taskdefs/optional/jdepend/jdepend.xml"); | |||
| } | |||
| /** | |||
| * Test simple | |||
| */ | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| AntAssert.assertContains("Package: org.apache.tools.ant.util.facade", | |||
| buildRule.getOutput()); | |||
| } | |||
| /** | |||
| * Test xml | |||
| */ | |||
| @Test | |||
| public void testXml() { | |||
| buildRule.executeTarget("xml"); | |||
| AntAssert.assertContains("<DependsUpon>", buildRule.getOutput()); | |||
| } | |||
| /** | |||
| * Test fork | |||
| * - forked output goes to log | |||
| */ | |||
| @Test | |||
| public void testFork() { | |||
| buildRule.executeTarget("fork"); | |||
| AntAssert.assertContains("Package: org.apache.tools.ant.util.facade", buildRule.getLog()); | |||
| } | |||
| /** | |||
| * Test fork xml | |||
| */ | |||
| @Test | |||
| public void testForkXml() { | |||
| buildRule.executeTarget("fork-xml"); | |||
| AntAssert.assertContains("<DependsUpon>", buildRule.getLog()); | |||
| } | |||
| /** | |||
| * Test timeout | |||
| */ | |||
| @Test | |||
| public void testTimeout() { | |||
| buildRule.executeTarget("fork-xml"); | |||
| AntAssert.assertContains( "JDepend FAILED - Timed out", buildRule.getLog()); | |||
| } | |||
| /** | |||
| * Test timeout without timing out | |||
| */ | |||
| @Test | |||
| public void testTimeoutNot() { | |||
| buildRule.executeTarget("fork-timeout-not"); | |||
| AntAssert.assertContains("Package: org.apache.tools.ant.util.facade", buildRule.getLog()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.jdepend; | |||
| import org.apache.tools.ant.AntAssert; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| /** | |||
| * Testcase for the JDepend optional task. | |||
| * | |||
| */ | |||
| public class JDependTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject( | |||
| "src/etc/testcases/taskdefs/optional/jdepend/jdepend.xml"); | |||
| } | |||
| /** | |||
| * Test simple | |||
| */ | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| AntAssert.assertContains("Package: org.apache.tools.ant.util.facade", | |||
| buildRule.getOutput()); | |||
| } | |||
| /** | |||
| * Test xml | |||
| */ | |||
| @Test | |||
| public void testXml() { | |||
| buildRule.executeTarget("xml"); | |||
| AntAssert.assertContains("<DependsUpon>", buildRule.getOutput()); | |||
| } | |||
| /** | |||
| * Test fork | |||
| * - forked output goes to log | |||
| */ | |||
| @Test | |||
| public void testFork() { | |||
| buildRule.executeTarget("fork"); | |||
| AntAssert.assertContains("Package: org.apache.tools.ant.util.facade", buildRule.getLog()); | |||
| } | |||
| /** | |||
| * Test fork xml | |||
| */ | |||
| @Test | |||
| public void testForkXml() { | |||
| buildRule.executeTarget("fork-xml"); | |||
| AntAssert.assertContains("<DependsUpon>", buildRule.getLog()); | |||
| } | |||
| /** | |||
| * Test timeout | |||
| */ | |||
| @Test | |||
| public void testTimeout() { | |||
| buildRule.executeTarget("fork-xml"); | |||
| AntAssert.assertContains( "JDepend FAILED - Timed out", buildRule.getLog()); | |||
| } | |||
| /** | |||
| * Test timeout without timing out | |||
| */ | |||
| @Test | |||
| public void testTimeoutNot() { | |||
| buildRule.executeTarget("fork-timeout-not"); | |||
| AntAssert.assertContains("Package: org.apache.tools.ant.util.facade", buildRule.getLog()); | |||
| } | |||
| } | |||
| @@ -1,121 +1,121 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.fail; | |||
| import static org.junit.Assert.assertArrayEquals; | |||
| import org.junit.Test; | |||
| /** | |||
| * | |||
| * @author Marian Petras | |||
| */ | |||
| public class BatchTestTest { | |||
| @Test | |||
| public void testParseTestMethodNamesList() { | |||
| try { | |||
| JUnitTest.parseTestMethodNamesList(null); | |||
| fail("IllegalArgumentException expected when the param is <null>"); | |||
| } catch (IllegalArgumentException ex) { | |||
| //this is an expected exception | |||
| } | |||
| assertArrayEquals(new String[0], JUnitTest.parseTestMethodNamesList("")); | |||
| assertArrayEquals(new String[0], JUnitTest.parseTestMethodNamesList(" ")); | |||
| assertArrayEquals(new String[0], JUnitTest.parseTestMethodNamesList(" ")); | |||
| checkParseCausesIAE(","); | |||
| checkParseCausesIAE(" ,"); | |||
| checkParseCausesIAE(", "); | |||
| checkParseCausesIAE(" , "); | |||
| checkParseCausesIAE(",a"); | |||
| checkParseCausesIAE(" ,a"); | |||
| checkParseCausesIAE(" ,a"); | |||
| checkParseCausesIAE(" , a"); | |||
| checkParseCausesIAE(" ,a "); | |||
| checkParseCausesIAE(" ,a ,"); | |||
| checkParseCausesIAE("ab,,cd"); | |||
| checkParseCausesIAE("ab, ,cd"); | |||
| checkParseCausesIAE("ab, ,cd"); | |||
| checkParseCausesIAE("ab, ,cd,"); | |||
| checkParseCausesIAE(",ab, ,cd,"); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList(" abc")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList(" abc ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc,")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc, ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc ,")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc , ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList(" abc ,")); | |||
| /* legal Java identifiers: */ | |||
| assertArrayEquals(new String[] {"a"}, JUnitTest.parseTestMethodNamesList("a")); | |||
| assertArrayEquals(new String[] {"a1"}, JUnitTest.parseTestMethodNamesList("a1")); | |||
| assertArrayEquals(new String[] {"a$"}, JUnitTest.parseTestMethodNamesList("a$")); | |||
| assertArrayEquals(new String[] {"a$1"}, JUnitTest.parseTestMethodNamesList("a$1")); | |||
| assertArrayEquals(new String[] {"_bc"}, JUnitTest.parseTestMethodNamesList("_bc")); | |||
| assertArrayEquals(new String[] {"___"}, JUnitTest.parseTestMethodNamesList("___")); | |||
| /* illegal Java identifiers: */ | |||
| checkParseCausesIAE("1"); | |||
| checkParseCausesIAE("1a"); | |||
| checkParseCausesIAE("1ab"); | |||
| checkParseCausesIAE("1abc"); | |||
| checkParseCausesIAE("1abc d"); | |||
| checkParseCausesIAE("1abc de"); | |||
| checkParseCausesIAE("1abc def"); | |||
| checkParseCausesIAE("1abc def,"); | |||
| checkParseCausesIAE(",1abc def"); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc,def,")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc, def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc, def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc ,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc ,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc , def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc , def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc, def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc, def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc ,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc ,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc , def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc , def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc , def ,")); | |||
| } | |||
| private static void checkParseCausesIAE(String param) { | |||
| try { | |||
| JUnitTest.parseTestMethodNamesList(param); | |||
| fail("IllegalArgumentException expected when the param is \"" + param + '"'); | |||
| } catch (IllegalArgumentException ex) { | |||
| //this is an expected exception | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.fail; | |||
| import static org.junit.Assert.assertArrayEquals; | |||
| import org.junit.Test; | |||
| /** | |||
| * | |||
| * @author Marian Petras | |||
| */ | |||
| public class BatchTestTest { | |||
| @Test | |||
| public void testParseTestMethodNamesList() { | |||
| try { | |||
| JUnitTest.parseTestMethodNamesList(null); | |||
| fail("IllegalArgumentException expected when the param is <null>"); | |||
| } catch (IllegalArgumentException ex) { | |||
| //this is an expected exception | |||
| } | |||
| assertArrayEquals(new String[0], JUnitTest.parseTestMethodNamesList("")); | |||
| assertArrayEquals(new String[0], JUnitTest.parseTestMethodNamesList(" ")); | |||
| assertArrayEquals(new String[0], JUnitTest.parseTestMethodNamesList(" ")); | |||
| checkParseCausesIAE(","); | |||
| checkParseCausesIAE(" ,"); | |||
| checkParseCausesIAE(", "); | |||
| checkParseCausesIAE(" , "); | |||
| checkParseCausesIAE(",a"); | |||
| checkParseCausesIAE(" ,a"); | |||
| checkParseCausesIAE(" ,a"); | |||
| checkParseCausesIAE(" , a"); | |||
| checkParseCausesIAE(" ,a "); | |||
| checkParseCausesIAE(" ,a ,"); | |||
| checkParseCausesIAE("ab,,cd"); | |||
| checkParseCausesIAE("ab, ,cd"); | |||
| checkParseCausesIAE("ab, ,cd"); | |||
| checkParseCausesIAE("ab, ,cd,"); | |||
| checkParseCausesIAE(",ab, ,cd,"); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList(" abc")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList(" abc ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc,")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc, ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc ,")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList("abc , ")); | |||
| assertArrayEquals(new String[] {"abc"}, JUnitTest.parseTestMethodNamesList(" abc ,")); | |||
| /* legal Java identifiers: */ | |||
| assertArrayEquals(new String[] {"a"}, JUnitTest.parseTestMethodNamesList("a")); | |||
| assertArrayEquals(new String[] {"a1"}, JUnitTest.parseTestMethodNamesList("a1")); | |||
| assertArrayEquals(new String[] {"a$"}, JUnitTest.parseTestMethodNamesList("a$")); | |||
| assertArrayEquals(new String[] {"a$1"}, JUnitTest.parseTestMethodNamesList("a$1")); | |||
| assertArrayEquals(new String[] {"_bc"}, JUnitTest.parseTestMethodNamesList("_bc")); | |||
| assertArrayEquals(new String[] {"___"}, JUnitTest.parseTestMethodNamesList("___")); | |||
| /* illegal Java identifiers: */ | |||
| checkParseCausesIAE("1"); | |||
| checkParseCausesIAE("1a"); | |||
| checkParseCausesIAE("1ab"); | |||
| checkParseCausesIAE("1abc"); | |||
| checkParseCausesIAE("1abc d"); | |||
| checkParseCausesIAE("1abc de"); | |||
| checkParseCausesIAE("1abc def"); | |||
| checkParseCausesIAE("1abc def,"); | |||
| checkParseCausesIAE(",1abc def"); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc,def,")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc, def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc, def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc ,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc ,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc , def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList("abc , def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc, def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc, def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc ,def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc ,def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc , def")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc , def ")); | |||
| assertArrayEquals(new String[] {"abc", "def"}, JUnitTest.parseTestMethodNamesList(" abc , def ,")); | |||
| } | |||
| private static void checkParseCausesIAE(String param) { | |||
| try { | |||
| JUnitTest.parseTestMethodNamesList(param); | |||
| fail("IllegalArgumentException expected when the param is \"" + param + '"'); | |||
| } catch (IllegalArgumentException ex) { | |||
| //this is an expected exception | |||
| } | |||
| } | |||
| } | |||
| @@ -1,53 +1,53 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertEquals; | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import javax.xml.parsers.DocumentBuilder; | |||
| import org.apache.tools.ant.util.JAXPUtils; | |||
| import org.junit.Test; | |||
| import org.w3c.dom.Document; | |||
| import org.w3c.dom.Node; | |||
| import org.w3c.dom.NodeList; | |||
| import org.xml.sax.SAXException; | |||
| public class DOMUtilTest { | |||
| @Test | |||
| public void testListChildNodes() throws SAXException, IOException { | |||
| DocumentBuilder db = JAXPUtils.getDocumentBuilder(); | |||
| InputStream is = this.getClass().getClassLoader().getResourceAsStream("taskdefs/optional/junit/matches.xml"); | |||
| Document doc = db.parse(is); | |||
| NodeList nl = DOMUtil.listChildNodes(doc.getDocumentElement(), new FooNodeFilter(), true); | |||
| assertEquals("expecting 3", 3, nl.getLength()); | |||
| } | |||
| public class FooNodeFilter implements DOMUtil.NodeFilter { | |||
| public boolean accept(Node node) { | |||
| if (node.getNodeName().equals("foo")) { | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertEquals; | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import javax.xml.parsers.DocumentBuilder; | |||
| import org.apache.tools.ant.util.JAXPUtils; | |||
| import org.junit.Test; | |||
| import org.w3c.dom.Document; | |||
| import org.w3c.dom.Node; | |||
| import org.w3c.dom.NodeList; | |||
| import org.xml.sax.SAXException; | |||
| public class DOMUtilTest { | |||
| @Test | |||
| public void testListChildNodes() throws SAXException, IOException { | |||
| DocumentBuilder db = JAXPUtils.getDocumentBuilder(); | |||
| InputStream is = this.getClass().getClassLoader().getResourceAsStream("taskdefs/optional/junit/matches.xml"); | |||
| Document doc = db.parse(is); | |||
| NodeList nl = DOMUtil.listChildNodes(doc.getDocumentElement(), new FooNodeFilter(), true); | |||
| assertEquals("expecting 3", 3, nl.getLength()); | |||
| } | |||
| public class FooNodeFilter implements DOMUtil.NodeFilter { | |||
| public boolean accept(Node node) { | |||
| if (node.getNodeName().equals("foo")) { | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,37 +1,37 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertSame; | |||
| import org.junit.Test; | |||
| /** | |||
| * Test to ensure that the classloader loading JUnit testcase | |||
| * is also the context classloader. | |||
| * | |||
| */ | |||
| public class JUnitClassLoaderTest { | |||
| @Test | |||
| public void testContextClassLoader(){ | |||
| ClassLoader context = Thread.currentThread().getContextClassLoader(); | |||
| ClassLoader caller = getClass().getClassLoader(); | |||
| assertSame(context, caller); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertSame; | |||
| import org.junit.Test; | |||
| /** | |||
| * Test to ensure that the classloader loading JUnit testcase | |||
| * is also the context classloader. | |||
| * | |||
| */ | |||
| public class JUnitClassLoaderTest { | |||
| @Test | |||
| public void testContextClassLoader(){ | |||
| ClassLoader context = Thread.currentThread().getContextClassLoader(); | |||
| ClassLoader caller = getClass().getClassLoader(); | |||
| assertSame(context, caller); | |||
| } | |||
| } | |||
| @@ -63,39 +63,39 @@ import org.w3c.dom.Node; | |||
| public class JUnitTaskTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| /** | |||
| * The JUnit setup method. | |||
| */ | |||
| @Before | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit.xml"); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testCrash() { | |||
| buildRule.executeTarget("crash"); | |||
| assertEquals("true", buildRule.getProject().getProperty("crashed")); | |||
| buildRule.executeTarget("crash"); | |||
| assertEquals("true", buildRule.getProject().getProperty("crashed")); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testNoCrash() { | |||
| buildRule.executeTarget("nocrash"); | |||
| assertNull(buildRule.getProject().getProperty("crashed")); | |||
| buildRule.executeTarget("nocrash"); | |||
| assertNull(buildRule.getProject().getProperty("crashed")); | |||
| } | |||
| @Test | |||
| @Test | |||
| public void testTimeout() { | |||
| buildRule.executeTarget("timeout"); | |||
| assertEquals("true", buildRule.getProject().getProperty("timeout")); | |||
| buildRule.executeTarget("timeout"); | |||
| assertEquals("true", buildRule.getProject().getProperty("timeout")); | |||
| } | |||
| @Test | |||
| public void testNoTimeout() { | |||
| buildRule.executeTarget("notimeout"); | |||
| assertNull(buildRule.getProject().getProperty("timeout")); | |||
| assertNull(buildRule.getProject().getProperty("timeout")); | |||
| } | |||
| @Test | |||
| @@ -141,7 +141,7 @@ public class JUnitTaskTest { | |||
| public void testFailureRecorder() { | |||
| if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_5)) { | |||
| try { | |||
| Class<?> clazz =Class.forName("junit.framework.JUnit4TestAdapter"); | |||
| Class<?> clazz =Class.forName("junit.framework.JUnit4TestAdapter"); | |||
| Assume.assumeFalse("Skipping test since it fails with JUnit 4", clazz != null); | |||
| } catch (ClassNotFoundException e) { | |||
| // OK, this is JUnit3, can run test | |||
| @@ -154,14 +154,14 @@ public class JUnitTaskTest { | |||
| // ensure that there is a clean test environment | |||
| assertFalse("Test directory '" + testDir.getAbsolutePath() | |||
| + "' must not exist before the test preparation.", | |||
| + "' must not exist before the test preparation.", | |||
| testDir.exists()); | |||
| assertFalse("The collector file '" | |||
| + collectorFile.getAbsolutePath() | |||
| + "'must not exist before the test preparation.", | |||
| + "'must not exist before the test preparation.", | |||
| collectorFile.exists()); | |||
| // prepare the test environment | |||
| buildRule.executeTarget("failureRecorder.prepare"); | |||
| assertTrue("Test directory '" + testDir.getAbsolutePath() | |||
| @@ -169,14 +169,14 @@ public class JUnitTaskTest { | |||
| assertTrue("There should be one class.", | |||
| (new File(testDir, "A.class")).exists()); | |||
| assertFalse("The collector file '" | |||
| + collectorFile.getAbsolutePath() | |||
| + collectorFile.getAbsolutePath() | |||
| + "' should not exist before the 1st run.", | |||
| collectorFile.exists()); | |||
| // 1st junit run: should do all tests - failing and not failing tests | |||
| buildRule.executeTarget("failureRecorder.runtest"); | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| + "' should exist after the 1st run.", | |||
| collectorFile.exists()); | |||
| // the passing test cases | |||
| @@ -202,10 +202,10 @@ public class JUnitTaskTest { | |||
| buildRule.executeTarget("D.test10"); | |||
| assertContains("1st run: should run D.test10", buildRule.getOutput()); | |||
| // 2nd junit run: should do only failing tests | |||
| buildRule.executeTarget("failureRecorder.runtest"); | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| + "' should exist after the 2nd run.", | |||
| collectorFile.exists()); | |||
| // the passing test cases | |||
| @@ -230,14 +230,14 @@ public class JUnitTaskTest { | |||
| assertContains("2nd run: should run B.test04", buildRule.getOutput()); | |||
| buildRule.executeTarget("D.test10"); | |||
| assertContains("2nd run: should run D.test10", buildRule.getOutput()); | |||
| // "fix" errors in class A | |||
| buildRule.executeTarget("failureRecorder.fixing"); | |||
| // 3rd run: four running tests with two errors | |||
| buildRule.executeTarget("failureRecorder.runtest"); | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| + "' should exist after the 3rd run.", | |||
| collectorFile.exists()); | |||
| buildRule.executeTarget("A.test02"); | |||
| @@ -248,11 +248,11 @@ public class JUnitTaskTest { | |||
| assertContains("3rd run: should run B.test04", buildRule.getOutput()); | |||
| buildRule.executeTarget("D.test10"); | |||
| assertContains("3rd run: should run D.test10", buildRule.getOutput()); | |||
| // 4rd run: two running tests with errors | |||
| buildRule.executeTarget("failureRecorder.runtest"); | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| assertTrue("The collector file '" + collectorFile.getAbsolutePath() | |||
| + "' should exist after the 4th run.", | |||
| collectorFile.exists()); | |||
| //TODO: these two statements fail | |||
| @@ -1,111 +1,111 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| public class JUnitTestListenerTest{ | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| // The captureToSummary test writes to stdout and stderr, good for | |||
| // verifying that the TestListener support doesn't break anything. | |||
| private static final String PASS_TEST_TARGET = "captureToSummary"; | |||
| // testNoCrash is the test invoked by the captureToSummary's junit task | |||
| private static final String PASS_TEST = "testNoCrash"; | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit.xml"); | |||
| } | |||
| @Test | |||
| public void testFullLogOutput() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting full log to have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNoLogOutput() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertNotContains("expecting log to not have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testTestCountFired() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting test count message", JUnitTask.TESTLISTENER_PREFIX + | |||
| "tests to run: ", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testStartTestFired() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting test started message", JUnitTask.TESTLISTENER_PREFIX + | |||
| "startTest(" + PASS_TEST + ")", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testEndTestFired() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting test ended message", JUnitTask.TESTLISTENER_PREFIX + | |||
| "endTest(" + PASS_TEST + ")", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNoFullLogOutputByDefault() { | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertNotContains("expecting full log to not have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testFullLogOutputMagicProperty() { | |||
| buildRule.getProject().setProperty(JUnitTask.ENABLE_TESTLISTENER_EVENTS, "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting full log to have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNoFullLogOutputMagicPropertyWins() { | |||
| buildRule.getProject().setProperty(JUnitTask.ENABLE_TESTLISTENER_EVENTS, "false"); | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertNotContains("expecting full log to not have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| public class JUnitTestListenerTest{ | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| // The captureToSummary test writes to stdout and stderr, good for | |||
| // verifying that the TestListener support doesn't break anything. | |||
| private static final String PASS_TEST_TARGET = "captureToSummary"; | |||
| // testNoCrash is the test invoked by the captureToSummary's junit task | |||
| private static final String PASS_TEST = "testNoCrash"; | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit.xml"); | |||
| } | |||
| @Test | |||
| public void testFullLogOutput() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting full log to have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNoLogOutput() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertNotContains("expecting log to not have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testTestCountFired() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting test count message", JUnitTask.TESTLISTENER_PREFIX + | |||
| "tests to run: ", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testStartTestFired() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting test started message", JUnitTask.TESTLISTENER_PREFIX + | |||
| "startTest(" + PASS_TEST + ")", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testEndTestFired() { | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting test ended message", JUnitTask.TESTLISTENER_PREFIX + | |||
| "endTest(" + PASS_TEST + ")", buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNoFullLogOutputByDefault() { | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertNotContains("expecting full log to not have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testFullLogOutputMagicProperty() { | |||
| buildRule.getProject().setProperty(JUnitTask.ENABLE_TESTLISTENER_EVENTS, "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertContains("expecting full log to have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| @Test | |||
| public void testNoFullLogOutputMagicPropertyWins() { | |||
| buildRule.getProject().setProperty(JUnitTask.ENABLE_TESTLISTENER_EVENTS, "false"); | |||
| buildRule.getProject().setProperty("enableEvents", "true"); | |||
| buildRule.executeTarget(PASS_TEST_TARGET); | |||
| assertNotContains("expecting full log to not have BuildListener events", | |||
| JUnitTask.TESTLISTENER_PREFIX, buildRule.getFullLog()); | |||
| } | |||
| } | |||
| @@ -38,7 +38,7 @@ import org.junit.Test; | |||
| */ | |||
| public class JUnitTestRunnerTest{ | |||
| // check that a valid method name generates no errors | |||
| @Test | |||
| @@ -56,8 +56,8 @@ public class JUnitTestRunnerTest{ | |||
| String error = runner.getFormatter().getError(); | |||
| // might be FAILURES or ERRORS depending on JUnit version? | |||
| assertTrue(error, runner.getRetCode() != JUnitTestRunner.SUCCESS); | |||
| } | |||
| } | |||
| // check that having no suite generates no errors | |||
| @Test | |||
| public void testNoSuite(){ | |||
| @@ -92,7 +92,7 @@ public class JUnitTestRunnerTest{ | |||
| runner.run(); | |||
| // On junit3 this is a FAILURE, on junit4 this is an ERROR | |||
| int ret = runner.getRetCode(); | |||
| if (ret != JUnitTestRunner.FAILURES && ret != JUnitTestRunner.ERRORS) { | |||
| fail("Unexpected result " + ret + " from junit runner"); | |||
| } | |||
| @@ -131,21 +131,21 @@ public class JUnitTestRunnerTest{ | |||
| } | |||
| protected TestRunner createRunner(Class<?> clazz){ | |||
| return new TestRunner(new JUnitTest(clazz.getName()), null, | |||
| return new TestRunner(new JUnitTest(clazz.getName()), null, | |||
| true, true, true); | |||
| } | |||
| protected TestRunner createRunnerForTestMethod(Class<?> clazz, String method){ | |||
| return new TestRunner(new JUnitTest(clazz.getName()), new String[] {method}, | |||
| true, true, true); | |||
| } | |||
| } | |||
| // the test runner that wrap the dummy formatter that interests us | |||
| private final static class TestRunner extends JUnitTestRunner { | |||
| private ResultFormatter formatter = new ResultFormatter(); | |||
| TestRunner(JUnitTest test, String[] methods, boolean haltonerror, | |||
| boolean filtertrace, boolean haltonfailure){ | |||
| super(test, methods, haltonerror, filtertrace, haltonfailure, | |||
| super(test, methods, haltonerror, filtertrace, haltonfailure, | |||
| false, false, TestRunner.class.getClassLoader()); | |||
| // use the classloader that loaded this class otherwise | |||
| // it will not be able to run inner classes if this test | |||
| @@ -206,8 +206,8 @@ public class JUnitTestRunnerTest{ | |||
| // should not be executed | |||
| throw new NullPointerException("thrown on purpose"); | |||
| } | |||
| } | |||
| } | |||
| public static class InvalidTestCase extends TestCase { | |||
| public InvalidTestCase(String name){ | |||
| super(name); | |||
| @@ -242,4 +242,3 @@ public class JUnitTestRunnerTest{ | |||
| } | |||
| } | |||
| } | |||
| @@ -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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertEquals; | |||
| import junit.framework.JUnit4TestAdapterCache; | |||
| import junit.framework.TestCase; | |||
| import junit.framework.TestResult; | |||
| import org.junit.Test; | |||
| import org.junit.runner.Description; | |||
| /** | |||
| */ | |||
| public class JUnitVersionHelperTest { | |||
| @Test | |||
| public void testMyOwnName() { | |||
| assertEquals("testMyOwnName", | |||
| JUnitVersionHelper.getTestCaseName( | |||
| JUnit4TestAdapterCache.getDefault().asTest( | |||
| Description.createTestDescription(JUnitVersionHelperTest.class, "testMyOwnName") | |||
| ) | |||
| ) | |||
| ); | |||
| } | |||
| @Test | |||
| public void testNonTestCaseName() { | |||
| assertEquals("I'm a foo", | |||
| JUnitVersionHelper.getTestCaseName(new Foo1())); | |||
| } | |||
| @Test | |||
| public void testNoStringReturn() { | |||
| assertEquals("unknown", | |||
| JUnitVersionHelper.getTestCaseName(new Foo2())); | |||
| } | |||
| @Test | |||
| public void testNoGetName() { | |||
| assertEquals("unknown", | |||
| JUnitVersionHelper.getTestCaseName(new Foo3())); | |||
| } | |||
| @Test | |||
| public void testNameNotGetName() { | |||
| assertEquals("I'm a foo, too", | |||
| JUnitVersionHelper.getTestCaseName(new Foo4())); | |||
| } | |||
| @Test | |||
| public void testNull() { | |||
| assertEquals("unknown", JUnitVersionHelper.getTestCaseName(null)); | |||
| } | |||
| @Test | |||
| public void testTestCaseSubClass() { | |||
| assertEquals("overridden getName", | |||
| JUnitVersionHelper.getTestCaseName(new Foo5())); | |||
| } | |||
| public static class Foo implements junit.framework.Test { | |||
| public int countTestCases() {return 0;} | |||
| public void run(TestResult result) {} | |||
| } | |||
| public static class Foo1 extends Foo { | |||
| public String getName() {return "I'm a foo";} | |||
| } | |||
| public static class Foo2 extends Foo { | |||
| public int getName() {return 1;} | |||
| } | |||
| public static class Foo3 extends Foo { | |||
| } | |||
| public static class Foo4 extends Foo { | |||
| public String name() {return "I'm a foo, too";} | |||
| } | |||
| public static class Foo5 extends TestCase { | |||
| public String getName() {return "overridden getName";} | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertEquals; | |||
| import junit.framework.JUnit4TestAdapterCache; | |||
| import junit.framework.TestCase; | |||
| import junit.framework.TestResult; | |||
| import org.junit.Test; | |||
| import org.junit.runner.Description; | |||
| /** | |||
| */ | |||
| public class JUnitVersionHelperTest { | |||
| @Test | |||
| public void testMyOwnName() { | |||
| assertEquals("testMyOwnName", | |||
| JUnitVersionHelper.getTestCaseName( | |||
| JUnit4TestAdapterCache.getDefault().asTest( | |||
| Description.createTestDescription(JUnitVersionHelperTest.class, "testMyOwnName") | |||
| ) | |||
| ) | |||
| ); | |||
| } | |||
| @Test | |||
| public void testNonTestCaseName() { | |||
| assertEquals("I'm a foo", | |||
| JUnitVersionHelper.getTestCaseName(new Foo1())); | |||
| } | |||
| @Test | |||
| public void testNoStringReturn() { | |||
| assertEquals("unknown", | |||
| JUnitVersionHelper.getTestCaseName(new Foo2())); | |||
| } | |||
| @Test | |||
| public void testNoGetName() { | |||
| assertEquals("unknown", | |||
| JUnitVersionHelper.getTestCaseName(new Foo3())); | |||
| } | |||
| @Test | |||
| public void testNameNotGetName() { | |||
| assertEquals("I'm a foo, too", | |||
| JUnitVersionHelper.getTestCaseName(new Foo4())); | |||
| } | |||
| @Test | |||
| public void testNull() { | |||
| assertEquals("unknown", JUnitVersionHelper.getTestCaseName(null)); | |||
| } | |||
| @Test | |||
| public void testTestCaseSubClass() { | |||
| assertEquals("overridden getName", | |||
| JUnitVersionHelper.getTestCaseName(new Foo5())); | |||
| } | |||
| public static class Foo implements junit.framework.Test { | |||
| public int countTestCases() {return 0;} | |||
| public void run(TestResult result) {} | |||
| } | |||
| public static class Foo1 extends Foo { | |||
| public String getName() {return "I'm a foo";} | |||
| } | |||
| public static class Foo2 extends Foo { | |||
| public int getName() {return 1;} | |||
| } | |||
| public static class Foo3 extends Foo { | |||
| } | |||
| public static class Foo4 extends Foo { | |||
| public String name() {return "I'm a foo, too";} | |||
| } | |||
| public static class Foo5 extends TestCase { | |||
| public String getName() {return "overridden getName";} | |||
| } | |||
| } | |||
| @@ -1,30 +1,30 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class NoVmCrash { | |||
| @Test | |||
| public void testNoCrash() { | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class NoVmCrash { | |||
| @Test | |||
| public void testNoCrash() { | |||
| } | |||
| } | |||
| @@ -1,42 +1,42 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class Printer { | |||
| public Printer() { | |||
| System.err.println("constructor print to System.err"); | |||
| System.out.println("constructor print to System.out"); | |||
| } | |||
| static { | |||
| System.err.println("static print to System.err"); | |||
| System.out.println("static print to System.out"); | |||
| } | |||
| @Test | |||
| public void testNoCrash() { | |||
| System.err.println("method print to System.err"); | |||
| System.out.println("method print to System.out"); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class Printer { | |||
| public Printer() { | |||
| System.err.println("constructor print to System.err"); | |||
| System.out.println("constructor print to System.out"); | |||
| } | |||
| static { | |||
| System.err.println("static print to System.err"); | |||
| System.out.println("static print to System.out"); | |||
| } | |||
| @Test | |||
| public void testNoCrash() { | |||
| System.err.println("method print to System.err"); | |||
| System.out.println("method print to System.out"); | |||
| } | |||
| } | |||
| @@ -1,30 +1,30 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| public class Sleeper { | |||
| @Test | |||
| public void testSleep() throws InterruptedException { | |||
| Thread.sleep(5 * 1000); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| public class Sleeper { | |||
| @Test | |||
| public void testSleep() throws InterruptedException { | |||
| Thread.sleep(5 * 1000); | |||
| } | |||
| } | |||
| @@ -1,42 +1,42 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import junit.framework.Test; | |||
| import junit.framework.TestCase; | |||
| /** | |||
| * validates that the suite() method works in classes that don't | |||
| * implement Test. | |||
| */ | |||
| public class SuiteMethodTest { | |||
| public static Test suite() { | |||
| return new Nested("testMethod"); | |||
| } | |||
| public static class Nested extends TestCase { | |||
| public Nested(String name) { | |||
| super(name); | |||
| } | |||
| public void testMethod() { | |||
| assertTrue(true); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import junit.framework.Test; | |||
| import junit.framework.TestCase; | |||
| /** | |||
| * validates that the suite() method works in classes that don't | |||
| * implement Test. | |||
| */ | |||
| public class SuiteMethodTest { | |||
| public static Test suite() { | |||
| return new Nested("testMethod"); | |||
| } | |||
| public static class Nested extends TestCase { | |||
| public Nested(String name) { | |||
| super(name); | |||
| } | |||
| public void testMethod() { | |||
| assertTrue(true); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,53 +1,53 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||
| import static org.junit.Assert.assertEquals; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| public class TearDownOnVmCrashTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit/teardownlistener.xml"); | |||
| } | |||
| @Test | |||
| public void testNoTeardown() { | |||
| buildRule.executeTarget("testNoTeardown"); | |||
| assertEquals("true", buildRule.getProject().getProperty("error")); | |||
| assertNotContains("tearDown called on Timeout", buildRule.getOutput()); | |||
| } | |||
| @Test | |||
| public void testTeardown() { | |||
| buildRule.executeTarget("testTeardown"); | |||
| assertEquals("true", buildRule.getProject().getProperty("error")); | |||
| assertContains("tearDown called on Timeout", buildRule.getOutput()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||
| import static org.junit.Assert.assertEquals; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| public class TearDownOnVmCrashTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit/teardownlistener.xml"); | |||
| } | |||
| @Test | |||
| public void testNoTeardown() { | |||
| buildRule.executeTarget("testNoTeardown"); | |||
| assertEquals("true", buildRule.getProject().getProperty("error")); | |||
| assertNotContains("tearDown called on Timeout", buildRule.getOutput()); | |||
| } | |||
| @Test | |||
| public void testTeardown() { | |||
| buildRule.executeTarget("testTeardown"); | |||
| assertEquals("true", buildRule.getProject().getProperty("error")); | |||
| assertContains("tearDown called on Timeout", buildRule.getOutput()); | |||
| } | |||
| } | |||
| @@ -1,112 +1,112 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import java.io.IOException; | |||
| import java.io.OutputStream; | |||
| import junit.framework.AssertionFailedError; | |||
| import junit.framework.Test; | |||
| import org.apache.tools.ant.BuildException; | |||
| public class TestFormatter implements JUnitResultFormatter { | |||
| private static final byte[] grafitto = new byte[] { | |||
| (byte) 'T', (byte) 'e', (byte) 's', (byte) 't', (byte) 'F', (byte) 'o', | |||
| (byte) 'r', (byte) 'm', (byte) 'a', (byte) 't', (byte) 't', (byte) 'e', | |||
| (byte) 'r', (byte) ' ', (byte) 'w', (byte) 'a', (byte) 's', (byte) ' ', | |||
| (byte) 'h', (byte) 'e', (byte) 'r', (byte) 'e', 10 | |||
| }; | |||
| /** | |||
| * Where to write the log to. | |||
| */ | |||
| private OutputStream out; | |||
| /** | |||
| * Empty | |||
| */ | |||
| public TestFormatter() { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void startTestSuite(JUnitTest suite) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void startTest(Test t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void endTest(Test test) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void addFailure(Test test, Throwable t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void addFailure(Test test, AssertionFailedError t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void addError(Test test, Throwable t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void setSystemOutput(String out) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void setSystemError(String err) { | |||
| } | |||
| public void setOutput(OutputStream out) { | |||
| this.out = out; | |||
| } | |||
| public void endTestSuite(JUnitTest suite) throws BuildException { | |||
| if (out != null) { | |||
| try { | |||
| out.write(grafitto); | |||
| out.flush(); | |||
| } catch (IOException ioex) { | |||
| throw new BuildException("Unable to write output", ioex); | |||
| } finally { | |||
| if (out != System.out && out != System.err) { | |||
| try { | |||
| out.close(); | |||
| } catch (IOException e) { | |||
| // ignore | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import java.io.IOException; | |||
| import java.io.OutputStream; | |||
| import junit.framework.AssertionFailedError; | |||
| import junit.framework.Test; | |||
| import org.apache.tools.ant.BuildException; | |||
| public class TestFormatter implements JUnitResultFormatter { | |||
| private static final byte[] grafitto = new byte[] { | |||
| (byte) 'T', (byte) 'e', (byte) 's', (byte) 't', (byte) 'F', (byte) 'o', | |||
| (byte) 'r', (byte) 'm', (byte) 'a', (byte) 't', (byte) 't', (byte) 'e', | |||
| (byte) 'r', (byte) ' ', (byte) 'w', (byte) 'a', (byte) 's', (byte) ' ', | |||
| (byte) 'h', (byte) 'e', (byte) 'r', (byte) 'e', 10 | |||
| }; | |||
| /** | |||
| * Where to write the log to. | |||
| */ | |||
| private OutputStream out; | |||
| /** | |||
| * Empty | |||
| */ | |||
| public TestFormatter() { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void startTestSuite(JUnitTest suite) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void startTest(Test t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void endTest(Test test) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void addFailure(Test test, Throwable t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void addFailure(Test test, AssertionFailedError t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void addError(Test test, Throwable t) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void setSystemOutput(String out) { | |||
| } | |||
| /** | |||
| * Empty | |||
| */ | |||
| public void setSystemError(String err) { | |||
| } | |||
| public void setOutput(OutputStream out) { | |||
| this.out = out; | |||
| } | |||
| public void endTestSuite(JUnitTest suite) throws BuildException { | |||
| if (out != null) { | |||
| try { | |||
| out.write(grafitto); | |||
| out.flush(); | |||
| } catch (IOException ioex) { | |||
| throw new BuildException("Unable to write output", ioex); | |||
| } finally { | |||
| if (out != System.out && out != System.err) { | |||
| try { | |||
| out.close(); | |||
| } catch (IOException e) { | |||
| // ignore | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,31 +1,31 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class VmCrash { | |||
| @Test | |||
| public void testCrash() { | |||
| System.exit(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.taskdefs.optional.junit; | |||
| import org.junit.Test; | |||
| /** | |||
| */ | |||
| public class VmCrash { | |||
| @Test | |||
| public void testCrash() { | |||
| System.exit(0); | |||
| } | |||
| } | |||
| @@ -1,83 +1,83 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import java.io.File; | |||
| import java.io.FileReader; | |||
| import java.io.IOException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertTrue; | |||
| public class XMLFormatterWithCDATAOnSystemOut { | |||
| private static final String DIR = "src/etc/testcases/taskdefs/optional/junit"; | |||
| private static final String REPORT = | |||
| "TEST-" + XMLFormatterWithCDATAOnSystemOut.class.getName() + ".xml"; | |||
| private static final String TESTDATA = | |||
| "<ERROR>" + | |||
| "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + | |||
| " <RESPONSE>" + | |||
| " <GDS/>" + | |||
| " <ERROR>" + | |||
| " <ID/>" + | |||
| " <MESSAGE/>" + | |||
| " <REQUEST_TYPE/>" + | |||
| " <RESEND/>" + | |||
| " <RAW_RESPONSE/>" + | |||
| " </ERROR>" + | |||
| " </RESPONSE>" + | |||
| "]]>" + | |||
| "</ERROR>"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| public void testOutput() { | |||
| System.out.println(TESTDATA); | |||
| } | |||
| @Test | |||
| public void testBuildfile() throws IOException { | |||
| buildRule.configureProject(DIR + "/cdataoutput.xml"); | |||
| if (buildRule.getProject().getProperty("cdata.inner") == null) { | |||
| // avoid endless loop | |||
| buildRule.executeTarget("run-junit"); | |||
| File f = buildRule.getProject().resolveFile(REPORT); | |||
| FileReader reader = null; | |||
| try { | |||
| reader = new FileReader(f); | |||
| String content = FileUtils.readFully(reader); | |||
| assertTrue(content.indexOf("</RESPONSE>]]>" | |||
| + "</ERROR>") > 0); | |||
| } finally { | |||
| if (reader != null) { | |||
| reader.close(); | |||
| } | |||
| f.delete(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import java.io.File; | |||
| import java.io.FileReader; | |||
| import java.io.IOException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertTrue; | |||
| public class XMLFormatterWithCDATAOnSystemOut { | |||
| private static final String DIR = "src/etc/testcases/taskdefs/optional/junit"; | |||
| private static final String REPORT = | |||
| "TEST-" + XMLFormatterWithCDATAOnSystemOut.class.getName() + ".xml"; | |||
| private static final String TESTDATA = | |||
| "<ERROR>" + | |||
| "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + | |||
| " <RESPONSE>" + | |||
| " <GDS/>" + | |||
| " <ERROR>" + | |||
| " <ID/>" + | |||
| " <MESSAGE/>" + | |||
| " <REQUEST_TYPE/>" + | |||
| " <RESEND/>" + | |||
| " <RAW_RESPONSE/>" + | |||
| " </ERROR>" + | |||
| " </RESPONSE>" + | |||
| "]]>" + | |||
| "</ERROR>"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| public void testOutput() { | |||
| System.out.println(TESTDATA); | |||
| } | |||
| @Test | |||
| public void testBuildfile() throws IOException { | |||
| buildRule.configureProject(DIR + "/cdataoutput.xml"); | |||
| if (buildRule.getProject().getProperty("cdata.inner") == null) { | |||
| // avoid endless loop | |||
| buildRule.executeTarget("run-junit"); | |||
| File f = buildRule.getProject().resolveFile(REPORT); | |||
| FileReader reader = null; | |||
| try { | |||
| reader = new FileReader(f); | |||
| String content = FileUtils.readFully(reader); | |||
| assertTrue(content.indexOf("</RESPONSE>]]>" | |||
| + "</ERROR>") > 0); | |||
| } finally { | |||
| if (reader != null) { | |||
| reader.close(); | |||
| } | |||
| f.delete(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,93 +1,93 @@ | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertTrue; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.PrintWriter; | |||
| import java.security.Permission; | |||
| import org.apache.tools.ant.DefaultLogger; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.taskdefs.Delete; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| import org.junit.Assume; | |||
| import org.junit.Test; | |||
| public class XMLResultAggregatorTest { | |||
| @Test | |||
| public void testFrames() throws Exception { | |||
| // For now, skip this test on JDK 6 (and below); see below for why: | |||
| try { | |||
| Class.forName("java.nio.file.Files"); | |||
| } catch (ClassNotFoundException x) { | |||
| Assume.assumeNoException("Skip test on JDK 6 and below", x); | |||
| } | |||
| final File d = new File(System.getProperty("java.io.tmpdir"), "XMLResultAggregatorTest"); | |||
| if (d.exists()) { | |||
| new Delete() {{removeDir(d);}}; // is there no utility method for this? | |||
| } | |||
| assertTrue(d.getAbsolutePath(), d.mkdir()); | |||
| File xml = new File(d, "x.xml"); | |||
| PrintWriter pw = new PrintWriter(new FileOutputStream(xml)); | |||
| try { | |||
| pw.println("<testsuite errors='0' failures='0' name='my.UnitTest' tests='1'>"); | |||
| pw.println(" <testcase classname='my.UnitTest' name='testSomething'/>"); | |||
| pw.println("</testsuite>"); | |||
| pw.flush(); | |||
| } finally { | |||
| pw.close(); | |||
| } | |||
| XMLResultAggregator task = new XMLResultAggregator(); | |||
| task.setTodir(d); | |||
| Project project = new Project(); | |||
| DefaultLogger logger = new DefaultLogger(); | |||
| logger.setOutputPrintStream(System.out); | |||
| logger.setErrorPrintStream(System.err); | |||
| logger.setMessageOutputLevel(Project.MSG_INFO); | |||
| project.addBuildListener(logger); | |||
| project.init(); | |||
| task.setProject(project); | |||
| AggregateTransformer report = task.createReport(); | |||
| report.setTodir(d); | |||
| FileSet fs = new FileSet(); | |||
| fs.setFile(xml); | |||
| task.addFileSet(fs); | |||
| /* getResourceAsStream override unnecessary on JDK 7. Ought to work around JAXP #6723276 in JDK 6, but causes a TypeCheckError in FunctionCall for reasons TBD: | |||
| Thread.currentThread().setContextClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) { | |||
| public InputStream getResourceAsStream(String name) { | |||
| if (name.startsWith("META-INF/services/")) { | |||
| return new ByteArrayInputStream(new byte[0]); | |||
| } | |||
| return super.getResourceAsStream(name); | |||
| } | |||
| }); | |||
| */ | |||
| // Use the JRE's Xerces, not lib/optional/xerces.jar: | |||
| Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader().getParent()); | |||
| // Tickle #51668: | |||
| System.setSecurityManager(new SecurityManager() {public void checkPermission(Permission perm) {}}); | |||
| task.execute(); | |||
| assertTrue(new File(d, "index.html").isFile()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.junit; | |||
| import static org.junit.Assert.assertTrue; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.PrintWriter; | |||
| import java.security.Permission; | |||
| import org.apache.tools.ant.DefaultLogger; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.taskdefs.Delete; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| import org.junit.Assume; | |||
| import org.junit.Test; | |||
| public class XMLResultAggregatorTest { | |||
| @Test | |||
| public void testFrames() throws Exception { | |||
| // For now, skip this test on JDK 6 (and below); see below for why: | |||
| try { | |||
| Class.forName("java.nio.file.Files"); | |||
| } catch (ClassNotFoundException x) { | |||
| Assume.assumeNoException("Skip test on JDK 6 and below", x); | |||
| } | |||
| final File d = new File(System.getProperty("java.io.tmpdir"), "XMLResultAggregatorTest"); | |||
| if (d.exists()) { | |||
| new Delete() {{removeDir(d);}}; // is there no utility method for this? | |||
| } | |||
| assertTrue(d.getAbsolutePath(), d.mkdir()); | |||
| File xml = new File(d, "x.xml"); | |||
| PrintWriter pw = new PrintWriter(new FileOutputStream(xml)); | |||
| try { | |||
| pw.println("<testsuite errors='0' failures='0' name='my.UnitTest' tests='1'>"); | |||
| pw.println(" <testcase classname='my.UnitTest' name='testSomething'/>"); | |||
| pw.println("</testsuite>"); | |||
| pw.flush(); | |||
| } finally { | |||
| pw.close(); | |||
| } | |||
| XMLResultAggregator task = new XMLResultAggregator(); | |||
| task.setTodir(d); | |||
| Project project = new Project(); | |||
| DefaultLogger logger = new DefaultLogger(); | |||
| logger.setOutputPrintStream(System.out); | |||
| logger.setErrorPrintStream(System.err); | |||
| logger.setMessageOutputLevel(Project.MSG_INFO); | |||
| project.addBuildListener(logger); | |||
| project.init(); | |||
| task.setProject(project); | |||
| AggregateTransformer report = task.createReport(); | |||
| report.setTodir(d); | |||
| FileSet fs = new FileSet(); | |||
| fs.setFile(xml); | |||
| task.addFileSet(fs); | |||
| /* getResourceAsStream override unnecessary on JDK 7. Ought to work around JAXP #6723276 in JDK 6, but causes a TypeCheckError in FunctionCall for reasons TBD: | |||
| Thread.currentThread().setContextClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) { | |||
| public InputStream getResourceAsStream(String name) { | |||
| if (name.startsWith("META-INF/services/")) { | |||
| return new ByteArrayInputStream(new byte[0]); | |||
| } | |||
| return super.getResourceAsStream(name); | |||
| } | |||
| }); | |||
| */ | |||
| // Use the JRE's Xerces, not lib/optional/xerces.jar: | |||
| Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader().getParent()); | |||
| // Tickle #51668: | |||
| System.setSecurityManager(new SecurityManager() {public void checkPermission(Permission perm) {}}); | |||
| task.execute(); | |||
| assertTrue(new File(d, "index.html").isFile()); | |||
| } | |||
| } | |||
| @@ -1,146 +1,146 @@ | |||
| /* | |||
| * 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.taskdefs.optional.script; | |||
| 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.apache.tools.ant.types.FileSet; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the examples of the <scriptdef> task. | |||
| * | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class ScriptDefTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/script/scriptdef.xml"); | |||
| } | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| // get the fileset and its basedir | |||
| Project p = buildRule.getProject(); | |||
| FileSet fileset = (FileSet) p.getReference("testfileset"); | |||
| File baseDir = fileset.getDir(p); | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Expecting attribute value printed", | |||
| log.indexOf("Attribute attr1 = test") != -1); | |||
| assertTrue("Expecting nested element value printed", | |||
| log.indexOf("Fileset basedir = " + baseDir.getAbsolutePath()) != -1); | |||
| } | |||
| @Test | |||
| public void testNoLang() { | |||
| try { | |||
| buildRule.executeTarget("nolang"); | |||
| fail("Absence of language attribute not detected"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("requires a language attribute", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoName() { | |||
| try { | |||
| buildRule.executeTarget("noname"); | |||
| fail("Absence of name attribute not detected"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("scriptdef requires a name attribute", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNestedByClassName() { | |||
| buildRule.executeTarget("nestedbyclassname"); | |||
| // get the fileset and its basedir | |||
| Project p = buildRule.getProject(); | |||
| FileSet fileset = (FileSet) p.getReference("testfileset"); | |||
| File baseDir = fileset.getDir(p); | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Expecting attribute value to be printed", | |||
| log.indexOf("Attribute attr1 = test") != -1); | |||
| assertTrue("Expecting nested element value to be printed", | |||
| log.indexOf("Fileset basedir = " + baseDir.getAbsolutePath()) != -1); | |||
| } | |||
| @Test | |||
| public void testNoElement() { | |||
| buildRule.executeTarget("noelement"); | |||
| assertEquals("Attribute attr1 = test", buildRule.getOutput().trim()); | |||
| } | |||
| @Test | |||
| public void testException() { | |||
| try { | |||
| buildRule.executeTarget("exception"); | |||
| fail("Should have thrown an exception in the script"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("TypeError", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testDoubleDef() { | |||
| buildRule.executeTarget("doubledef"); | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Task1 did not execute", | |||
| log.indexOf("Task1") != -1); | |||
| assertTrue("Task2 did not execute", | |||
| log.indexOf("Task2") != -1); | |||
| } | |||
| @Test | |||
| public void testDoubleAttribute() { | |||
| try { | |||
| buildRule.executeTarget("doubleAttributeDef"); | |||
| fail("Should have detected duplicate attirbute definition"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("attr1 attribute more than once", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testProperty() { | |||
| buildRule.executeTarget("property"); | |||
| // get the fileset and its basedir | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Expecting property in attribute value replaced", | |||
| log.indexOf("Attribute value = test") != -1); | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.script; | |||
| 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.apache.tools.ant.types.FileSet; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Tests the examples of the <scriptdef> task. | |||
| * | |||
| * @since Ant 1.6 | |||
| */ | |||
| public class ScriptDefTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/script/scriptdef.xml"); | |||
| } | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| // get the fileset and its basedir | |||
| Project p = buildRule.getProject(); | |||
| FileSet fileset = (FileSet) p.getReference("testfileset"); | |||
| File baseDir = fileset.getDir(p); | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Expecting attribute value printed", | |||
| log.indexOf("Attribute attr1 = test") != -1); | |||
| assertTrue("Expecting nested element value printed", | |||
| log.indexOf("Fileset basedir = " + baseDir.getAbsolutePath()) != -1); | |||
| } | |||
| @Test | |||
| public void testNoLang() { | |||
| try { | |||
| buildRule.executeTarget("nolang"); | |||
| fail("Absence of language attribute not detected"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("requires a language attribute", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNoName() { | |||
| try { | |||
| buildRule.executeTarget("noname"); | |||
| fail("Absence of name attribute not detected"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("scriptdef requires a name attribute", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNestedByClassName() { | |||
| buildRule.executeTarget("nestedbyclassname"); | |||
| // get the fileset and its basedir | |||
| Project p = buildRule.getProject(); | |||
| FileSet fileset = (FileSet) p.getReference("testfileset"); | |||
| File baseDir = fileset.getDir(p); | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Expecting attribute value to be printed", | |||
| log.indexOf("Attribute attr1 = test") != -1); | |||
| assertTrue("Expecting nested element value to be printed", | |||
| log.indexOf("Fileset basedir = " + baseDir.getAbsolutePath()) != -1); | |||
| } | |||
| @Test | |||
| public void testNoElement() { | |||
| buildRule.executeTarget("noelement"); | |||
| assertEquals("Attribute attr1 = test", buildRule.getOutput().trim()); | |||
| } | |||
| @Test | |||
| public void testException() { | |||
| try { | |||
| buildRule.executeTarget("exception"); | |||
| fail("Should have thrown an exception in the script"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("TypeError", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testDoubleDef() { | |||
| buildRule.executeTarget("doubledef"); | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Task1 did not execute", | |||
| log.indexOf("Task1") != -1); | |||
| assertTrue("Task2 did not execute", | |||
| log.indexOf("Task2") != -1); | |||
| } | |||
| @Test | |||
| public void testDoubleAttribute() { | |||
| try { | |||
| buildRule.executeTarget("doubleAttributeDef"); | |||
| fail("Should have detected duplicate attirbute definition"); | |||
| } catch(BuildException ex) { | |||
| AntAssert.assertContains("attr1 attribute more than once", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testProperty() { | |||
| buildRule.executeTarget("property"); | |||
| // get the fileset and its basedir | |||
| String log = buildRule.getLog(); | |||
| assertTrue("Expecting property in attribute value replaced", | |||
| log.indexOf("Attribute value = test") != -1); | |||
| } | |||
| } | |||
| @@ -1,351 +1,351 @@ | |||
| /* | |||
| * 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.taskdefs.optional.sos; | |||
| import java.io.File; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.apache.tools.ant.types.Path; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Testcase to ensure that command line generation and required attributes are | |||
| * correct. | |||
| * | |||
| */ | |||
| public class SOSTest { | |||
| private Commandline commandline; | |||
| private static final String VSS_SERVER_PATH = "\\\\server\\vss\\srcsafe.ini"; | |||
| private static final String VSS_PROJECT_PATH = "/SourceRoot/Project"; | |||
| private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project"; | |||
| private static final String SOS_SERVER_PATH = "192.168.0.1:8888"; | |||
| private static final String SOS_USERNAME = "ant"; | |||
| private static final String SOS_PASSWORD = "rocks"; | |||
| private static final String LOCAL_PATH = "testdir"; | |||
| private static final String SRC_FILE = "Class1.java"; | |||
| private static final String SRC_LABEL = "label1"; | |||
| private static final String SRC_COMMENT = "I fixed a bug"; | |||
| private static final String SOS_HOME = "/home/user/.sos"; | |||
| private static final String VERSION = "007"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private Project project; | |||
| @Before | |||
| public void setUp() { | |||
| project = new Project(); | |||
| project.init(); | |||
| project.setBasedir("."); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| File file = new File(project.getBaseDir(), LOCAL_PATH); | |||
| if (file.exists()) { | |||
| file.delete(); | |||
| } | |||
| } | |||
| /** Test SOSGetFile flags & commandline generation */ | |||
| @Test | |||
| public void testGetFileFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "GetFile", "-file", | |||
| SRC_FILE, "-revision", "007", "-server", SOS_SERVER_PATH, "-name", | |||
| SOS_USERNAME, "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, | |||
| "-project", DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", | |||
| "-nocache", "-workdir", project.getBaseDir().getAbsolutePath() | |||
| + File.separator + LOCAL_PATH}; | |||
| // Set up a SOSGet task | |||
| SOSGet sosGet = new SOSGet(); | |||
| sosGet.setProject(project); | |||
| sosGet.setVssServerPath(VSS_SERVER_PATH); | |||
| sosGet.setSosServerPath(SOS_SERVER_PATH); | |||
| sosGet.setProjectPath(VSS_PROJECT_PATH); | |||
| sosGet.setFile(SRC_FILE); | |||
| sosGet.setUsername(SOS_USERNAME); | |||
| sosGet.setPassword(SOS_PASSWORD); | |||
| sosGet.setVersion(VERSION); | |||
| sosGet.setLocalPath(new Path(project, LOCAL_PATH)); | |||
| sosGet.setNoCache(true); | |||
| sosGet.setNoCompress(true); | |||
| sosGet.setVerbose(true); | |||
| sosGet.setRecursive(true); | |||
| commandline = sosGet.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSGetProject flags & commandline generation */ | |||
| @Test | |||
| public void testGetProjectFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "GetProject", "-recursive", | |||
| "-label", SRC_LABEL, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", "", "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", | |||
| project.getBaseDir().getAbsolutePath()}; | |||
| // Set up a SOSGet task | |||
| SOSGet sosGet = new SOSGet(); | |||
| sosGet.setProject(project); | |||
| sosGet.setVssServerPath(VSS_SERVER_PATH); | |||
| sosGet.setSosServerPath(SOS_SERVER_PATH); | |||
| sosGet.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosGet.setLabel(SRC_LABEL); | |||
| sosGet.setUsername(SOS_USERNAME); | |||
| sosGet.setSosHome(SOS_HOME); | |||
| sosGet.setNoCache(true); | |||
| sosGet.setNoCompress(false); | |||
| sosGet.setVerbose(false); | |||
| sosGet.setRecursive(true); | |||
| commandline = sosGet.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests SOSGet required attributes. */ | |||
| @Test | |||
| public void testGetExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("sosget.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("sosget.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("sosget.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("sosget.4", "some cause", "projectpath attribute must be set!"); | |||
| } | |||
| /** Test CheckInFile option flags */ | |||
| @Test | |||
| public void testCheckinFileFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckInFile", "-file", | |||
| SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache", | |||
| "-workdir", project.getBaseDir().getAbsolutePath() + File.separator | |||
| + LOCAL_PATH, "-log", SRC_COMMENT}; | |||
| // Set up a SOSCheckin task | |||
| SOSCheckin sosCheckin = new SOSCheckin(); | |||
| sosCheckin.setProject(project); | |||
| sosCheckin.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckin.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckin.setProjectPath(VSS_PROJECT_PATH); | |||
| sosCheckin.setFile(SRC_FILE); | |||
| sosCheckin.setComment(SRC_COMMENT); | |||
| sosCheckin.setUsername(SOS_USERNAME); | |||
| sosCheckin.setPassword(SOS_PASSWORD); | |||
| sosCheckin.setLocalPath(new Path(project, LOCAL_PATH)); | |||
| sosCheckin.setNoCache(true); | |||
| sosCheckin.setNoCompress(true); | |||
| sosCheckin.setVerbose(true); | |||
| sosCheckin.setRecursive(true); | |||
| commandline = sosCheckin.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test CheckInProject option flags */ | |||
| @Test | |||
| public void testCheckinProjectFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckInProject", | |||
| "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", "", "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", | |||
| project.getBaseDir().getAbsolutePath(), "-log", SRC_COMMENT,}; | |||
| // Set up a SOSCheckin task | |||
| SOSCheckin sosCheckin = new SOSCheckin(); | |||
| sosCheckin.setProject(project); | |||
| sosCheckin.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckin.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckin.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosCheckin.setComment(SRC_COMMENT); | |||
| sosCheckin.setUsername(SOS_USERNAME); | |||
| sosCheckin.setSosHome(SOS_HOME); | |||
| sosCheckin.setNoCache(true); | |||
| sosCheckin.setNoCompress(false); | |||
| sosCheckin.setVerbose(false); | |||
| sosCheckin.setRecursive(true); | |||
| commandline = sosCheckin.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSCheckIn required attributes. */ | |||
| @Test | |||
| public void testCheckinExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("soscheckin.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckin.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("soscheckin.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckin.4", "some cause", "projectpath attribute must be set!"); | |||
| } | |||
| /** Test CheckOutFile option flags */ | |||
| @Test | |||
| public void testCheckoutFileFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckOutFile", "-file", | |||
| SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache", | |||
| "-workdir", project.getBaseDir().getAbsolutePath() | |||
| + File.separator + LOCAL_PATH}; | |||
| // Set up a SOSCheckout task | |||
| SOSCheckout sosCheckout = new SOSCheckout(); | |||
| sosCheckout.setProject(project); | |||
| sosCheckout.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckout.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckout.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosCheckout.setFile(SRC_FILE); | |||
| sosCheckout.setUsername(SOS_USERNAME); | |||
| sosCheckout.setPassword(SOS_PASSWORD); | |||
| sosCheckout.setLocalPath(new Path(project, LOCAL_PATH)); | |||
| sosCheckout.setNoCache(true); | |||
| sosCheckout.setNoCompress(true); | |||
| sosCheckout.setVerbose(true); | |||
| sosCheckout.setRecursive(true); | |||
| commandline = sosCheckout.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test CheckOutProject option flags */ | |||
| @Test | |||
| public void testCheckoutProjectFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckOutProject", | |||
| "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", "", "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", | |||
| project.getBaseDir().getAbsolutePath()}; | |||
| // Set up a sosCheckout task | |||
| SOSCheckout sosCheckout = new SOSCheckout(); | |||
| sosCheckout.setProject(project); | |||
| sosCheckout.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckout.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckout.setProjectPath(VSS_PROJECT_PATH); | |||
| sosCheckout.setUsername(SOS_USERNAME); | |||
| sosCheckout.setSosHome(SOS_HOME); | |||
| sosCheckout.setNoCache(true); | |||
| sosCheckout.setNoCompress(false); | |||
| sosCheckout.setVerbose(false); | |||
| sosCheckout.setRecursive(true); | |||
| commandline = sosCheckout.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSCheckout required attributes. */ | |||
| @Test | |||
| public void testCheckoutExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("soscheckout.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckout.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("soscheckout.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckout.4", "some cause", "projectpath attribute must be set!"); | |||
| } | |||
| /** Test Label option flags */ | |||
| @Test | |||
| public void testLabelFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "AddLabel", "-server", | |||
| SOS_SERVER_PATH, "-name", SOS_USERNAME, "-password", "", "-database", | |||
| VSS_SERVER_PATH, "-project", DS_VSS_PROJECT_PATH, "-label", | |||
| SRC_LABEL, "-verbose", "-log", SRC_COMMENT}; | |||
| // Set up a sosCheckout task | |||
| SOSLabel sosLabel = new SOSLabel(); | |||
| sosLabel.setVssServerPath(VSS_SERVER_PATH); | |||
| sosLabel.setSosServerPath(SOS_SERVER_PATH); | |||
| sosLabel.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosLabel.setUsername(SOS_USERNAME); | |||
| sosLabel.setSosHome(SOS_HOME); | |||
| sosLabel.setComment(SRC_COMMENT); | |||
| sosLabel.setLabel(SRC_LABEL); | |||
| sosLabel.setNoCache(true); | |||
| sosLabel.setNoCompress(false); | |||
| sosLabel.setVerbose(true); | |||
| commandline = sosLabel.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSLabel required attributes. */ | |||
| @Test | |||
| public void testLabelExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("soslabel.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.4", "some cause", "projectpath attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.5", "some cause", "label attribute must be set!"); | |||
| } | |||
| private void expectSpecificBuildException(String target, String errorMessage, | |||
| String exceptionMessage) { | |||
| try { | |||
| buildRule.executeTarget(target); | |||
| fail(errorMessage); | |||
| } catch(BuildException ex) { | |||
| assertEquals(exceptionMessage, ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| * Iterate through the generated command line comparing it to reference | |||
| * one. | |||
| * | |||
| * @param sTestCmdLine The reference command line; | |||
| * @param sGeneratedCmdLine The generated command line; | |||
| */ | |||
| private void checkCommandLines(String[] sTestCmdLine, String[] sGeneratedCmdLine) { | |||
| int length = sTestCmdLine.length; | |||
| for (int i = 0; i < length; i++) { | |||
| try { | |||
| assertEquals("arg # " + String.valueOf(i), | |||
| sTestCmdLine[i], | |||
| sGeneratedCmdLine[i]); | |||
| } catch (ArrayIndexOutOfBoundsException aioob) { | |||
| fail("missing arg " + sTestCmdLine[i]); | |||
| } | |||
| } | |||
| if (sGeneratedCmdLine.length > sTestCmdLine.length) { | |||
| // We have extra elements | |||
| fail("extra args"); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.sos; | |||
| import java.io.File; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.apache.tools.ant.types.Path; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Testcase to ensure that command line generation and required attributes are | |||
| * correct. | |||
| * | |||
| */ | |||
| public class SOSTest { | |||
| private Commandline commandline; | |||
| private static final String VSS_SERVER_PATH = "\\\\server\\vss\\srcsafe.ini"; | |||
| private static final String VSS_PROJECT_PATH = "/SourceRoot/Project"; | |||
| private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project"; | |||
| private static final String SOS_SERVER_PATH = "192.168.0.1:8888"; | |||
| private static final String SOS_USERNAME = "ant"; | |||
| private static final String SOS_PASSWORD = "rocks"; | |||
| private static final String LOCAL_PATH = "testdir"; | |||
| private static final String SRC_FILE = "Class1.java"; | |||
| private static final String SRC_LABEL = "label1"; | |||
| private static final String SRC_COMMENT = "I fixed a bug"; | |||
| private static final String SOS_HOME = "/home/user/.sos"; | |||
| private static final String VERSION = "007"; | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private Project project; | |||
| @Before | |||
| public void setUp() { | |||
| project = new Project(); | |||
| project.init(); | |||
| project.setBasedir("."); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| File file = new File(project.getBaseDir(), LOCAL_PATH); | |||
| if (file.exists()) { | |||
| file.delete(); | |||
| } | |||
| } | |||
| /** Test SOSGetFile flags & commandline generation */ | |||
| @Test | |||
| public void testGetFileFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "GetFile", "-file", | |||
| SRC_FILE, "-revision", "007", "-server", SOS_SERVER_PATH, "-name", | |||
| SOS_USERNAME, "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, | |||
| "-project", DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", | |||
| "-nocache", "-workdir", project.getBaseDir().getAbsolutePath() | |||
| + File.separator + LOCAL_PATH}; | |||
| // Set up a SOSGet task | |||
| SOSGet sosGet = new SOSGet(); | |||
| sosGet.setProject(project); | |||
| sosGet.setVssServerPath(VSS_SERVER_PATH); | |||
| sosGet.setSosServerPath(SOS_SERVER_PATH); | |||
| sosGet.setProjectPath(VSS_PROJECT_PATH); | |||
| sosGet.setFile(SRC_FILE); | |||
| sosGet.setUsername(SOS_USERNAME); | |||
| sosGet.setPassword(SOS_PASSWORD); | |||
| sosGet.setVersion(VERSION); | |||
| sosGet.setLocalPath(new Path(project, LOCAL_PATH)); | |||
| sosGet.setNoCache(true); | |||
| sosGet.setNoCompress(true); | |||
| sosGet.setVerbose(true); | |||
| sosGet.setRecursive(true); | |||
| commandline = sosGet.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSGetProject flags & commandline generation */ | |||
| @Test | |||
| public void testGetProjectFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "GetProject", "-recursive", | |||
| "-label", SRC_LABEL, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", "", "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", | |||
| project.getBaseDir().getAbsolutePath()}; | |||
| // Set up a SOSGet task | |||
| SOSGet sosGet = new SOSGet(); | |||
| sosGet.setProject(project); | |||
| sosGet.setVssServerPath(VSS_SERVER_PATH); | |||
| sosGet.setSosServerPath(SOS_SERVER_PATH); | |||
| sosGet.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosGet.setLabel(SRC_LABEL); | |||
| sosGet.setUsername(SOS_USERNAME); | |||
| sosGet.setSosHome(SOS_HOME); | |||
| sosGet.setNoCache(true); | |||
| sosGet.setNoCompress(false); | |||
| sosGet.setVerbose(false); | |||
| sosGet.setRecursive(true); | |||
| commandline = sosGet.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests SOSGet required attributes. */ | |||
| @Test | |||
| public void testGetExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("sosget.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("sosget.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("sosget.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("sosget.4", "some cause", "projectpath attribute must be set!"); | |||
| } | |||
| /** Test CheckInFile option flags */ | |||
| @Test | |||
| public void testCheckinFileFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckInFile", "-file", | |||
| SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache", | |||
| "-workdir", project.getBaseDir().getAbsolutePath() + File.separator | |||
| + LOCAL_PATH, "-log", SRC_COMMENT}; | |||
| // Set up a SOSCheckin task | |||
| SOSCheckin sosCheckin = new SOSCheckin(); | |||
| sosCheckin.setProject(project); | |||
| sosCheckin.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckin.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckin.setProjectPath(VSS_PROJECT_PATH); | |||
| sosCheckin.setFile(SRC_FILE); | |||
| sosCheckin.setComment(SRC_COMMENT); | |||
| sosCheckin.setUsername(SOS_USERNAME); | |||
| sosCheckin.setPassword(SOS_PASSWORD); | |||
| sosCheckin.setLocalPath(new Path(project, LOCAL_PATH)); | |||
| sosCheckin.setNoCache(true); | |||
| sosCheckin.setNoCompress(true); | |||
| sosCheckin.setVerbose(true); | |||
| sosCheckin.setRecursive(true); | |||
| commandline = sosCheckin.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test CheckInProject option flags */ | |||
| @Test | |||
| public void testCheckinProjectFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckInProject", | |||
| "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", "", "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", | |||
| project.getBaseDir().getAbsolutePath(), "-log", SRC_COMMENT,}; | |||
| // Set up a SOSCheckin task | |||
| SOSCheckin sosCheckin = new SOSCheckin(); | |||
| sosCheckin.setProject(project); | |||
| sosCheckin.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckin.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckin.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosCheckin.setComment(SRC_COMMENT); | |||
| sosCheckin.setUsername(SOS_USERNAME); | |||
| sosCheckin.setSosHome(SOS_HOME); | |||
| sosCheckin.setNoCache(true); | |||
| sosCheckin.setNoCompress(false); | |||
| sosCheckin.setVerbose(false); | |||
| sosCheckin.setRecursive(true); | |||
| commandline = sosCheckin.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSCheckIn required attributes. */ | |||
| @Test | |||
| public void testCheckinExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("soscheckin.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckin.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("soscheckin.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckin.4", "some cause", "projectpath attribute must be set!"); | |||
| } | |||
| /** Test CheckOutFile option flags */ | |||
| @Test | |||
| public void testCheckoutFileFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckOutFile", "-file", | |||
| SRC_FILE, "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", SOS_PASSWORD, "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "-verbose", "-nocompress", "-nocache", | |||
| "-workdir", project.getBaseDir().getAbsolutePath() | |||
| + File.separator + LOCAL_PATH}; | |||
| // Set up a SOSCheckout task | |||
| SOSCheckout sosCheckout = new SOSCheckout(); | |||
| sosCheckout.setProject(project); | |||
| sosCheckout.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckout.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckout.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosCheckout.setFile(SRC_FILE); | |||
| sosCheckout.setUsername(SOS_USERNAME); | |||
| sosCheckout.setPassword(SOS_PASSWORD); | |||
| sosCheckout.setLocalPath(new Path(project, LOCAL_PATH)); | |||
| sosCheckout.setNoCache(true); | |||
| sosCheckout.setNoCompress(true); | |||
| sosCheckout.setVerbose(true); | |||
| sosCheckout.setRecursive(true); | |||
| commandline = sosCheckout.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test CheckOutProject option flags */ | |||
| @Test | |||
| public void testCheckoutProjectFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "CheckOutProject", | |||
| "-recursive", "-server", SOS_SERVER_PATH, "-name", SOS_USERNAME, | |||
| "-password", "", "-database", VSS_SERVER_PATH, "-project", | |||
| DS_VSS_PROJECT_PATH, "", "", "-soshome", SOS_HOME, "-workdir", | |||
| project.getBaseDir().getAbsolutePath()}; | |||
| // Set up a sosCheckout task | |||
| SOSCheckout sosCheckout = new SOSCheckout(); | |||
| sosCheckout.setProject(project); | |||
| sosCheckout.setVssServerPath(VSS_SERVER_PATH); | |||
| sosCheckout.setSosServerPath(SOS_SERVER_PATH); | |||
| sosCheckout.setProjectPath(VSS_PROJECT_PATH); | |||
| sosCheckout.setUsername(SOS_USERNAME); | |||
| sosCheckout.setSosHome(SOS_HOME); | |||
| sosCheckout.setNoCache(true); | |||
| sosCheckout.setNoCompress(false); | |||
| sosCheckout.setVerbose(false); | |||
| sosCheckout.setRecursive(true); | |||
| commandline = sosCheckout.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSCheckout required attributes. */ | |||
| @Test | |||
| public void testCheckoutExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("soscheckout.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckout.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("soscheckout.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soscheckout.4", "some cause", "projectpath attribute must be set!"); | |||
| } | |||
| /** Test Label option flags */ | |||
| @Test | |||
| public void testLabelFlags() { | |||
| String[] sTestCmdLine = {"soscmd", "-command", "AddLabel", "-server", | |||
| SOS_SERVER_PATH, "-name", SOS_USERNAME, "-password", "", "-database", | |||
| VSS_SERVER_PATH, "-project", DS_VSS_PROJECT_PATH, "-label", | |||
| SRC_LABEL, "-verbose", "-log", SRC_COMMENT}; | |||
| // Set up a sosCheckout task | |||
| SOSLabel sosLabel = new SOSLabel(); | |||
| sosLabel.setVssServerPath(VSS_SERVER_PATH); | |||
| sosLabel.setSosServerPath(SOS_SERVER_PATH); | |||
| sosLabel.setProjectPath(DS_VSS_PROJECT_PATH); | |||
| sosLabel.setUsername(SOS_USERNAME); | |||
| sosLabel.setSosHome(SOS_HOME); | |||
| sosLabel.setComment(SRC_COMMENT); | |||
| sosLabel.setLabel(SRC_LABEL); | |||
| sosLabel.setNoCache(true); | |||
| sosLabel.setNoCompress(false); | |||
| sosLabel.setVerbose(true); | |||
| commandline = sosLabel.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Test SOSLabel required attributes. */ | |||
| @Test | |||
| public void testLabelExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/sos/sos.xml"); | |||
| expectSpecificBuildException("soslabel.1", "some cause", "sosserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.2", "some cause", "username attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.3", "some cause", "vssserverpath attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.4", "some cause", "projectpath attribute must be set!"); | |||
| expectSpecificBuildException("soslabel.5", "some cause", "label attribute must be set!"); | |||
| } | |||
| private void expectSpecificBuildException(String target, String errorMessage, | |||
| String exceptionMessage) { | |||
| try { | |||
| buildRule.executeTarget(target); | |||
| fail(errorMessage); | |||
| } catch(BuildException ex) { | |||
| assertEquals(exceptionMessage, ex.getMessage()); | |||
| } | |||
| } | |||
| /** | |||
| * Iterate through the generated command line comparing it to reference | |||
| * one. | |||
| * | |||
| * @param sTestCmdLine The reference command line; | |||
| * @param sGeneratedCmdLine The generated command line; | |||
| */ | |||
| private void checkCommandLines(String[] sTestCmdLine, String[] sGeneratedCmdLine) { | |||
| int length = sTestCmdLine.length; | |||
| for (int i = 0; i < length; i++) { | |||
| try { | |||
| assertEquals("arg # " + String.valueOf(i), | |||
| sTestCmdLine[i], | |||
| sGeneratedCmdLine[i]); | |||
| } catch (ArrayIndexOutOfBoundsException aioob) { | |||
| fail("missing arg " + sTestCmdLine[i]); | |||
| } | |||
| } | |||
| if (sGeneratedCmdLine.length > sTestCmdLine.length) { | |||
| // We have extra elements | |||
| fail("extra args"); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,50 +1,49 @@ | |||
| /* | |||
| * 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.taskdefs.optional.splash; | |||
| import org.apache.tools.ant.Project; | |||
| /** | |||
| * This is an "interactive" test, it passes if the splash screen | |||
| * disappears after the "finished" but before the "exiting" message. | |||
| * | |||
| * This even isn't a JUnit test case. | |||
| * | |||
| * @since Ant 1.5.2 | |||
| */ | |||
| public class SplashScreenTest { | |||
| public static void main(String[] args) throws InterruptedException { | |||
| Project p = new Project(); | |||
| SplashTask t = new SplashTask(); | |||
| t.setProject(p); | |||
| t.execute(); | |||
| // give it some time to display | |||
| Thread.sleep(2000); | |||
| p.fireBuildFinished(null); | |||
| System.err.println("finished"); | |||
| Thread.sleep(2000); | |||
| System.err.println("exiting"); | |||
| System.exit(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.taskdefs.optional.splash; | |||
| import org.apache.tools.ant.Project; | |||
| /** | |||
| * This is an "interactive" test, it passes if the splash screen | |||
| * disappears after the "finished" but before the "exiting" message. | |||
| * | |||
| * This even isn't a JUnit test case. | |||
| * | |||
| * @since Ant 1.5.2 | |||
| */ | |||
| public class SplashScreenTest { | |||
| public static void main(String[] args) throws InterruptedException { | |||
| Project p = new Project(); | |||
| SplashTask t = new SplashTask(); | |||
| t.setProject(p); | |||
| t.execute(); | |||
| // give it some time to display | |||
| Thread.sleep(2000); | |||
| p.fireBuildFinished(null); | |||
| System.err.println("finished"); | |||
| Thread.sleep(2000); | |||
| System.err.println("exiting"); | |||
| System.exit(0); | |||
| } | |||
| } | |||
| @@ -1,297 +1,297 @@ | |||
| /* | |||
| * 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. | |||
| * | |||
| */ | |||
| /* | |||
| * Since the initial version of this file was deveolped on the clock on | |||
| * an NSF grant I should say the following boilerplate: | |||
| * | |||
| * This material is based upon work supported by the National Science | |||
| * Foundaton under Grant No. EIA-0196404. Any opinions, findings, and | |||
| * conclusions or recommendations expressed in this material are those | |||
| * of the author and do not necessarily reflect the views of the | |||
| * National Science Foundation. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.optional.unix; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.taskdefs.condition.Os; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.util.SymbolicLinkUtils; | |||
| import org.junit.After; | |||
| import org.junit.Assume; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertFalse; | |||
| import static org.junit.Assert.assertNotNull; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| import java.io.File; | |||
| /** | |||
| * Test cases for the Symlink task. Link creation, link deletion, recording | |||
| * of links in multiple directories, and restoration of links recorded are | |||
| * all tested. A separate test for the utility method Symlink.deleteSymlink | |||
| * is not included because action="delete" only prints a message and calls | |||
| * Symlink.deleteSymlink, making a separate test redundant. | |||
| * | |||
| */ | |||
| public class SymlinkTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private boolean supportsSymlinks = Os.isFamily("unix"); | |||
| @Before | |||
| public void setUp() { | |||
| Assume.assumeTrue("Symlinks not supported on current operating system", supportsSymlinks); | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/unix/symlink.xml"); | |||
| buildRule.executeTarget("setUp"); | |||
| } | |||
| @Test | |||
| public void testSingle() { | |||
| buildRule.executeTarget("test-single"); | |||
| Project p = buildRule.getProject(); | |||
| assertNotNull("Failed to create file", | |||
| p.getProperty("test.single.file.created")); | |||
| assertNotNull("Failed to create link", | |||
| p.getProperty("test.single.link.created")); | |||
| } | |||
| @Test | |||
| public void testDelete() { | |||
| buildRule.executeTarget("test-delete"); | |||
| Project p = buildRule.getProject(); | |||
| String linkDeleted = p.getProperty("test.delete.link.still.there"); | |||
| assertNotNull("Actual file deleted by symlink", | |||
| p.getProperty("test.delete.file.still.there")); | |||
| if (linkDeleted != null) { | |||
| fail(linkDeleted); | |||
| } | |||
| } | |||
| @Test | |||
| public void testRecord() { | |||
| buildRule.executeTarget("test-record"); | |||
| Project p = buildRule.getProject(); | |||
| assertNotNull("Failed to create dir1", | |||
| p.getProperty("test.record.dir1.created")); | |||
| assertNotNull("Failed to create dir2", | |||
| p.getProperty("test.record.dir2.created")); | |||
| assertNotNull("Failed to create file1", | |||
| p.getProperty("test.record.file1.created")); | |||
| assertNotNull("Failed to create file2", | |||
| p.getProperty("test.record.file2.created")); | |||
| assertNotNull("Failed to create fileA", | |||
| p.getProperty("test.record.fileA.created")); | |||
| assertNotNull("Failed to create fileB", | |||
| p.getProperty("test.record.fileB.created")); | |||
| assertNotNull("Failed to create fileC", | |||
| p.getProperty("test.record.fileC.created")); | |||
| assertNotNull("Failed to create link1", | |||
| p.getProperty("test.record.link1.created")); | |||
| assertNotNull("Failed to create link2", | |||
| p.getProperty("test.record.link2.created")); | |||
| assertNotNull("Failed to create link3", | |||
| p.getProperty("test.record.link3.created")); | |||
| assertNotNull("Failed to create dirlink", | |||
| p.getProperty("test.record.dirlink.created")); | |||
| assertNotNull("Failed to create dirlink2", | |||
| p.getProperty("test.record.dirlink2.created")); | |||
| assertNotNull("Couldn't record links in dir1", | |||
| p.getProperty("test.record.dir1.recorded")); | |||
| assertNotNull("Couldn't record links in dir2", | |||
| p.getProperty("test.record.dir2.recorded")); | |||
| String dir3rec = p.getProperty("test.record.dir3.recorded"); | |||
| if (dir3rec != null) { | |||
| fail(dir3rec); | |||
| } | |||
| } | |||
| @Test | |||
| public void testRecreate() { | |||
| buildRule.executeTarget("test-recreate"); | |||
| Project p = buildRule.getProject(); | |||
| String link1Rem = p.getProperty("test.recreate.link1.not.removed"); | |||
| String link2Rem = p.getProperty("test.recreate.link2.not.removed"); | |||
| String link3Rem = p.getProperty("test.recreate.link3.not.removed"); | |||
| String dirlinkRem = p.getProperty("test.recreate.dirlink.not.removed"); | |||
| if (link1Rem != null) { | |||
| fail(link1Rem); | |||
| } | |||
| if (link2Rem != null) { | |||
| fail(link2Rem); | |||
| } | |||
| if (link3Rem != null) { | |||
| fail(link3Rem); | |||
| } | |||
| if (dirlinkRem != null) { | |||
| fail(dirlinkRem); | |||
| } | |||
| assertNotNull("Failed to recreate link1", | |||
| p.getProperty("test.recreate.link1.recreated")); | |||
| assertNotNull("Failed to recreate link2", | |||
| p.getProperty("test.recreate.link2.recreated")); | |||
| assertNotNull("Failed to recreate link3", | |||
| p.getProperty("test.recreate.link3.recreated")); | |||
| assertNotNull("Failed to recreate dirlink", | |||
| p.getProperty("test.recreate.dirlink.recreated")); | |||
| String doubleRecreate = p.getProperty("test.recreate.dirlink2.recreated.twice"); | |||
| if (doubleRecreate != null) { | |||
| fail(doubleRecreate); | |||
| } | |||
| assertNotNull("Failed to alter dirlink3", | |||
| p.getProperty("test.recreate.dirlink3.was.altered")); | |||
| } | |||
| @Test | |||
| public void testSymbolicLinkUtilsMethods() throws Exception { | |||
| buildRule.executeTarget("test-fileutils"); | |||
| SymbolicLinkUtils su = SymbolicLinkUtils.getSymbolicLinkUtils(); | |||
| java.io.File f = new File(buildRule.getOutputDir(), "file1"); | |||
| assertTrue(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertTrue(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir1"); | |||
| assertTrue(f.exists()); | |||
| assertTrue(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "file2"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir2"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "file.there"); | |||
| assertTrue(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertTrue(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir.there"); | |||
| assertTrue(f.exists()); | |||
| assertTrue(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| // it is not possible to find out that symbolic links pointing | |||
| // to inexistent files or directories are symbolic links | |||
| // it used to be possible to detect this on Mac | |||
| // this is not true under Snow Leopard and JDK 1.5 | |||
| // Removing special handling of MacOS until someone shouts | |||
| // Antoine | |||
| f = new File(buildRule.getOutputDir(), "file.notthere"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir.notthere"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| if (buildRule.getProject() != null) { | |||
| buildRule.executeTarget("tearDown"); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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. | |||
| * | |||
| */ | |||
| /* | |||
| * Since the initial version of this file was deveolped on the clock on | |||
| * an NSF grant I should say the following boilerplate: | |||
| * | |||
| * This material is based upon work supported by the National Science | |||
| * Foundaton under Grant No. EIA-0196404. Any opinions, findings, and | |||
| * conclusions or recommendations expressed in this material are those | |||
| * of the author and do not necessarily reflect the views of the | |||
| * National Science Foundation. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.optional.unix; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.taskdefs.condition.Os; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.util.SymbolicLinkUtils; | |||
| import org.junit.After; | |||
| import org.junit.Assume; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertFalse; | |||
| import static org.junit.Assert.assertNotNull; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| import java.io.File; | |||
| /** | |||
| * Test cases for the Symlink task. Link creation, link deletion, recording | |||
| * of links in multiple directories, and restoration of links recorded are | |||
| * all tested. A separate test for the utility method Symlink.deleteSymlink | |||
| * is not included because action="delete" only prints a message and calls | |||
| * Symlink.deleteSymlink, making a separate test redundant. | |||
| * | |||
| */ | |||
| public class SymlinkTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private boolean supportsSymlinks = Os.isFamily("unix"); | |||
| @Before | |||
| public void setUp() { | |||
| Assume.assumeTrue("Symlinks not supported on current operating system", supportsSymlinks); | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/unix/symlink.xml"); | |||
| buildRule.executeTarget("setUp"); | |||
| } | |||
| @Test | |||
| public void testSingle() { | |||
| buildRule.executeTarget("test-single"); | |||
| Project p = buildRule.getProject(); | |||
| assertNotNull("Failed to create file", | |||
| p.getProperty("test.single.file.created")); | |||
| assertNotNull("Failed to create link", | |||
| p.getProperty("test.single.link.created")); | |||
| } | |||
| @Test | |||
| public void testDelete() { | |||
| buildRule.executeTarget("test-delete"); | |||
| Project p = buildRule.getProject(); | |||
| String linkDeleted = p.getProperty("test.delete.link.still.there"); | |||
| assertNotNull("Actual file deleted by symlink", | |||
| p.getProperty("test.delete.file.still.there")); | |||
| if (linkDeleted != null) { | |||
| fail(linkDeleted); | |||
| } | |||
| } | |||
| @Test | |||
| public void testRecord() { | |||
| buildRule.executeTarget("test-record"); | |||
| Project p = buildRule.getProject(); | |||
| assertNotNull("Failed to create dir1", | |||
| p.getProperty("test.record.dir1.created")); | |||
| assertNotNull("Failed to create dir2", | |||
| p.getProperty("test.record.dir2.created")); | |||
| assertNotNull("Failed to create file1", | |||
| p.getProperty("test.record.file1.created")); | |||
| assertNotNull("Failed to create file2", | |||
| p.getProperty("test.record.file2.created")); | |||
| assertNotNull("Failed to create fileA", | |||
| p.getProperty("test.record.fileA.created")); | |||
| assertNotNull("Failed to create fileB", | |||
| p.getProperty("test.record.fileB.created")); | |||
| assertNotNull("Failed to create fileC", | |||
| p.getProperty("test.record.fileC.created")); | |||
| assertNotNull("Failed to create link1", | |||
| p.getProperty("test.record.link1.created")); | |||
| assertNotNull("Failed to create link2", | |||
| p.getProperty("test.record.link2.created")); | |||
| assertNotNull("Failed to create link3", | |||
| p.getProperty("test.record.link3.created")); | |||
| assertNotNull("Failed to create dirlink", | |||
| p.getProperty("test.record.dirlink.created")); | |||
| assertNotNull("Failed to create dirlink2", | |||
| p.getProperty("test.record.dirlink2.created")); | |||
| assertNotNull("Couldn't record links in dir1", | |||
| p.getProperty("test.record.dir1.recorded")); | |||
| assertNotNull("Couldn't record links in dir2", | |||
| p.getProperty("test.record.dir2.recorded")); | |||
| String dir3rec = p.getProperty("test.record.dir3.recorded"); | |||
| if (dir3rec != null) { | |||
| fail(dir3rec); | |||
| } | |||
| } | |||
| @Test | |||
| public void testRecreate() { | |||
| buildRule.executeTarget("test-recreate"); | |||
| Project p = buildRule.getProject(); | |||
| String link1Rem = p.getProperty("test.recreate.link1.not.removed"); | |||
| String link2Rem = p.getProperty("test.recreate.link2.not.removed"); | |||
| String link3Rem = p.getProperty("test.recreate.link3.not.removed"); | |||
| String dirlinkRem = p.getProperty("test.recreate.dirlink.not.removed"); | |||
| if (link1Rem != null) { | |||
| fail(link1Rem); | |||
| } | |||
| if (link2Rem != null) { | |||
| fail(link2Rem); | |||
| } | |||
| if (link3Rem != null) { | |||
| fail(link3Rem); | |||
| } | |||
| if (dirlinkRem != null) { | |||
| fail(dirlinkRem); | |||
| } | |||
| assertNotNull("Failed to recreate link1", | |||
| p.getProperty("test.recreate.link1.recreated")); | |||
| assertNotNull("Failed to recreate link2", | |||
| p.getProperty("test.recreate.link2.recreated")); | |||
| assertNotNull("Failed to recreate link3", | |||
| p.getProperty("test.recreate.link3.recreated")); | |||
| assertNotNull("Failed to recreate dirlink", | |||
| p.getProperty("test.recreate.dirlink.recreated")); | |||
| String doubleRecreate = p.getProperty("test.recreate.dirlink2.recreated.twice"); | |||
| if (doubleRecreate != null) { | |||
| fail(doubleRecreate); | |||
| } | |||
| assertNotNull("Failed to alter dirlink3", | |||
| p.getProperty("test.recreate.dirlink3.was.altered")); | |||
| } | |||
| @Test | |||
| public void testSymbolicLinkUtilsMethods() throws Exception { | |||
| buildRule.executeTarget("test-fileutils"); | |||
| SymbolicLinkUtils su = SymbolicLinkUtils.getSymbolicLinkUtils(); | |||
| java.io.File f = new File(buildRule.getOutputDir(), "file1"); | |||
| assertTrue(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertTrue(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir1"); | |||
| assertTrue(f.exists()); | |||
| assertTrue(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "file2"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir2"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertFalse(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "file.there"); | |||
| assertTrue(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertTrue(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir.there"); | |||
| assertTrue(f.exists()); | |||
| assertTrue(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertFalse(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| // it is not possible to find out that symbolic links pointing | |||
| // to inexistent files or directories are symbolic links | |||
| // it used to be possible to detect this on Mac | |||
| // this is not true under Snow Leopard and JDK 1.5 | |||
| // Removing special handling of MacOS until someone shouts | |||
| // Antoine | |||
| f = new File(buildRule.getOutputDir(), "file.notthere"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| f = new File(buildRule.getOutputDir(), "dir.notthere"); | |||
| assertFalse(f.exists()); | |||
| assertFalse(f.isDirectory()); | |||
| assertFalse(f.isFile()); | |||
| assertTrue(su.isSymbolicLink(f.getAbsolutePath()) == false); | |||
| assertTrue(su.isSymbolicLink(f.getParentFile(), f.getName()) == false); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getAbsolutePath())); | |||
| assertTrue(su.isDanglingSymbolicLink(f.getParentFile(), | |||
| f.getName())); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| if (buildRule.getProject() != null) { | |||
| buildRule.executeTarget("tearDown"); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,475 +1,475 @@ | |||
| /* | |||
| * 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.taskdefs.optional.vss; | |||
| import java.io.File; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Calendar; | |||
| import java.util.Date; | |||
| import java.util.TimeZone; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.Location; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.taskdefs.Tstamp; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.apache.tools.ant.types.Path; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Testcase to ensure that command line generation and required attributes are correct. | |||
| * | |||
| */ | |||
| public class MSVSSTest implements MSVSSConstants { | |||
| private Commandline commandline; | |||
| private static final String VSS_PROJECT_PATH = "/SourceRoot/Project"; | |||
| private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project"; | |||
| private static final String VSS_USERNAME = "ant"; | |||
| private static final String VSS_PASSWORD = "rocks"; | |||
| private static final String LOCAL_PATH = "testdir"; | |||
| private static final String SRC_LABEL = "label1"; | |||
| private static final String LONG_LABEL = "123456789012345678901234567890"; | |||
| private static final String SRC_COMMENT = "I fixed a bug"; | |||
| private static final String VERSION = "007"; | |||
| private static final String DATE = "00-00-00"; | |||
| private static final String DATE2 = "01-01-01"; | |||
| private static final String OUTPUT = "output.log"; | |||
| private static final String SS_DIR = "c:/winnt".replace('/', File.separatorChar); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private Project project; | |||
| @Before | |||
| public void setUp(){ | |||
| project = new Project(); | |||
| project.setBasedir("."); | |||
| project.init(); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| File file = new File(project.getBaseDir(), LOCAL_PATH); | |||
| if (file.exists()) { | |||
| file.delete(); | |||
| } | |||
| } | |||
| @Test | |||
| public void testGetCommandLine() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_GET, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_OVERRIDE_WORKING_DIR + project.getBaseDir() | |||
| .getAbsolutePath() | |||
| + File.separator + LOCAL_PATH, MSVSS.FLAG_AUTORESPONSE_DEF, | |||
| MSVSS.FLAG_RECURSION, MSVSS.FLAG_VERSION + VERSION, MSVSS.FLAG_LOGIN | |||
| + VSS_USERNAME + "," + VSS_PASSWORD, FLAG_FILETIME_UPDATED, FLAG_SKIP_WRITABLE}; | |||
| // Set up a VSSGet task | |||
| MSVSSGET vssGet = new MSVSSGET(); | |||
| vssGet.setProject(project); | |||
| vssGet.setRecursive(true); | |||
| vssGet.setLocalpath(new Path(project, LOCAL_PATH)); | |||
| vssGet.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssGet.setVersion(VERSION); | |||
| vssGet.setQuiet(false); | |||
| vssGet.setDate(DATE); | |||
| vssGet.setLabel(SRC_LABEL); | |||
| vssGet.setVsspath(VSS_PROJECT_PATH); | |||
| MSVSS.CurrentModUpdated cmu = new MSVSS.CurrentModUpdated(); | |||
| cmu.setValue(TIME_UPDATED); | |||
| vssGet.setFileTimeStamp(cmu); | |||
| MSVSS.WritableFiles wf = new MSVSS.WritableFiles(); | |||
| wf.setValue(WRITABLE_SKIP); | |||
| vssGet.setWritableFiles(wf); | |||
| commandline = vssGet.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests VSSGet required attributes. */ | |||
| @Test | |||
| public void testGetExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vssget.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** Tests Label commandline generation. */ | |||
| @Test | |||
| public void testLabelCommandLine1() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_LABEL, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_COMMENT + SRC_COMMENT, MSVSS.FLAG_AUTORESPONSE_YES, | |||
| MSVSS.FLAG_LABEL + SRC_LABEL, MSVSS.FLAG_VERSION + VERSION, MSVSS.FLAG_LOGIN | |||
| + VSS_USERNAME + "," + VSS_PASSWORD}; | |||
| // Set up a VSSLabel task | |||
| MSVSSLABEL vssLabel = new MSVSSLABEL(); | |||
| vssLabel.setProject(project); | |||
| vssLabel.setComment(SRC_COMMENT); | |||
| vssLabel.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssLabel.setVersion(VERSION); | |||
| vssLabel.setAutoresponse("Y"); | |||
| vssLabel.setLabel(SRC_LABEL); | |||
| vssLabel.setVsspath(VSS_PROJECT_PATH); | |||
| commandline = vssLabel.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests Label commandline generation with a label of more than 31 chars. */ | |||
| @Test | |||
| public void testLabelCommandLine2() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_LABEL, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_COMMENT + SRC_COMMENT, MSVSS.FLAG_AUTORESPONSE_DEF, | |||
| MSVSS.FLAG_LABEL + LONG_LABEL, | |||
| MSVSS.FLAG_LOGIN + VSS_USERNAME + "," + VSS_PASSWORD}; | |||
| // Set up a VSSLabel task | |||
| MSVSSLABEL vssLabel = new MSVSSLABEL(); | |||
| vssLabel.setProject(project); | |||
| vssLabel.setComment(SRC_COMMENT); | |||
| vssLabel.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssLabel.setLabel(LONG_LABEL + "blahblah"); | |||
| vssLabel.setVsspath(VSS_PROJECT_PATH); | |||
| commandline = vssLabel.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSLabel required attributes. | |||
| */ | |||
| @Test | |||
| public void testLabelExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsslabel.1", "some cause", "vsspath attribute must be set!"); | |||
| expectSpecificBuildException("vsslabel.2", "some cause", "label attribute must be set!"); | |||
| } | |||
| /** Tests VSSHistory commandline generation with from label. */ | |||
| @Test | |||
| public void testHistoryCommandLine1() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_HISTORY, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_VERSION_LABEL + LONG_LABEL | |||
| + MSVSS.VALUE_FROMLABEL + SRC_LABEL, MSVSS.FLAG_LOGIN + VSS_USERNAME | |||
| + "," + VSS_PASSWORD, MSVSS.FLAG_OUTPUT + project.getBaseDir() | |||
| .getAbsolutePath() | |||
| + File.separator + OUTPUT}; | |||
| // Set up a VSSHistory task | |||
| MSVSSHISTORY vssHistory = new MSVSSHISTORY(); | |||
| vssHistory.setProject(project); | |||
| vssHistory.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssHistory.setFromLabel(SRC_LABEL); | |||
| vssHistory.setToLabel(LONG_LABEL + "blahblah"); | |||
| vssHistory.setVsspath(VSS_PROJECT_PATH); | |||
| vssHistory.setRecursive(false); | |||
| vssHistory.setOutput(new File(project.getBaseDir().getAbsolutePath(), OUTPUT)); | |||
| commandline = vssHistory.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests VSSHistory commandline generation with from date. */ | |||
| @Test | |||
| public void testHistoryCommandLine2() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_HISTORY, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_VERSION_DATE + DATE + MSVSS.VALUE_FROMDATE | |||
| + DATE2, MSVSS.FLAG_RECURSION, MSVSS.FLAG_LOGIN + VSS_USERNAME + "," + VSS_PASSWORD}; | |||
| // Set up a VSSHistory task | |||
| MSVSSHISTORY vssHistory = new MSVSSHISTORY(); | |||
| vssHistory.setProject(project); | |||
| vssHistory.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssHistory.setFromDate(DATE2); | |||
| vssHistory.setToDate(DATE); | |||
| vssHistory.setVsspath(VSS_PROJECT_PATH); | |||
| vssHistory.setRecursive(true); | |||
| commandline = vssHistory.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests VSSHistory commandline generation with date calculation. */ | |||
| @Test | |||
| public void testHistoryCommandLine3() { | |||
| // Set up a Timestamp | |||
| Tstamp tstamp = new Tstamp(); | |||
| Location location = new Location("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| tstamp.setLocation(location); | |||
| tstamp.setProject(project); | |||
| Tstamp.CustomFormat format = tstamp.createFormat(); | |||
| format.setProperty("today"); | |||
| format.setPattern("HH:mm:ss z"); | |||
| format.setTimezone("GMT"); | |||
| Date date = Calendar.getInstance().getTime(); | |||
| format.execute(project, date, location); | |||
| String today = project.getProperty("today"); | |||
| // Get today's date | |||
| SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss z"); | |||
| sdf.setTimeZone( TimeZone.getTimeZone("GMT") ); | |||
| String expected = sdf.format(date); | |||
| // Set up a VSSHistory task | |||
| MSVSSHISTORY vssHistory = new MSVSSHISTORY(); | |||
| vssHistory.setProject(project); | |||
| vssHistory.setLogin(VSS_USERNAME); | |||
| vssHistory.setToDate(today); | |||
| vssHistory.setVsspath(VSS_PROJECT_PATH); | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_HISTORY, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_VERSION_DATE + expected, MSVSS.FLAG_LOGIN + VSS_USERNAME}; | |||
| commandline = vssHistory.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Tests VSSHistory required attributes. | |||
| */ | |||
| @Test | |||
| public void testHistoryExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsshistory.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| private void expectSpecificBuildException(String target, String failMessage, | |||
| String exceptionMessage) { | |||
| try { | |||
| buildRule.executeTarget(target); | |||
| fail(failMessage); | |||
| } catch(BuildException ex) { | |||
| assertEquals(exceptionMessage, ex.getMessage()); | |||
| } | |||
| } | |||
| /** Tests CheckIn commandline generation. */ | |||
| @Test | |||
| public void testCheckinCommandLine() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_CHECKIN, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_NO, MSVSS.FLAG_WRITABLE, MSVSS.FLAG_LOGIN + VSS_USERNAME, | |||
| MSVSS.FLAG_COMMENT + SRC_COMMENT}; | |||
| // Set up a VSSCheckIn task | |||
| MSVSSCHECKIN vssCheckin = new MSVSSCHECKIN(); | |||
| vssCheckin.setProject(project); | |||
| vssCheckin.setComment(SRC_COMMENT); | |||
| vssCheckin.setLogin(VSS_USERNAME); | |||
| vssCheckin.setAutoresponse("N"); | |||
| vssCheckin.setVsspath(VSS_PROJECT_PATH); | |||
| vssCheckin.setWritable(true); | |||
| commandline = vssCheckin.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCheckIn required attributes. | |||
| */ | |||
| @Test | |||
| public void testCheckinExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscheckin.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** Tests CheckOut commandline generation. */ | |||
| @Test | |||
| public void testCheckoutCommandLine() { | |||
| String[] sTestCmdLine = {SS_DIR + File.separator + MSVSS.SS_EXE, MSVSS.COMMAND_CHECKOUT, | |||
| DS_VSS_PROJECT_PATH, MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_RECURSION, | |||
| MSVSS.FLAG_VERSION_DATE + DATE, MSVSS.FLAG_LOGIN + VSS_USERNAME, | |||
| FLAG_FILETIME_MODIFIED, FLAG_NO_GET}; | |||
| // Set up a VSSCheckOut task | |||
| MSVSSCHECKOUT vssCheckout = new MSVSSCHECKOUT(); | |||
| vssCheckout.setProject(project); | |||
| vssCheckout.setLogin(VSS_USERNAME); | |||
| vssCheckout.setVsspath(DS_VSS_PROJECT_PATH); | |||
| vssCheckout.setRecursive(true); | |||
| vssCheckout.setDate(DATE); | |||
| vssCheckout.setLabel(SRC_LABEL); | |||
| vssCheckout.setSsdir(SS_DIR); | |||
| MSVSS.CurrentModUpdated cmu = new MSVSS.CurrentModUpdated(); | |||
| cmu.setValue(TIME_MODIFIED); | |||
| vssCheckout.setFileTimeStamp(cmu); | |||
| vssCheckout.setGetLocalCopy(false); | |||
| commandline = vssCheckout.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCheckout required attributes. | |||
| */ | |||
| @Test | |||
| public void testCheckoutExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscheckout.1", "some cause", "vsspath attribute must be set!"); | |||
| expectSpecificBuildException("vsscheckout.2", "some cause", "blah is not a legal value for this attribute"); | |||
| } | |||
| /** Tests Add commandline generation. */ | |||
| @Test | |||
| public void testAddCommandLine() { | |||
| String[] sTestCmdLine = {SS_DIR + File.separator + MSVSS.SS_EXE, MSVSS.COMMAND_ADD, | |||
| project.getBaseDir().getAbsolutePath() + File.separator + LOCAL_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_RECURSION, | |||
| MSVSS.FLAG_LOGIN + VSS_USERNAME + "," + VSS_PASSWORD, MSVSS.FLAG_COMMENT + "-"}; | |||
| // Set up a VSSAdd task | |||
| MSVSSADD vssAdd = new MSVSSADD(); | |||
| vssAdd.setProject(project); | |||
| vssAdd.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssAdd.setVsspath(DS_VSS_PROJECT_PATH); | |||
| vssAdd.setRecursive(true); | |||
| vssAdd.setSsdir(SS_DIR); | |||
| vssAdd.setWritable(false); | |||
| vssAdd.setLocalpath(new Path(project, LOCAL_PATH)); | |||
| commandline = vssAdd.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSAdd required attributes. | |||
| */ | |||
| @Test | |||
| public void testAddExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vssadd.1", "some cause", "localPath attribute must be set!"); | |||
| } | |||
| /** Tests CP commandline generation. */ | |||
| @Test | |||
| public void testCpCommandLine() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_CP, | |||
| DS_VSS_PROJECT_PATH, MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_LOGIN + | |||
| VSS_USERNAME}; | |||
| // Set up a VSSCp task | |||
| MSVSSCP vssCp = new MSVSSCP(); | |||
| vssCp.setProject(project); | |||
| vssCp.setLogin(VSS_USERNAME); | |||
| vssCp.setVsspath(DS_VSS_PROJECT_PATH); | |||
| commandline = vssCp.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCP required attributes. | |||
| */ | |||
| @Test | |||
| public void testCpExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscp.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** Tests Create commandline generation. */ | |||
| @Test | |||
| public void testCreateCommandLine() { | |||
| String[] sTestCmdLine = { MSVSS.SS_EXE, MSVSS.COMMAND_CREATE, | |||
| DS_VSS_PROJECT_PATH, MSVSS.FLAG_COMMENT + SRC_COMMENT, MSVSS.FLAG_AUTORESPONSE_NO, | |||
| MSVSS.FLAG_QUIET, MSVSS.FLAG_LOGIN + VSS_USERNAME}; | |||
| // Set up a VSSCreate task | |||
| MSVSSCREATE vssCreate = new MSVSSCREATE(); | |||
| vssCreate.setProject(project); | |||
| vssCreate.setComment(SRC_COMMENT); | |||
| vssCreate.setLogin(VSS_USERNAME); | |||
| vssCreate.setVsspath(DS_VSS_PROJECT_PATH); | |||
| vssCreate.setFailOnError(true); | |||
| vssCreate.setAutoresponse("N"); | |||
| vssCreate.setQuiet(true); | |||
| commandline = vssCreate.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCreate required attributes. | |||
| */ | |||
| @Test | |||
| public void testCreateExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscreate.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** | |||
| * Iterate through the generated command line comparing it to reference one. | |||
| * @param sTestCmdLine The reference command line; | |||
| * @param sGeneratedCmdLine The generated command line; | |||
| */ | |||
| private void checkCommandLines(String[] sTestCmdLine, String[] sGeneratedCmdLine) { | |||
| int testLength = sTestCmdLine.length; | |||
| int genLength = sGeneratedCmdLine.length; | |||
| int genIndex = 0; | |||
| int testIndex = 0; | |||
| while (testIndex < testLength) { | |||
| try { | |||
| if (sGeneratedCmdLine[genIndex].equals("")) { | |||
| genIndex++; | |||
| continue; | |||
| } | |||
| assertEquals("arg # " + testIndex, | |||
| sTestCmdLine[testIndex], | |||
| sGeneratedCmdLine[genIndex]); | |||
| testIndex++; | |||
| genIndex++; | |||
| } catch (ArrayIndexOutOfBoundsException aioob) { | |||
| fail("missing arg " + sTestCmdLine[testIndex]); | |||
| } | |||
| } | |||
| // Count the number of empty strings | |||
| int cnt = 0; | |||
| for (int i = 0; i < genLength; i++) { | |||
| if (sGeneratedCmdLine[i].equals("")) { | |||
| cnt++; | |||
| } | |||
| } | |||
| if (genLength - cnt > sTestCmdLine.length) { | |||
| // We have extra elements | |||
| fail("extra args"); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.taskdefs.optional.vss; | |||
| import java.io.File; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Calendar; | |||
| import java.util.Date; | |||
| import java.util.TimeZone; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.apache.tools.ant.Location; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.taskdefs.Tstamp; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.apache.tools.ant.types.Path; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Testcase to ensure that command line generation and required attributes are correct. | |||
| * | |||
| */ | |||
| public class MSVSSTest implements MSVSSConstants { | |||
| private Commandline commandline; | |||
| private static final String VSS_PROJECT_PATH = "/SourceRoot/Project"; | |||
| private static final String DS_VSS_PROJECT_PATH = "$/SourceRoot/Project"; | |||
| private static final String VSS_USERNAME = "ant"; | |||
| private static final String VSS_PASSWORD = "rocks"; | |||
| private static final String LOCAL_PATH = "testdir"; | |||
| private static final String SRC_LABEL = "label1"; | |||
| private static final String LONG_LABEL = "123456789012345678901234567890"; | |||
| private static final String SRC_COMMENT = "I fixed a bug"; | |||
| private static final String VERSION = "007"; | |||
| private static final String DATE = "00-00-00"; | |||
| private static final String DATE2 = "01-01-01"; | |||
| private static final String OUTPUT = "output.log"; | |||
| private static final String SS_DIR = "c:/winnt".replace('/', File.separatorChar); | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| private Project project; | |||
| @Before | |||
| public void setUp(){ | |||
| project = new Project(); | |||
| project.setBasedir("."); | |||
| project.init(); | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| File file = new File(project.getBaseDir(), LOCAL_PATH); | |||
| if (file.exists()) { | |||
| file.delete(); | |||
| } | |||
| } | |||
| @Test | |||
| public void testGetCommandLine() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_GET, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_OVERRIDE_WORKING_DIR + project.getBaseDir() | |||
| .getAbsolutePath() | |||
| + File.separator + LOCAL_PATH, MSVSS.FLAG_AUTORESPONSE_DEF, | |||
| MSVSS.FLAG_RECURSION, MSVSS.FLAG_VERSION + VERSION, MSVSS.FLAG_LOGIN | |||
| + VSS_USERNAME + "," + VSS_PASSWORD, FLAG_FILETIME_UPDATED, FLAG_SKIP_WRITABLE}; | |||
| // Set up a VSSGet task | |||
| MSVSSGET vssGet = new MSVSSGET(); | |||
| vssGet.setProject(project); | |||
| vssGet.setRecursive(true); | |||
| vssGet.setLocalpath(new Path(project, LOCAL_PATH)); | |||
| vssGet.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssGet.setVersion(VERSION); | |||
| vssGet.setQuiet(false); | |||
| vssGet.setDate(DATE); | |||
| vssGet.setLabel(SRC_LABEL); | |||
| vssGet.setVsspath(VSS_PROJECT_PATH); | |||
| MSVSS.CurrentModUpdated cmu = new MSVSS.CurrentModUpdated(); | |||
| cmu.setValue(TIME_UPDATED); | |||
| vssGet.setFileTimeStamp(cmu); | |||
| MSVSS.WritableFiles wf = new MSVSS.WritableFiles(); | |||
| wf.setValue(WRITABLE_SKIP); | |||
| vssGet.setWritableFiles(wf); | |||
| commandline = vssGet.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests VSSGet required attributes. */ | |||
| @Test | |||
| public void testGetExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vssget.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** Tests Label commandline generation. */ | |||
| @Test | |||
| public void testLabelCommandLine1() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_LABEL, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_COMMENT + SRC_COMMENT, MSVSS.FLAG_AUTORESPONSE_YES, | |||
| MSVSS.FLAG_LABEL + SRC_LABEL, MSVSS.FLAG_VERSION + VERSION, MSVSS.FLAG_LOGIN | |||
| + VSS_USERNAME + "," + VSS_PASSWORD}; | |||
| // Set up a VSSLabel task | |||
| MSVSSLABEL vssLabel = new MSVSSLABEL(); | |||
| vssLabel.setProject(project); | |||
| vssLabel.setComment(SRC_COMMENT); | |||
| vssLabel.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssLabel.setVersion(VERSION); | |||
| vssLabel.setAutoresponse("Y"); | |||
| vssLabel.setLabel(SRC_LABEL); | |||
| vssLabel.setVsspath(VSS_PROJECT_PATH); | |||
| commandline = vssLabel.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests Label commandline generation with a label of more than 31 chars. */ | |||
| @Test | |||
| public void testLabelCommandLine2() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_LABEL, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_COMMENT + SRC_COMMENT, MSVSS.FLAG_AUTORESPONSE_DEF, | |||
| MSVSS.FLAG_LABEL + LONG_LABEL, | |||
| MSVSS.FLAG_LOGIN + VSS_USERNAME + "," + VSS_PASSWORD}; | |||
| // Set up a VSSLabel task | |||
| MSVSSLABEL vssLabel = new MSVSSLABEL(); | |||
| vssLabel.setProject(project); | |||
| vssLabel.setComment(SRC_COMMENT); | |||
| vssLabel.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssLabel.setLabel(LONG_LABEL + "blahblah"); | |||
| vssLabel.setVsspath(VSS_PROJECT_PATH); | |||
| commandline = vssLabel.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSLabel required attributes. | |||
| */ | |||
| @Test | |||
| public void testLabelExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsslabel.1", "some cause", "vsspath attribute must be set!"); | |||
| expectSpecificBuildException("vsslabel.2", "some cause", "label attribute must be set!"); | |||
| } | |||
| /** Tests VSSHistory commandline generation with from label. */ | |||
| @Test | |||
| public void testHistoryCommandLine1() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_HISTORY, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_VERSION_LABEL + LONG_LABEL | |||
| + MSVSS.VALUE_FROMLABEL + SRC_LABEL, MSVSS.FLAG_LOGIN + VSS_USERNAME | |||
| + "," + VSS_PASSWORD, MSVSS.FLAG_OUTPUT + project.getBaseDir() | |||
| .getAbsolutePath() | |||
| + File.separator + OUTPUT}; | |||
| // Set up a VSSHistory task | |||
| MSVSSHISTORY vssHistory = new MSVSSHISTORY(); | |||
| vssHistory.setProject(project); | |||
| vssHistory.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssHistory.setFromLabel(SRC_LABEL); | |||
| vssHistory.setToLabel(LONG_LABEL + "blahblah"); | |||
| vssHistory.setVsspath(VSS_PROJECT_PATH); | |||
| vssHistory.setRecursive(false); | |||
| vssHistory.setOutput(new File(project.getBaseDir().getAbsolutePath(), OUTPUT)); | |||
| commandline = vssHistory.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests VSSHistory commandline generation with from date. */ | |||
| @Test | |||
| public void testHistoryCommandLine2() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_HISTORY, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_VERSION_DATE + DATE + MSVSS.VALUE_FROMDATE | |||
| + DATE2, MSVSS.FLAG_RECURSION, MSVSS.FLAG_LOGIN + VSS_USERNAME + "," + VSS_PASSWORD}; | |||
| // Set up a VSSHistory task | |||
| MSVSSHISTORY vssHistory = new MSVSSHISTORY(); | |||
| vssHistory.setProject(project); | |||
| vssHistory.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssHistory.setFromDate(DATE2); | |||
| vssHistory.setToDate(DATE); | |||
| vssHistory.setVsspath(VSS_PROJECT_PATH); | |||
| vssHistory.setRecursive(true); | |||
| commandline = vssHistory.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** Tests VSSHistory commandline generation with date calculation. */ | |||
| @Test | |||
| public void testHistoryCommandLine3() { | |||
| // Set up a Timestamp | |||
| Tstamp tstamp = new Tstamp(); | |||
| Location location = new Location("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| tstamp.setLocation(location); | |||
| tstamp.setProject(project); | |||
| Tstamp.CustomFormat format = tstamp.createFormat(); | |||
| format.setProperty("today"); | |||
| format.setPattern("HH:mm:ss z"); | |||
| format.setTimezone("GMT"); | |||
| Date date = Calendar.getInstance().getTime(); | |||
| format.execute(project, date, location); | |||
| String today = project.getProperty("today"); | |||
| // Get today's date | |||
| SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss z"); | |||
| sdf.setTimeZone( TimeZone.getTimeZone("GMT") ); | |||
| String expected = sdf.format(date); | |||
| // Set up a VSSHistory task | |||
| MSVSSHISTORY vssHistory = new MSVSSHISTORY(); | |||
| vssHistory.setProject(project); | |||
| vssHistory.setLogin(VSS_USERNAME); | |||
| vssHistory.setToDate(today); | |||
| vssHistory.setVsspath(VSS_PROJECT_PATH); | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_HISTORY, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_VERSION_DATE + expected, MSVSS.FLAG_LOGIN + VSS_USERNAME}; | |||
| commandline = vssHistory.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Tests VSSHistory required attributes. | |||
| */ | |||
| @Test | |||
| public void testHistoryExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsshistory.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| private void expectSpecificBuildException(String target, String failMessage, | |||
| String exceptionMessage) { | |||
| try { | |||
| buildRule.executeTarget(target); | |||
| fail(failMessage); | |||
| } catch(BuildException ex) { | |||
| assertEquals(exceptionMessage, ex.getMessage()); | |||
| } | |||
| } | |||
| /** Tests CheckIn commandline generation. */ | |||
| @Test | |||
| public void testCheckinCommandLine() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_CHECKIN, DS_VSS_PROJECT_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_NO, MSVSS.FLAG_WRITABLE, MSVSS.FLAG_LOGIN + VSS_USERNAME, | |||
| MSVSS.FLAG_COMMENT + SRC_COMMENT}; | |||
| // Set up a VSSCheckIn task | |||
| MSVSSCHECKIN vssCheckin = new MSVSSCHECKIN(); | |||
| vssCheckin.setProject(project); | |||
| vssCheckin.setComment(SRC_COMMENT); | |||
| vssCheckin.setLogin(VSS_USERNAME); | |||
| vssCheckin.setAutoresponse("N"); | |||
| vssCheckin.setVsspath(VSS_PROJECT_PATH); | |||
| vssCheckin.setWritable(true); | |||
| commandline = vssCheckin.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCheckIn required attributes. | |||
| */ | |||
| @Test | |||
| public void testCheckinExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscheckin.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** Tests CheckOut commandline generation. */ | |||
| @Test | |||
| public void testCheckoutCommandLine() { | |||
| String[] sTestCmdLine = {SS_DIR + File.separator + MSVSS.SS_EXE, MSVSS.COMMAND_CHECKOUT, | |||
| DS_VSS_PROJECT_PATH, MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_RECURSION, | |||
| MSVSS.FLAG_VERSION_DATE + DATE, MSVSS.FLAG_LOGIN + VSS_USERNAME, | |||
| FLAG_FILETIME_MODIFIED, FLAG_NO_GET}; | |||
| // Set up a VSSCheckOut task | |||
| MSVSSCHECKOUT vssCheckout = new MSVSSCHECKOUT(); | |||
| vssCheckout.setProject(project); | |||
| vssCheckout.setLogin(VSS_USERNAME); | |||
| vssCheckout.setVsspath(DS_VSS_PROJECT_PATH); | |||
| vssCheckout.setRecursive(true); | |||
| vssCheckout.setDate(DATE); | |||
| vssCheckout.setLabel(SRC_LABEL); | |||
| vssCheckout.setSsdir(SS_DIR); | |||
| MSVSS.CurrentModUpdated cmu = new MSVSS.CurrentModUpdated(); | |||
| cmu.setValue(TIME_MODIFIED); | |||
| vssCheckout.setFileTimeStamp(cmu); | |||
| vssCheckout.setGetLocalCopy(false); | |||
| commandline = vssCheckout.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCheckout required attributes. | |||
| */ | |||
| @Test | |||
| public void testCheckoutExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscheckout.1", "some cause", "vsspath attribute must be set!"); | |||
| expectSpecificBuildException("vsscheckout.2", "some cause", "blah is not a legal value for this attribute"); | |||
| } | |||
| /** Tests Add commandline generation. */ | |||
| @Test | |||
| public void testAddCommandLine() { | |||
| String[] sTestCmdLine = {SS_DIR + File.separator + MSVSS.SS_EXE, MSVSS.COMMAND_ADD, | |||
| project.getBaseDir().getAbsolutePath() + File.separator + LOCAL_PATH, | |||
| MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_RECURSION, | |||
| MSVSS.FLAG_LOGIN + VSS_USERNAME + "," + VSS_PASSWORD, MSVSS.FLAG_COMMENT + "-"}; | |||
| // Set up a VSSAdd task | |||
| MSVSSADD vssAdd = new MSVSSADD(); | |||
| vssAdd.setProject(project); | |||
| vssAdd.setLogin(VSS_USERNAME + "," + VSS_PASSWORD); | |||
| vssAdd.setVsspath(DS_VSS_PROJECT_PATH); | |||
| vssAdd.setRecursive(true); | |||
| vssAdd.setSsdir(SS_DIR); | |||
| vssAdd.setWritable(false); | |||
| vssAdd.setLocalpath(new Path(project, LOCAL_PATH)); | |||
| commandline = vssAdd.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSAdd required attributes. | |||
| */ | |||
| @Test | |||
| public void testAddExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vssadd.1", "some cause", "localPath attribute must be set!"); | |||
| } | |||
| /** Tests CP commandline generation. */ | |||
| @Test | |||
| public void testCpCommandLine() { | |||
| String[] sTestCmdLine = {MSVSS.SS_EXE, MSVSS.COMMAND_CP, | |||
| DS_VSS_PROJECT_PATH, MSVSS.FLAG_AUTORESPONSE_DEF, MSVSS.FLAG_LOGIN + | |||
| VSS_USERNAME}; | |||
| // Set up a VSSCp task | |||
| MSVSSCP vssCp = new MSVSSCP(); | |||
| vssCp.setProject(project); | |||
| vssCp.setLogin(VSS_USERNAME); | |||
| vssCp.setVsspath(DS_VSS_PROJECT_PATH); | |||
| commandline = vssCp.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCP required attributes. | |||
| */ | |||
| @Test | |||
| public void testCpExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscp.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** Tests Create commandline generation. */ | |||
| @Test | |||
| public void testCreateCommandLine() { | |||
| String[] sTestCmdLine = { MSVSS.SS_EXE, MSVSS.COMMAND_CREATE, | |||
| DS_VSS_PROJECT_PATH, MSVSS.FLAG_COMMENT + SRC_COMMENT, MSVSS.FLAG_AUTORESPONSE_NO, | |||
| MSVSS.FLAG_QUIET, MSVSS.FLAG_LOGIN + VSS_USERNAME}; | |||
| // Set up a VSSCreate task | |||
| MSVSSCREATE vssCreate = new MSVSSCREATE(); | |||
| vssCreate.setProject(project); | |||
| vssCreate.setComment(SRC_COMMENT); | |||
| vssCreate.setLogin(VSS_USERNAME); | |||
| vssCreate.setVsspath(DS_VSS_PROJECT_PATH); | |||
| vssCreate.setFailOnError(true); | |||
| vssCreate.setAutoresponse("N"); | |||
| vssCreate.setQuiet(true); | |||
| commandline = vssCreate.buildCmdLine(); | |||
| checkCommandLines(sTestCmdLine, commandline.getCommandline()); | |||
| } | |||
| /** | |||
| * Test VSSCreate required attributes. | |||
| */ | |||
| @Test | |||
| public void testCreateExceptions() { | |||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/vss/vss.xml"); | |||
| expectSpecificBuildException("vsscreate.1", "some cause", "vsspath attribute must be set!"); | |||
| } | |||
| /** | |||
| * Iterate through the generated command line comparing it to reference one. | |||
| * @param sTestCmdLine The reference command line; | |||
| * @param sGeneratedCmdLine The generated command line; | |||
| */ | |||
| private void checkCommandLines(String[] sTestCmdLine, String[] sGeneratedCmdLine) { | |||
| int testLength = sTestCmdLine.length; | |||
| int genLength = sGeneratedCmdLine.length; | |||
| int genIndex = 0; | |||
| int testIndex = 0; | |||
| while (testIndex < testLength) { | |||
| try { | |||
| if (sGeneratedCmdLine[genIndex].equals("")) { | |||
| genIndex++; | |||
| continue; | |||
| } | |||
| assertEquals("arg # " + testIndex, | |||
| sTestCmdLine[testIndex], | |||
| sGeneratedCmdLine[genIndex]); | |||
| testIndex++; | |||
| genIndex++; | |||
| } catch (ArrayIndexOutOfBoundsException aioob) { | |||
| fail("missing arg " + sTestCmdLine[testIndex]); | |||
| } | |||
| } | |||
| // Count the number of empty strings | |||
| int cnt = 0; | |||
| for (int i = 0; i < genLength; i++) { | |||
| if (sGeneratedCmdLine[i].equals("")) { | |||
| cnt++; | |||
| } | |||
| } | |||
| if (genLength - cnt > sTestCmdLine.length) { | |||
| // We have extra elements | |||
| fail("extra args"); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,248 +1,248 @@ | |||
| /* | |||
| * 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.apache.tools.ant.Project; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Base class for FileSetTest and DirSetTest. | |||
| * | |||
| * <p>This doesn't actually test much, mainly reference handling. | |||
| * | |||
| */ | |||
| public abstract class AbstractFileSetTest { | |||
| private Project project; | |||
| @Before | |||
| public void setUp() { | |||
| project = new Project(); | |||
| project.setBasedir("."); | |||
| } | |||
| protected abstract AbstractFileSet getInstance(); | |||
| protected final Project getProject() { | |||
| return project; | |||
| } | |||
| @Test | |||
| public final void testEmptyElementIfIsReference() { | |||
| AbstractFileSet f = getInstance(); | |||
| f.setIncludes("**/*.java"); | |||
| try { | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| fail("Can add reference to " | |||
| + f.getDataTypeName() | |||
| + " with elements from setIncludes"); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| f = getInstance(); | |||
| f.createPatternSet(); | |||
| try { | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| fail("Can add reference to " | |||
| + f.getDataTypeName() | |||
| + " with nested patternset element."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when " | |||
| + "using refid", be.getMessage()); | |||
| } | |||
| f = getInstance(); | |||
| f.createInclude(); | |||
| try { | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| fail("Can add reference to " | |||
| + f.getDataTypeName() | |||
| + " with nested include element."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| f = getInstance(); | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| try { | |||
| f.setIncludes("**/*.java"); | |||
| fail("Can set includes in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setIncludesfile(new File("/a")); | |||
| fail("Can set includesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setExcludes("**/*.java"); | |||
| fail("Can set excludes in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setExcludesfile(new File("/a")); | |||
| fail("Can set excludesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setDir(project.resolveFile(".")); | |||
| fail("Can set dir in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createInclude(); | |||
| fail("Can add nested include in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createExclude(); | |||
| fail("Can add nested exclude in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createIncludesFile(); | |||
| fail("Can add nested includesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createExcludesFile(); | |||
| fail("Can add nested excludesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createPatternSet(); | |||
| fail("Can add nested patternset in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testCircularReferenceCheck() { | |||
| AbstractFileSet f = getInstance(); | |||
| project.addReference("dummy", f); | |||
| f.setRefid(new Reference(getProject(), "dummy")); | |||
| try { | |||
| f.getDir(project); | |||
| fail("Can make " + f.getDataTypeName() | |||
| + " a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f.getDirectoryScanner(project); | |||
| fail("Can make " + f.getDataTypeName() | |||
| + " a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||
| AbstractFileSet f1 = getInstance(); | |||
| project.addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(getProject(), "dummy2")); | |||
| AbstractFileSet f2 = getInstance(); | |||
| project.addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(getProject(), "dummy3")); | |||
| AbstractFileSet f3 = getInstance(); | |||
| project.addReference("dummy3", f3); | |||
| f3.setRefid(new Reference(getProject(), "dummy1")); | |||
| try { | |||
| f1.getDir(project); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f1.getDirectoryScanner(project); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 | |||
| // (which has the Project's basedir as root). | |||
| f1 = getInstance(); | |||
| project.addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(getProject(), "dummy2")); | |||
| f2 = getInstance(); | |||
| project.addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(getProject(), "dummy3")); | |||
| f3 = getInstance(); | |||
| project.addReference("dummy3", f3); | |||
| f3.setDir(project.resolveFile(".")); | |||
| File dir = f1.getDir(project); | |||
| assertEquals("Dir is basedir", dir, project.getBaseDir()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.apache.tools.ant.Project; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Base class for FileSetTest and DirSetTest. | |||
| * | |||
| * <p>This doesn't actually test much, mainly reference handling. | |||
| * | |||
| */ | |||
| public abstract class AbstractFileSetTest { | |||
| private Project project; | |||
| @Before | |||
| public void setUp() { | |||
| project = new Project(); | |||
| project.setBasedir("."); | |||
| } | |||
| protected abstract AbstractFileSet getInstance(); | |||
| protected final Project getProject() { | |||
| return project; | |||
| } | |||
| @Test | |||
| public final void testEmptyElementIfIsReference() { | |||
| AbstractFileSet f = getInstance(); | |||
| f.setIncludes("**/*.java"); | |||
| try { | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| fail("Can add reference to " | |||
| + f.getDataTypeName() | |||
| + " with elements from setIncludes"); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| f = getInstance(); | |||
| f.createPatternSet(); | |||
| try { | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| fail("Can add reference to " | |||
| + f.getDataTypeName() | |||
| + " with nested patternset element."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when " | |||
| + "using refid", be.getMessage()); | |||
| } | |||
| f = getInstance(); | |||
| f.createInclude(); | |||
| try { | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| fail("Can add reference to " | |||
| + f.getDataTypeName() | |||
| + " with nested include element."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| f = getInstance(); | |||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||
| try { | |||
| f.setIncludes("**/*.java"); | |||
| fail("Can set includes in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setIncludesfile(new File("/a")); | |||
| fail("Can set includesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setExcludes("**/*.java"); | |||
| fail("Can set excludes in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setExcludesfile(new File("/a")); | |||
| fail("Can set excludesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.setDir(project.resolveFile(".")); | |||
| fail("Can set dir in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute " | |||
| + "when using refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createInclude(); | |||
| fail("Can add nested include in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createExclude(); | |||
| fail("Can add nested exclude in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createIncludesFile(); | |||
| fail("Can add nested includesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createExcludesFile(); | |||
| fail("Can add nested excludesfile in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| try { | |||
| f.createPatternSet(); | |||
| fail("Can add nested patternset in " | |||
| + f.getDataTypeName() | |||
| + " that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify nested elements when using " | |||
| + "refid", be.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testCircularReferenceCheck() { | |||
| AbstractFileSet f = getInstance(); | |||
| project.addReference("dummy", f); | |||
| f.setRefid(new Reference(getProject(), "dummy")); | |||
| try { | |||
| f.getDir(project); | |||
| fail("Can make " + f.getDataTypeName() | |||
| + " a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f.getDirectoryScanner(project); | |||
| fail("Can make " + f.getDataTypeName() | |||
| + " a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||
| AbstractFileSet f1 = getInstance(); | |||
| project.addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(getProject(), "dummy2")); | |||
| AbstractFileSet f2 = getInstance(); | |||
| project.addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(getProject(), "dummy3")); | |||
| AbstractFileSet f3 = getInstance(); | |||
| project.addReference("dummy3", f3); | |||
| f3.setRefid(new Reference(getProject(), "dummy1")); | |||
| try { | |||
| f1.getDir(project); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f1.getDirectoryScanner(project); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 | |||
| // (which has the Project's basedir as root). | |||
| f1 = getInstance(); | |||
| project.addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(getProject(), "dummy2")); | |||
| f2 = getInstance(); | |||
| project.addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(getProject(), "dummy3")); | |||
| f3 = getInstance(); | |||
| project.addReference("dummy3", f3); | |||
| f3.setDir(project.resolveFile(".")); | |||
| File dir = f1.getDir(project); | |||
| assertEquals("Dir is basedir", dir, project.getBaseDir()); | |||
| } | |||
| } | |||
| @@ -1,223 +1,223 @@ | |||
| /* | |||
| * 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.BuildException; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.Task; | |||
| import org.apache.tools.ant.taskdefs.condition.Condition; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| public class AddTypeTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/types/addtype.xml"); | |||
| } | |||
| @Test | |||
| public void testAddPath() { | |||
| buildRule.executeTarget("addpath"); | |||
| } | |||
| @Test | |||
| public void testAddCondition() { | |||
| buildRule.executeTarget("addcondition"); | |||
| } | |||
| @Test | |||
| public void testAddFilter() { | |||
| buildRule.executeTarget("addfilter"); | |||
| } | |||
| @Test | |||
| public void testAddSelector() { | |||
| buildRule.executeTarget("addselector"); | |||
| } | |||
| @Test | |||
| public void testNestedA() { | |||
| buildRule.executeTarget("nested.a"); | |||
| AntAssert.assertContains("add A called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNestedB() { | |||
| buildRule.executeTarget("nested.b"); | |||
| AntAssert.assertContains( "add B called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNestedC() { | |||
| buildRule.executeTarget("nested.c"); | |||
| AntAssert.assertContains( "add C called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNestedAB() { | |||
| try { | |||
| buildRule.executeTarget("nested.ab"); | |||
| fail("Build exception expected: Should have got ambiguous"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains("ambiguous", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testConditionType() { | |||
| buildRule.executeTarget("condition.type"); | |||
| AntAssert.assertContains( "beforeafter", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testConditionTask() { | |||
| buildRule.executeTarget("condition.task"); | |||
| AntAssert.assertContains( "My Condition execution", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testConditionConditionType() { | |||
| buildRule.executeTarget("condition.condition.type"); | |||
| AntAssert.assertContains( "My Condition eval", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testConditionConditionTask() { | |||
| try { | |||
| buildRule.executeTarget("condition.condition.task"); | |||
| fail("Build exception expected: Task masking condition"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains("doesn't support the nested", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testAddConfigured() { | |||
| buildRule.executeTarget("myaddconfigured"); | |||
| AntAssert.assertContains("value is Value Setexecute: value is Value Set", | |||
| buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testAddConfiguredValue() { | |||
| buildRule.executeTarget("myaddconfiguredvalue"); | |||
| AntAssert.assertContains("value is Value Setexecute: value is Value Set", | |||
| buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNamespace() { | |||
| buildRule.executeTarget("namespacetest"); | |||
| } | |||
| // The following will be used as types and tasks | |||
| public static interface A {} | |||
| public static interface B {} | |||
| public static interface C extends A {} | |||
| public static interface AB extends A, B {} | |||
| public static class AImpl implements A{} | |||
| public static class BImpl implements B{} | |||
| public static class CImpl implements C{} | |||
| public static class ABImpl implements AB{} | |||
| public static class NestedContainer | |||
| extends Task | |||
| { | |||
| public void add(A el) { | |||
| log("add A called"); | |||
| } | |||
| public void add(B el) { | |||
| log("add B called"); | |||
| } | |||
| public void add(C el) { | |||
| log("add C called"); | |||
| } | |||
| } | |||
| public static class MyCondition | |||
| implements Condition | |||
| { | |||
| Project project; | |||
| public void setProject(Project project) { | |||
| this.project = project; | |||
| } | |||
| public boolean eval() { | |||
| project.log("My Condition eval"); | |||
| return true; | |||
| } | |||
| public void execute() { | |||
| project.log("My Condition execution"); | |||
| } | |||
| } | |||
| public static class MyValue | |||
| { | |||
| private String text = "NOT SET YET"; | |||
| public void addText(String text) { | |||
| this.text = text; | |||
| } | |||
| public String toString() { | |||
| return text; | |||
| } | |||
| } | |||
| public static class MyAddConfigured | |||
| extends Task | |||
| { | |||
| MyValue value; | |||
| public void addConfigured(MyValue value) { | |||
| log("value is " + value); | |||
| this.value = value; | |||
| } | |||
| public void add(MyValue value) { | |||
| throw new BuildException("Should not be called"); | |||
| } | |||
| public void execute() { | |||
| log("execute: value is " + value); | |||
| } | |||
| } | |||
| public static class MyAddConfiguredValue | |||
| extends Task | |||
| { | |||
| MyValue value; | |||
| public void addConfiguredValue(MyValue value) { | |||
| log("value is " + value); | |||
| this.value = value; | |||
| } | |||
| public void addValue(MyValue value) { | |||
| throw new BuildException("Should not be called"); | |||
| } | |||
| public void execute() { | |||
| log("execute: value is " + value); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.BuildException; | |||
| import org.apache.tools.ant.Project; | |||
| import org.apache.tools.ant.Task; | |||
| import org.apache.tools.ant.taskdefs.condition.Condition; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.fail; | |||
| public class AddTypeTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/types/addtype.xml"); | |||
| } | |||
| @Test | |||
| public void testAddPath() { | |||
| buildRule.executeTarget("addpath"); | |||
| } | |||
| @Test | |||
| public void testAddCondition() { | |||
| buildRule.executeTarget("addcondition"); | |||
| } | |||
| @Test | |||
| public void testAddFilter() { | |||
| buildRule.executeTarget("addfilter"); | |||
| } | |||
| @Test | |||
| public void testAddSelector() { | |||
| buildRule.executeTarget("addselector"); | |||
| } | |||
| @Test | |||
| public void testNestedA() { | |||
| buildRule.executeTarget("nested.a"); | |||
| AntAssert.assertContains("add A called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNestedB() { | |||
| buildRule.executeTarget("nested.b"); | |||
| AntAssert.assertContains( "add B called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNestedC() { | |||
| buildRule.executeTarget("nested.c"); | |||
| AntAssert.assertContains( "add C called", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNestedAB() { | |||
| try { | |||
| buildRule.executeTarget("nested.ab"); | |||
| fail("Build exception expected: Should have got ambiguous"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains("ambiguous", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testConditionType() { | |||
| buildRule.executeTarget("condition.type"); | |||
| AntAssert.assertContains( "beforeafter", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testConditionTask() { | |||
| buildRule.executeTarget("condition.task"); | |||
| AntAssert.assertContains( "My Condition execution", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testConditionConditionType() { | |||
| buildRule.executeTarget("condition.condition.type"); | |||
| AntAssert.assertContains( "My Condition eval", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testConditionConditionTask() { | |||
| try { | |||
| buildRule.executeTarget("condition.condition.task"); | |||
| fail("Build exception expected: Task masking condition"); | |||
| } catch (BuildException ex) { | |||
| AntAssert.assertContains("doesn't support the nested", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testAddConfigured() { | |||
| buildRule.executeTarget("myaddconfigured"); | |||
| AntAssert.assertContains("value is Value Setexecute: value is Value Set", | |||
| buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testAddConfiguredValue() { | |||
| buildRule.executeTarget("myaddconfiguredvalue"); | |||
| AntAssert.assertContains("value is Value Setexecute: value is Value Set", | |||
| buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNamespace() { | |||
| buildRule.executeTarget("namespacetest"); | |||
| } | |||
| // The following will be used as types and tasks | |||
| public static interface A {} | |||
| public static interface B {} | |||
| public static interface C extends A {} | |||
| public static interface AB extends A, B {} | |||
| public static class AImpl implements A{} | |||
| public static class BImpl implements B{} | |||
| public static class CImpl implements C{} | |||
| public static class ABImpl implements AB{} | |||
| public static class NestedContainer | |||
| extends Task | |||
| { | |||
| public void add(A el) { | |||
| log("add A called"); | |||
| } | |||
| public void add(B el) { | |||
| log("add B called"); | |||
| } | |||
| public void add(C el) { | |||
| log("add C called"); | |||
| } | |||
| } | |||
| public static class MyCondition | |||
| implements Condition | |||
| { | |||
| Project project; | |||
| public void setProject(Project project) { | |||
| this.project = project; | |||
| } | |||
| public boolean eval() { | |||
| project.log("My Condition eval"); | |||
| return true; | |||
| } | |||
| public void execute() { | |||
| project.log("My Condition execution"); | |||
| } | |||
| } | |||
| public static class MyValue | |||
| { | |||
| private String text = "NOT SET YET"; | |||
| public void addText(String text) { | |||
| this.text = text; | |||
| } | |||
| public String toString() { | |||
| return text; | |||
| } | |||
| } | |||
| public static class MyAddConfigured | |||
| extends Task | |||
| { | |||
| MyValue value; | |||
| public void addConfigured(MyValue value) { | |||
| log("value is " + value); | |||
| this.value = value; | |||
| } | |||
| public void add(MyValue value) { | |||
| throw new BuildException("Should not be called"); | |||
| } | |||
| public void execute() { | |||
| log("execute: value is " + value); | |||
| } | |||
| } | |||
| public static class MyAddConfiguredValue | |||
| extends Task | |||
| { | |||
| MyValue value; | |||
| public void addConfiguredValue(MyValue value) { | |||
| log("value is " + value); | |||
| this.value = value; | |||
| } | |||
| public void addValue(MyValue value) { | |||
| throw new BuildException("Should not be called"); | |||
| } | |||
| public void execute() { | |||
| log("execute: value is " + value); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,125 +1,123 @@ | |||
| /* | |||
| * 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.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Assume; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * test assertion handling | |||
| */ | |||
| public class AssertionsTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/types/assertions.xml"); | |||
| } | |||
| /** | |||
| * runs a test and expects an assertion thrown in forked code | |||
| * @param target | |||
| */ | |||
| private void expectAssertion(String target) { | |||
| try { | |||
| buildRule.executeTarget(target); | |||
| fail("BuildException should have been thrown by assertion fail in task"); | |||
| } catch (BuildException ex) { | |||
| assertContains("assertion not thrown in "+target, "Java returned: 1", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testClassname() { | |||
| expectAssertion("test-classname"); | |||
| } | |||
| @Test | |||
| public void testPackage() { | |||
| expectAssertion("test-package"); | |||
| } | |||
| @Test | |||
| public void testEmptyAssertions() { | |||
| buildRule.executeTarget("test-empty-assertions"); | |||
| } | |||
| @Test | |||
| public void testDisable() { | |||
| buildRule.executeTarget("test-disable"); | |||
| } | |||
| @Test | |||
| public void testOverride() { | |||
| expectAssertion("test-override"); | |||
| } | |||
| @Test | |||
| public void testOverride2() { | |||
| buildRule.executeTarget("test-override2"); | |||
| } | |||
| @Test | |||
| public void testReferences() { | |||
| expectAssertion("test-references"); | |||
| } | |||
| @Test | |||
| public void testMultipleAssertions() { | |||
| try { | |||
| buildRule.executeTarget("test-multiple-assertions"); | |||
| fail("BuildException should have been thrown by assertion fail in task"); | |||
| } catch (BuildException ex) { | |||
| assertContains("multiple assertions rejected", "Only one assertion declaration is allowed", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testReferenceAbuse() { | |||
| try { | |||
| buildRule.executeTarget("test-reference-abuse"); | |||
| fail("BuildException should have been thrown by reference abuse"); | |||
| } catch (BuildException ex) { | |||
| assertContains("reference abuse rejected", "You must not specify", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNofork() { | |||
| Assume.assumeFalse("ran Ant tests with -ea and this would fail spuriously", AssertionsTest.class.desiredAssertionStatus()); | |||
| buildRule.executeTarget("test-nofork"); | |||
| assertContains("Assertion statements are currently ignored in non-forked mode", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testJUnit() { | |||
| buildRule.executeTarget("test-junit"); | |||
| } | |||
| } | |||
| /* | |||
| * 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.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Assume; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * test assertion handling | |||
| */ | |||
| public class AssertionsTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/types/assertions.xml"); | |||
| } | |||
| /** | |||
| * runs a test and expects an assertion thrown in forked code | |||
| * @param target | |||
| */ | |||
| private void expectAssertion(String target) { | |||
| try { | |||
| buildRule.executeTarget(target); | |||
| fail("BuildException should have been thrown by assertion fail in task"); | |||
| } catch (BuildException ex) { | |||
| assertContains("assertion not thrown in "+target, "Java returned: 1", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testClassname() { | |||
| expectAssertion("test-classname"); | |||
| } | |||
| @Test | |||
| public void testPackage() { | |||
| expectAssertion("test-package"); | |||
| } | |||
| @Test | |||
| public void testEmptyAssertions() { | |||
| buildRule.executeTarget("test-empty-assertions"); | |||
| } | |||
| @Test | |||
| public void testDisable() { | |||
| buildRule.executeTarget("test-disable"); | |||
| } | |||
| @Test | |||
| public void testOverride() { | |||
| expectAssertion("test-override"); | |||
| } | |||
| @Test | |||
| public void testOverride2() { | |||
| buildRule.executeTarget("test-override2"); | |||
| } | |||
| @Test | |||
| public void testReferences() { | |||
| expectAssertion("test-references"); | |||
| } | |||
| @Test | |||
| public void testMultipleAssertions() { | |||
| try { | |||
| buildRule.executeTarget("test-multiple-assertions"); | |||
| fail("BuildException should have been thrown by assertion fail in task"); | |||
| } catch (BuildException ex) { | |||
| assertContains("multiple assertions rejected", "Only one assertion declaration is allowed", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testReferenceAbuse() { | |||
| try { | |||
| buildRule.executeTarget("test-reference-abuse"); | |||
| fail("BuildException should have been thrown by reference abuse"); | |||
| } catch (BuildException ex) { | |||
| assertContains("reference abuse rejected", "You must not specify", ex.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testNofork() { | |||
| Assume.assumeFalse("ran Ant tests with -ea and this would fail spuriously", AssertionsTest.class.desiredAssertionStatus()); | |||
| buildRule.executeTarget("test-nofork"); | |||
| assertContains("Assertion statements are currently ignored in non-forked mode", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testJUnit() { | |||
| buildRule.executeTarget("test-junit"); | |||
| } | |||
| } | |||
| @@ -1,191 +1,191 @@ | |||
| /* | |||
| * 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.MagicNames; | |||
| import org.apache.tools.ant.Project; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| import static org.junit.Assert.assertNotNull; | |||
| import static org.junit.Assert.assertNull; | |||
| /** | |||
| * JUnit testcases for org.apache.tools.ant.CommandlineJava | |||
| * | |||
| */ | |||
| public class CommandlineJavaTest { | |||
| private String cloneVm; | |||
| private Project project; | |||
| @Before | |||
| public void setUp() { | |||
| project = new Project(); | |||
| project.setBasedir(System.getProperty("root")); | |||
| project.setProperty("build.sysclasspath", "ignore"); | |||
| cloneVm = System.getProperty("ant.build.clonevm"); | |||
| if (cloneVm != null) { | |||
| System.setProperty("ant.build.clonevm", "false"); | |||
| } | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| if (cloneVm != null) { | |||
| System.setProperty("ant.build.clonevm", cloneVm); | |||
| } | |||
| } | |||
| @Test | |||
| public void testGetCommandline() throws Exception { | |||
| CommandlineJava c = new CommandlineJava(); | |||
| c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest"); | |||
| c.setClassname("junit.textui.TestRunner"); | |||
| c.createVmArgument().setValue("-Djava.compiler=NONE"); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals("no classpath", 4, s.length); | |||
| /* | |||
| * After changing CommandlineJava to search for the java | |||
| * executable, I don't know, how to tests the value returned | |||
| * here without using the same logic as applied in the class | |||
| * itself. | |||
| * | |||
| * assertTrue("no classpath", "java", s[0]); | |||
| */ | |||
| assertEquals("no classpath", "-Djava.compiler=NONE", s[1]); | |||
| assertEquals("no classpath", "junit.textui.TestRunner", s[2]); | |||
| assertEquals("no classpath", | |||
| "org.apache.tools.ant.CommandlineJavaTest", s[3]); | |||
| try { | |||
| c.clone(); | |||
| } catch (NullPointerException ex) { | |||
| fail("cloning should work without classpath specified"); | |||
| } | |||
| c.createClasspath(project).setLocation(project.resolveFile("build.xml")); | |||
| c.createClasspath(project).setLocation(project.resolveFile( | |||
| System.getProperty(MagicNames.ANT_HOME)+"/lib/ant.jar")); | |||
| s = c.getCommandline(); | |||
| assertEquals("with classpath", 6, s.length); | |||
| // assertEquals("with classpath", "java", s[0]); | |||
| assertEquals("with classpath", "-Djava.compiler=NONE", s[1]); | |||
| assertEquals("with classpath", "-classpath", s[2]); | |||
| assertTrue("build.xml contained", | |||
| s[3].indexOf("build.xml"+java.io.File.pathSeparator) >= 0); | |||
| assertTrue("ant.jar contained", s[3].endsWith("ant.jar")); | |||
| assertEquals("with classpath", "junit.textui.TestRunner", s[4]); | |||
| assertEquals("with classpath", | |||
| "org.apache.tools.ant.CommandlineJavaTest", s[5]); | |||
| } | |||
| @Test | |||
| public void testJarOption() throws Exception { | |||
| CommandlineJava c = new CommandlineJava(); | |||
| c.createArgument().setValue("arg1"); | |||
| c.setJar("myfile.jar"); | |||
| c.createVmArgument().setValue("-classic"); | |||
| c.createVmArgument().setValue("-Dx=y"); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals("-classic", s[1]); | |||
| assertEquals("-Dx=y", s[2]); | |||
| assertEquals("-jar", s[3]); | |||
| assertEquals("myfile.jar", s[4]); | |||
| assertEquals("arg1", s[5]); | |||
| } | |||
| @Test | |||
| public void testSysproperties() { | |||
| String currentClasspath = System.getProperty("java.class.path"); | |||
| assertNotNull(currentClasspath); | |||
| assertNull(System.getProperty("key")); | |||
| CommandlineJava c = new CommandlineJava(); | |||
| Environment.Variable v = new Environment.Variable(); | |||
| v.setKey("key"); | |||
| v.setValue("value"); | |||
| c.addSysproperty(v); | |||
| project.setProperty("key2", "value2"); | |||
| PropertySet ps = new PropertySet(); | |||
| ps.setProject(project); | |||
| ps.appendName("key2"); | |||
| c.addSyspropertyset(ps); | |||
| try { | |||
| c.setSystemProperties(); | |||
| String newClasspath = System.getProperty("java.class.path"); | |||
| assertNotNull(newClasspath); | |||
| assertEquals(currentClasspath, newClasspath); | |||
| assertNotNull(System.getProperty("key")); | |||
| assertEquals("value", System.getProperty("key")); | |||
| assertTrue(System.getProperties().containsKey("java.class.path")); | |||
| assertNotNull(System.getProperty("key2")); | |||
| assertEquals("value2", System.getProperty("key2")); | |||
| } finally { | |||
| c.restoreSystemProperties(); | |||
| } | |||
| assertNull(System.getProperty("key")); | |||
| assertNull(System.getProperty("key2")); | |||
| } | |||
| @Test | |||
| public void testAssertions() throws Exception { | |||
| CommandlineJava c = new CommandlineJava(); | |||
| c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest"); | |||
| c.setClassname("junit.textui.TestRunner"); | |||
| c.createVmArgument().setValue("-Djava.compiler=NONE"); | |||
| Assertions a = new Assertions(); | |||
| a.setProject(project); | |||
| Assertions.EnabledAssertion ea = new Assertions.EnabledAssertion(); | |||
| ea.setClass("junit.textui.TestRunner"); | |||
| a.addEnable(ea); | |||
| c.setAssertions(a); | |||
| String[] expected = new String[] { | |||
| null, | |||
| "-Djava.compiler=NONE", | |||
| "-ea:junit.textui.TestRunner", | |||
| "junit.textui.TestRunner", | |||
| "org.apache.tools.ant.CommandlineJavaTest", | |||
| }; | |||
| // only the second iteration would pass because of PR 27218 | |||
| for (int i = 0; i < 3; i++) { | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(expected.length, s.length); | |||
| for (int j = 1; j < expected.length; j++) { | |||
| assertEquals(expected[j], s[j]); | |||
| } | |||
| } | |||
| CommandlineJava c2 = (CommandlineJava) c.clone(); | |||
| String[] s = c2.getCommandline(); | |||
| assertEquals(expected.length, s.length); | |||
| for (int j = 1; j < expected.length; j++) { | |||
| assertEquals(expected[j], s[j]); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.MagicNames; | |||
| import org.apache.tools.ant.Project; | |||
| import org.junit.After; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| import static org.junit.Assert.assertNotNull; | |||
| import static org.junit.Assert.assertNull; | |||
| /** | |||
| * JUnit testcases for org.apache.tools.ant.CommandlineJava | |||
| * | |||
| */ | |||
| public class CommandlineJavaTest { | |||
| private String cloneVm; | |||
| private Project project; | |||
| @Before | |||
| public void setUp() { | |||
| project = new Project(); | |||
| project.setBasedir(System.getProperty("root")); | |||
| project.setProperty("build.sysclasspath", "ignore"); | |||
| cloneVm = System.getProperty("ant.build.clonevm"); | |||
| if (cloneVm != null) { | |||
| System.setProperty("ant.build.clonevm", "false"); | |||
| } | |||
| } | |||
| @After | |||
| public void tearDown() { | |||
| if (cloneVm != null) { | |||
| System.setProperty("ant.build.clonevm", cloneVm); | |||
| } | |||
| } | |||
| @Test | |||
| public void testGetCommandline() throws Exception { | |||
| CommandlineJava c = new CommandlineJava(); | |||
| c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest"); | |||
| c.setClassname("junit.textui.TestRunner"); | |||
| c.createVmArgument().setValue("-Djava.compiler=NONE"); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals("no classpath", 4, s.length); | |||
| /* | |||
| * After changing CommandlineJava to search for the java | |||
| * executable, I don't know, how to tests the value returned | |||
| * here without using the same logic as applied in the class | |||
| * itself. | |||
| * | |||
| * assertTrue("no classpath", "java", s[0]); | |||
| */ | |||
| assertEquals("no classpath", "-Djava.compiler=NONE", s[1]); | |||
| assertEquals("no classpath", "junit.textui.TestRunner", s[2]); | |||
| assertEquals("no classpath", | |||
| "org.apache.tools.ant.CommandlineJavaTest", s[3]); | |||
| try { | |||
| c.clone(); | |||
| } catch (NullPointerException ex) { | |||
| fail("cloning should work without classpath specified"); | |||
| } | |||
| c.createClasspath(project).setLocation(project.resolveFile("build.xml")); | |||
| c.createClasspath(project).setLocation(project.resolveFile( | |||
| System.getProperty(MagicNames.ANT_HOME)+"/lib/ant.jar")); | |||
| s = c.getCommandline(); | |||
| assertEquals("with classpath", 6, s.length); | |||
| // assertEquals("with classpath", "java", s[0]); | |||
| assertEquals("with classpath", "-Djava.compiler=NONE", s[1]); | |||
| assertEquals("with classpath", "-classpath", s[2]); | |||
| assertTrue("build.xml contained", | |||
| s[3].indexOf("build.xml"+java.io.File.pathSeparator) >= 0); | |||
| assertTrue("ant.jar contained", s[3].endsWith("ant.jar")); | |||
| assertEquals("with classpath", "junit.textui.TestRunner", s[4]); | |||
| assertEquals("with classpath", | |||
| "org.apache.tools.ant.CommandlineJavaTest", s[5]); | |||
| } | |||
| @Test | |||
| public void testJarOption() throws Exception { | |||
| CommandlineJava c = new CommandlineJava(); | |||
| c.createArgument().setValue("arg1"); | |||
| c.setJar("myfile.jar"); | |||
| c.createVmArgument().setValue("-classic"); | |||
| c.createVmArgument().setValue("-Dx=y"); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals("-classic", s[1]); | |||
| assertEquals("-Dx=y", s[2]); | |||
| assertEquals("-jar", s[3]); | |||
| assertEquals("myfile.jar", s[4]); | |||
| assertEquals("arg1", s[5]); | |||
| } | |||
| @Test | |||
| public void testSysproperties() { | |||
| String currentClasspath = System.getProperty("java.class.path"); | |||
| assertNotNull(currentClasspath); | |||
| assertNull(System.getProperty("key")); | |||
| CommandlineJava c = new CommandlineJava(); | |||
| Environment.Variable v = new Environment.Variable(); | |||
| v.setKey("key"); | |||
| v.setValue("value"); | |||
| c.addSysproperty(v); | |||
| project.setProperty("key2", "value2"); | |||
| PropertySet ps = new PropertySet(); | |||
| ps.setProject(project); | |||
| ps.appendName("key2"); | |||
| c.addSyspropertyset(ps); | |||
| try { | |||
| c.setSystemProperties(); | |||
| String newClasspath = System.getProperty("java.class.path"); | |||
| assertNotNull(newClasspath); | |||
| assertEquals(currentClasspath, newClasspath); | |||
| assertNotNull(System.getProperty("key")); | |||
| assertEquals("value", System.getProperty("key")); | |||
| assertTrue(System.getProperties().containsKey("java.class.path")); | |||
| assertNotNull(System.getProperty("key2")); | |||
| assertEquals("value2", System.getProperty("key2")); | |||
| } finally { | |||
| c.restoreSystemProperties(); | |||
| } | |||
| assertNull(System.getProperty("key")); | |||
| assertNull(System.getProperty("key2")); | |||
| } | |||
| @Test | |||
| public void testAssertions() throws Exception { | |||
| CommandlineJava c = new CommandlineJava(); | |||
| c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest"); | |||
| c.setClassname("junit.textui.TestRunner"); | |||
| c.createVmArgument().setValue("-Djava.compiler=NONE"); | |||
| Assertions a = new Assertions(); | |||
| a.setProject(project); | |||
| Assertions.EnabledAssertion ea = new Assertions.EnabledAssertion(); | |||
| ea.setClass("junit.textui.TestRunner"); | |||
| a.addEnable(ea); | |||
| c.setAssertions(a); | |||
| String[] expected = new String[] { | |||
| null, | |||
| "-Djava.compiler=NONE", | |||
| "-ea:junit.textui.TestRunner", | |||
| "junit.textui.TestRunner", | |||
| "org.apache.tools.ant.CommandlineJavaTest", | |||
| }; | |||
| // only the second iteration would pass because of PR 27218 | |||
| for (int i = 0; i < 3; i++) { | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(expected.length, s.length); | |||
| for (int j = 1; j < expected.length; j++) { | |||
| assertEquals(expected[j], s[j]); | |||
| } | |||
| } | |||
| CommandlineJava c2 = (CommandlineJava) c.clone(); | |||
| String[] s = c2.getCommandline(); | |||
| assertEquals(expected.length, s.length); | |||
| for (int j = 1; j < expected.length; j++) { | |||
| assertEquals(expected[j], s[j]); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,180 +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.types; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| import static org.junit.Assert.assertNotNull; | |||
| /** | |||
| * JUnit 3 testcases for org.apache.tools.ant.CommandLine | |||
| * | |||
| */ | |||
| public class CommandlineTest { | |||
| @Test | |||
| public void testTokenizer() { | |||
| String[] s = Commandline.translateCommandline("1 2 3"); | |||
| assertEquals("Simple case", 3, s.length); | |||
| for (int i=0; i<3; i++) { | |||
| assertEquals(""+(i+1), s[i]); | |||
| } | |||
| s = Commandline.translateCommandline(""); | |||
| assertEquals("empty string", 0, s.length); | |||
| s = Commandline.translateCommandline(null); | |||
| assertEquals("null", 0, s.length); | |||
| s = Commandline.translateCommandline("1 \'2\' 3"); | |||
| assertEquals("Simple case with single quotes", 3, s.length); | |||
| assertEquals("Single quotes have been stripped", "2", s[1]); | |||
| s = Commandline.translateCommandline("1 \"2\" 3"); | |||
| assertEquals("Simple case with double quotes", 3, s.length); | |||
| assertEquals("Double quotes have been stripped", "2", s[1]); | |||
| s = Commandline.translateCommandline("1 \"2 3\" 4"); | |||
| assertEquals("Case with double quotes and whitespace", 3, s.length); | |||
| assertEquals("Double quotes stripped, space included", "2 3", s[1]); | |||
| s = Commandline.translateCommandline("1 \"2\'3\" 4"); | |||
| assertEquals("Case with double quotes around single quote", 3, s.length); | |||
| assertEquals("Double quotes stripped, single quote included", "2\'3", | |||
| s[1]); | |||
| s = Commandline.translateCommandline("1 \'2 3\' 4"); | |||
| assertEquals("Case with single quotes and whitespace", 3, s.length); | |||
| assertEquals("Single quotes stripped, space included", "2 3", s[1]); | |||
| s = Commandline.translateCommandline("1 \'2\"3\' 4"); | |||
| assertEquals("Case with single quotes around double quote", 3, s.length); | |||
| assertEquals("Single quotes stripped, double quote included", "2\"3", | |||
| s[1]); | |||
| // \ doesn't have a special meaning anymore - this is different from | |||
| // what the Unix sh does but causes a lot of problems on DOS | |||
| // based platforms otherwise | |||
| s = Commandline.translateCommandline("1 2\\ 3 4"); | |||
| assertEquals("case with quoted whitespace", 4, s.length); | |||
| assertEquals("backslash included", "2\\", s[1]); | |||
| // "" should become a single empty argument, same for '' | |||
| // PR 5906 | |||
| s = Commandline.translateCommandline("\"\" a"); | |||
| assertEquals("Doublequoted null arg prepend", 2, s.length); | |||
| assertEquals("Doublequoted null arg prepend", "", s[0]); | |||
| assertEquals("Doublequoted null arg prepend", "a", s[1]); | |||
| s = Commandline.translateCommandline("a \"\""); | |||
| assertEquals("Doublequoted null arg append", 2, s.length); | |||
| assertEquals("Doublequoted null arg append", "a", s[0]); | |||
| assertEquals("Doublequoted null arg append", "", s[1]); | |||
| s = Commandline.translateCommandline("\"\""); | |||
| assertEquals("Doublequoted null arg", 1, s.length); | |||
| assertEquals("Doublequoted null arg", "", s[0]); | |||
| s = Commandline.translateCommandline("\'\' a"); | |||
| assertEquals("Singlequoted null arg prepend", 2, s.length); | |||
| assertEquals("Singlequoted null arg prepend", "", s[0]); | |||
| assertEquals("Singlequoted null arg prepend", "a", s[1]); | |||
| s = Commandline.translateCommandline("a \'\'"); | |||
| assertEquals("Singlequoted null arg append", 2, s.length); | |||
| assertEquals("Singlequoted null arg append", "a", s[0]); | |||
| assertEquals("Singlequoted null arg append", "", s[1]); | |||
| s = Commandline.translateCommandline("\'\'"); | |||
| assertEquals("Singlequoted null arg", 1, s.length); | |||
| assertEquals("Singlequoted null arg", "", s[0]); | |||
| // now to the expected failures | |||
| try { | |||
| Commandline.translateCommandline("a \'b c"); | |||
| fail("unbalanced single quotes undetected"); | |||
| } catch (BuildException be) { | |||
| assertEquals("unbalanced quotes in a \'b c", be.getMessage()); | |||
| } | |||
| try { | |||
| Commandline.translateCommandline("a \"b c"); | |||
| fail("unbalanced double quotes undetected"); | |||
| } catch (BuildException be) { | |||
| assertEquals("unbalanced quotes in a \"b c", be.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testToString() { | |||
| assertEquals("", Commandline.toString(new String[0])); | |||
| assertEquals("", Commandline.toString(null)); | |||
| assertEquals("1 2 3", Commandline.toString(new String[] {"1", "2", "3"})); | |||
| assertEquals("1 \"2 3\"", Commandline.toString(new String[] {"1", "2 3"})); | |||
| assertEquals("1 \"2\'3\"", Commandline.toString(new String[] {"1", "2\'3"})); | |||
| assertEquals("1 \'2\"3\'", Commandline.toString(new String[] {"1", "2\"3"})); | |||
| } | |||
| @Test | |||
| public void testAwkCommand() { | |||
| Commandline c = new Commandline(); | |||
| c.setExecutable("awk"); | |||
| c.createArgument().setValue("'NR == 2 { print $NF }'"); | |||
| String[] s = c.getCommandline(); | |||
| assertNotNull(s); | |||
| assertEquals(2, s.length); | |||
| assertEquals("awk", s[0]); | |||
| assertEquals("'NR == 2 { print $NF }'", s[1]); | |||
| } | |||
| @Test | |||
| public void testPrefix() { | |||
| Commandline c = new Commandline(); | |||
| Commandline.Argument a = c.createArgument(); | |||
| a.setValue("foo"); | |||
| a.setPrefix("-f="); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(1, s.length); | |||
| assertEquals("-f=foo", s[0]); | |||
| } | |||
| @Test | |||
| public void testSuffix() { | |||
| Commandline c = new Commandline(); | |||
| Commandline.Argument a = c.createArgument(); | |||
| a.setValue("foo"); | |||
| a.setSuffix(",1"); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(1, s.length); | |||
| assertEquals("foo,1", s[0]); | |||
| } | |||
| @Test | |||
| public void testPrefixSuffixLine() { | |||
| Commandline c = new Commandline(); | |||
| Commandline.Argument a = c.createArgument(); | |||
| a.setLine("one two"); | |||
| a.setPrefix("number "); | |||
| a.setSuffix("."); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(2, s.length); | |||
| assertEquals("number one.", s[0]); | |||
| assertEquals("number two.", s[1]); | |||
| } | |||
| } | |||
| /* | |||
| * 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.BuildException; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| import static org.junit.Assert.assertNotNull; | |||
| /** | |||
| * JUnit 3 testcases for org.apache.tools.ant.CommandLine | |||
| * | |||
| */ | |||
| public class CommandlineTest { | |||
| @Test | |||
| public void testTokenizer() { | |||
| String[] s = Commandline.translateCommandline("1 2 3"); | |||
| assertEquals("Simple case", 3, s.length); | |||
| for (int i=0; i<3; i++) { | |||
| assertEquals(""+(i+1), s[i]); | |||
| } | |||
| s = Commandline.translateCommandline(""); | |||
| assertEquals("empty string", 0, s.length); | |||
| s = Commandline.translateCommandline(null); | |||
| assertEquals("null", 0, s.length); | |||
| s = Commandline.translateCommandline("1 \'2\' 3"); | |||
| assertEquals("Simple case with single quotes", 3, s.length); | |||
| assertEquals("Single quotes have been stripped", "2", s[1]); | |||
| s = Commandline.translateCommandline("1 \"2\" 3"); | |||
| assertEquals("Simple case with double quotes", 3, s.length); | |||
| assertEquals("Double quotes have been stripped", "2", s[1]); | |||
| s = Commandline.translateCommandline("1 \"2 3\" 4"); | |||
| assertEquals("Case with double quotes and whitespace", 3, s.length); | |||
| assertEquals("Double quotes stripped, space included", "2 3", s[1]); | |||
| s = Commandline.translateCommandline("1 \"2\'3\" 4"); | |||
| assertEquals("Case with double quotes around single quote", 3, s.length); | |||
| assertEquals("Double quotes stripped, single quote included", "2\'3", | |||
| s[1]); | |||
| s = Commandline.translateCommandline("1 \'2 3\' 4"); | |||
| assertEquals("Case with single quotes and whitespace", 3, s.length); | |||
| assertEquals("Single quotes stripped, space included", "2 3", s[1]); | |||
| s = Commandline.translateCommandline("1 \'2\"3\' 4"); | |||
| assertEquals("Case with single quotes around double quote", 3, s.length); | |||
| assertEquals("Single quotes stripped, double quote included", "2\"3", | |||
| s[1]); | |||
| // \ doesn't have a special meaning anymore - this is different from | |||
| // what the Unix sh does but causes a lot of problems on DOS | |||
| // based platforms otherwise | |||
| s = Commandline.translateCommandline("1 2\\ 3 4"); | |||
| assertEquals("case with quoted whitespace", 4, s.length); | |||
| assertEquals("backslash included", "2\\", s[1]); | |||
| // "" should become a single empty argument, same for '' | |||
| // PR 5906 | |||
| s = Commandline.translateCommandline("\"\" a"); | |||
| assertEquals("Doublequoted null arg prepend", 2, s.length); | |||
| assertEquals("Doublequoted null arg prepend", "", s[0]); | |||
| assertEquals("Doublequoted null arg prepend", "a", s[1]); | |||
| s = Commandline.translateCommandline("a \"\""); | |||
| assertEquals("Doublequoted null arg append", 2, s.length); | |||
| assertEquals("Doublequoted null arg append", "a", s[0]); | |||
| assertEquals("Doublequoted null arg append", "", s[1]); | |||
| s = Commandline.translateCommandline("\"\""); | |||
| assertEquals("Doublequoted null arg", 1, s.length); | |||
| assertEquals("Doublequoted null arg", "", s[0]); | |||
| s = Commandline.translateCommandline("\'\' a"); | |||
| assertEquals("Singlequoted null arg prepend", 2, s.length); | |||
| assertEquals("Singlequoted null arg prepend", "", s[0]); | |||
| assertEquals("Singlequoted null arg prepend", "a", s[1]); | |||
| s = Commandline.translateCommandline("a \'\'"); | |||
| assertEquals("Singlequoted null arg append", 2, s.length); | |||
| assertEquals("Singlequoted null arg append", "a", s[0]); | |||
| assertEquals("Singlequoted null arg append", "", s[1]); | |||
| s = Commandline.translateCommandline("\'\'"); | |||
| assertEquals("Singlequoted null arg", 1, s.length); | |||
| assertEquals("Singlequoted null arg", "", s[0]); | |||
| // now to the expected failures | |||
| try { | |||
| Commandline.translateCommandline("a \'b c"); | |||
| fail("unbalanced single quotes undetected"); | |||
| } catch (BuildException be) { | |||
| assertEquals("unbalanced quotes in a \'b c", be.getMessage()); | |||
| } | |||
| try { | |||
| Commandline.translateCommandline("a \"b c"); | |||
| fail("unbalanced double quotes undetected"); | |||
| } catch (BuildException be) { | |||
| assertEquals("unbalanced quotes in a \"b c", be.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testToString() { | |||
| assertEquals("", Commandline.toString(new String[0])); | |||
| assertEquals("", Commandline.toString(null)); | |||
| assertEquals("1 2 3", Commandline.toString(new String[] {"1", "2", "3"})); | |||
| assertEquals("1 \"2 3\"", Commandline.toString(new String[] {"1", "2 3"})); | |||
| assertEquals("1 \"2\'3\"", Commandline.toString(new String[] {"1", "2\'3"})); | |||
| assertEquals("1 \'2\"3\'", Commandline.toString(new String[] {"1", "2\"3"})); | |||
| } | |||
| @Test | |||
| public void testAwkCommand() { | |||
| Commandline c = new Commandline(); | |||
| c.setExecutable("awk"); | |||
| c.createArgument().setValue("'NR == 2 { print $NF }'"); | |||
| String[] s = c.getCommandline(); | |||
| assertNotNull(s); | |||
| assertEquals(2, s.length); | |||
| assertEquals("awk", s[0]); | |||
| assertEquals("'NR == 2 { print $NF }'", s[1]); | |||
| } | |||
| @Test | |||
| public void testPrefix() { | |||
| Commandline c = new Commandline(); | |||
| Commandline.Argument a = c.createArgument(); | |||
| a.setValue("foo"); | |||
| a.setPrefix("-f="); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(1, s.length); | |||
| assertEquals("-f=foo", s[0]); | |||
| } | |||
| @Test | |||
| public void testSuffix() { | |||
| Commandline c = new Commandline(); | |||
| Commandline.Argument a = c.createArgument(); | |||
| a.setValue("foo"); | |||
| a.setSuffix(",1"); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(1, s.length); | |||
| assertEquals("foo,1", s[0]); | |||
| } | |||
| @Test | |||
| public void testPrefixSuffixLine() { | |||
| Commandline c = new Commandline(); | |||
| Commandline.Argument a = c.createArgument(); | |||
| a.setLine("one two"); | |||
| a.setPrefix("number "); | |||
| a.setSuffix("."); | |||
| String[] s = c.getCommandline(); | |||
| assertEquals(2, s.length); | |||
| assertEquals("number one.", s[0]); | |||
| assertEquals("number two.", s[1]); | |||
| } | |||
| } | |||
| @@ -1,59 +1,59 @@ | |||
| /* | |||
| * 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; | |||
| /** | |||
| * FilterSet testing | |||
| * | |||
| */ | |||
| public class DescriptionTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| public void test1() { | |||
| buildRule.configureProject("src/etc/testcases/types/description1.xml"); | |||
| assertEquals("Single description failed", "Test Project Description", buildRule.getProject().getDescription()); | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| buildRule.configureProject("src/etc/testcases/types/description2.xml"); | |||
| assertEquals("Multi line description failed", "Multi Line\nProject Description", buildRule.getProject().getDescription()); | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| buildRule.configureProject("src/etc/testcases/types/description3.xml"); | |||
| assertEquals("Multi instance description failed", "Multi Instance Project Description", buildRule.getProject().getDescription()); | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.configureProject("src/etc/testcases/types/description4.xml"); | |||
| assertEquals("Multi instance nested description failed", "Multi Instance Nested Project Description", buildRule.getProject().getDescription()); | |||
| } | |||
| } | |||
| /* | |||
| * 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; | |||
| /** | |||
| * FilterSet testing | |||
| * | |||
| */ | |||
| public class DescriptionTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Test | |||
| public void test1() { | |||
| buildRule.configureProject("src/etc/testcases/types/description1.xml"); | |||
| assertEquals("Single description failed", "Test Project Description", buildRule.getProject().getDescription()); | |||
| } | |||
| @Test | |||
| public void test2() { | |||
| buildRule.configureProject("src/etc/testcases/types/description2.xml"); | |||
| assertEquals("Multi line description failed", "Multi Line\nProject Description", buildRule.getProject().getDescription()); | |||
| } | |||
| @Test | |||
| public void test3() { | |||
| buildRule.configureProject("src/etc/testcases/types/description3.xml"); | |||
| assertEquals("Multi instance description failed", "Multi Instance Project Description", buildRule.getProject().getDescription()); | |||
| } | |||
| @Test | |||
| public void test4() { | |||
| buildRule.configureProject("src/etc/testcases/types/description4.xml"); | |||
| assertEquals("Multi instance nested description failed", "Multi Instance Nested Project Description", buildRule.getProject().getDescription()); | |||
| } | |||
| } | |||
| @@ -1,94 +1,94 @@ | |||
| /* | |||
| * 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.FileOutputStream; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * JUnit 3 testcases for org.apache.tools.ant.types.DirSet. | |||
| * | |||
| */ | |||
| public class DirSetTest extends AbstractFileSetTest { | |||
| protected AbstractFileSet getInstance() { | |||
| return new DirSet(); | |||
| } | |||
| @Test | |||
| public void testFileSetIsNoDirSet() { | |||
| DirSet ds = (DirSet) getInstance(); | |||
| ds.setProject(getProject()); | |||
| FileSet fs = new FileSet(); | |||
| fs.setProject(getProject()); | |||
| getProject().addReference("dummy", fs); | |||
| ds.setRefid(new Reference(getProject(), "dummy")); | |||
| try { | |||
| ds.getDir(getProject()); | |||
| fail("DirSet created from FileSet reference"); | |||
| } catch (BuildException e) { | |||
| assertEquals("dummy doesn\'t denote a DirSet", e.getMessage()); | |||
| } | |||
| ds = (DirSet) getInstance(); | |||
| ds.setProject(getProject()); | |||
| getProject().addReference("dummy2", ds); | |||
| fs.setRefid(new Reference(getProject(), "dummy2")); | |||
| try { | |||
| fs.getDir(getProject()); | |||
| fail("FileSet created from DirSet reference"); | |||
| } catch (BuildException e) { | |||
| assertEquals("dummy2 doesn\'t denote a FileSet", e.getMessage()); | |||
| } | |||
| } | |||
| public void testToString() throws Exception { | |||
| File tmp = File.createTempFile("DirSetTest", ""); | |||
| try { | |||
| tmp.delete(); | |||
| File a = new File(tmp, "a"); | |||
| a.mkdirs(); | |||
| File b = new File(tmp, "b"); | |||
| File bc = new File(b, "c"); | |||
| bc.mkdirs(); | |||
| new FileOutputStream(new File(a, "x")).close(); | |||
| new FileOutputStream(new File(b, "x")).close(); | |||
| new FileOutputStream(new File(bc, "x")).close(); | |||
| DirSet ds = new DirSet(); | |||
| ds.setProject(getProject()); | |||
| ds.setDir(tmp); | |||
| ds.setIncludes("b/"); | |||
| assertEquals("b;b" + File.separator + "c", ds.toString()); | |||
| } finally { | |||
| new File(tmp, "a/x").delete(); | |||
| new File(tmp, "a").delete(); | |||
| new File(tmp, "b/c/x").delete(); | |||
| new File(tmp, "b/c").delete(); | |||
| new File(tmp, "b/x").delete(); | |||
| new File(tmp, "b").delete(); | |||
| tmp.delete(); | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.FileOutputStream; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * JUnit 3 testcases for org.apache.tools.ant.types.DirSet. | |||
| * | |||
| */ | |||
| public class DirSetTest extends AbstractFileSetTest { | |||
| protected AbstractFileSet getInstance() { | |||
| return new DirSet(); | |||
| } | |||
| @Test | |||
| public void testFileSetIsNoDirSet() { | |||
| DirSet ds = (DirSet) getInstance(); | |||
| ds.setProject(getProject()); | |||
| FileSet fs = new FileSet(); | |||
| fs.setProject(getProject()); | |||
| getProject().addReference("dummy", fs); | |||
| ds.setRefid(new Reference(getProject(), "dummy")); | |||
| try { | |||
| ds.getDir(getProject()); | |||
| fail("DirSet created from FileSet reference"); | |||
| } catch (BuildException e) { | |||
| assertEquals("dummy doesn\'t denote a DirSet", e.getMessage()); | |||
| } | |||
| ds = (DirSet) getInstance(); | |||
| ds.setProject(getProject()); | |||
| getProject().addReference("dummy2", ds); | |||
| fs.setRefid(new Reference(getProject(), "dummy2")); | |||
| try { | |||
| fs.getDir(getProject()); | |||
| fail("FileSet created from DirSet reference"); | |||
| } catch (BuildException e) { | |||
| assertEquals("dummy2 doesn\'t denote a FileSet", e.getMessage()); | |||
| } | |||
| } | |||
| public void testToString() throws Exception { | |||
| File tmp = File.createTempFile("DirSetTest", ""); | |||
| try { | |||
| tmp.delete(); | |||
| File a = new File(tmp, "a"); | |||
| a.mkdirs(); | |||
| File b = new File(tmp, "b"); | |||
| File bc = new File(b, "c"); | |||
| bc.mkdirs(); | |||
| new FileOutputStream(new File(a, "x")).close(); | |||
| new FileOutputStream(new File(b, "x")).close(); | |||
| new FileOutputStream(new File(bc, "x")).close(); | |||
| DirSet ds = new DirSet(); | |||
| ds.setProject(getProject()); | |||
| ds.setDir(tmp); | |||
| ds.setIncludes("b/"); | |||
| assertEquals("b;b" + File.separator + "c", ds.toString()); | |||
| } finally { | |||
| new File(tmp, "a/x").delete(); | |||
| new File(tmp, "a").delete(); | |||
| new File(tmp, "b/c/x").delete(); | |||
| new File(tmp, "b/c").delete(); | |||
| new File(tmp, "b/x").delete(); | |||
| new File(tmp, "b").delete(); | |||
| tmp.delete(); | |||
| } | |||
| } | |||
| } | |||
| @@ -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.types; | |||
| 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 testcases for org.apache.tools.ant.EnumeratedAttribute. | |||
| */ | |||
| public class EnumeratedAttributeTest { | |||
| private static String[] expected = {"a", "b", "c"}; | |||
| @Test | |||
| public void testContains() { | |||
| EnumeratedAttribute t1 = new TestNormal(); | |||
| for (int i=0; i<expected.length; i++) { | |||
| assertTrue(expected[i]+" is in TestNormal", | |||
| t1.containsValue(expected[i])); | |||
| assertTrue(expected[i].toUpperCase()+" is in TestNormal", | |||
| !t1.containsValue(expected[i].toUpperCase())); | |||
| } | |||
| assertTrue("TestNormal doesn\'t have \"d\" attribute", | |||
| !t1.containsValue("d")); | |||
| assertTrue("TestNull doesn\'t have \"d\" attribute and doesn\'t die", | |||
| !(new TestNull()).containsValue("d")); | |||
| } | |||
| @Test | |||
| public void testFactory() { | |||
| Factory ea = (Factory)EnumeratedAttribute.getInstance(Factory.class, "one"); | |||
| assertEquals("Factory did not set the right value.", ea.getValue(), "one"); | |||
| try { | |||
| EnumeratedAttribute.getInstance(Factory.class, "illegal"); | |||
| fail("Factory should fail when trying to set an illegal value."); | |||
| } catch (BuildException be) { | |||
| // was expected | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void testExceptions() { | |||
| EnumeratedAttribute t1 = new TestNormal(); | |||
| for (int i=0; i<expected.length; i++) { | |||
| try { | |||
| t1.setValue(expected[i]); | |||
| } catch (BuildException be) { | |||
| fail("unexpected exception for value "+expected[i]); | |||
| } | |||
| } | |||
| try { | |||
| t1.setValue("d"); | |||
| fail("expected exception for value \"d\""); | |||
| } catch (BuildException be) { | |||
| //TODO assert build exception | |||
| } | |||
| try { | |||
| (new TestNull()).setValue("d"); | |||
| fail("expected exception for value \"d\" in TestNull"); | |||
| } catch (BuildException be) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| public static class TestNormal extends EnumeratedAttribute { | |||
| public String[] getValues() { | |||
| return expected; | |||
| } | |||
| } | |||
| public static class TestNull extends EnumeratedAttribute { | |||
| public String[] getValues() { | |||
| return null; | |||
| } | |||
| } | |||
| public static class Factory extends EnumeratedAttribute { | |||
| public String[] getValues() { | |||
| return new String[] { "one", "two", "three" }; | |||
| } | |||
| } | |||
| } | |||
| /* | |||
| * 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.BuildException; | |||
| import org.junit.Test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.assertTrue; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * JUnit testcases for org.apache.tools.ant.EnumeratedAttribute. | |||
| */ | |||
| public class EnumeratedAttributeTest { | |||
| private static String[] expected = {"a", "b", "c"}; | |||
| @Test | |||
| public void testContains() { | |||
| EnumeratedAttribute t1 = new TestNormal(); | |||
| for (int i=0; i<expected.length; i++) { | |||
| assertTrue(expected[i]+" is in TestNormal", | |||
| t1.containsValue(expected[i])); | |||
| assertTrue(expected[i].toUpperCase()+" is in TestNormal", | |||
| !t1.containsValue(expected[i].toUpperCase())); | |||
| } | |||
| assertTrue("TestNormal doesn\'t have \"d\" attribute", | |||
| !t1.containsValue("d")); | |||
| assertTrue("TestNull doesn\'t have \"d\" attribute and doesn\'t die", | |||
| !(new TestNull()).containsValue("d")); | |||
| } | |||
| @Test | |||
| public void testFactory() { | |||
| Factory ea = (Factory)EnumeratedAttribute.getInstance(Factory.class, "one"); | |||
| assertEquals("Factory did not set the right value.", ea.getValue(), "one"); | |||
| try { | |||
| EnumeratedAttribute.getInstance(Factory.class, "illegal"); | |||
| fail("Factory should fail when trying to set an illegal value."); | |||
| } catch (BuildException be) { | |||
| // was expected | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| @Test | |||
| public void testExceptions() { | |||
| EnumeratedAttribute t1 = new TestNormal(); | |||
| for (int i=0; i<expected.length; i++) { | |||
| try { | |||
| t1.setValue(expected[i]); | |||
| } catch (BuildException be) { | |||
| fail("unexpected exception for value "+expected[i]); | |||
| } | |||
| } | |||
| try { | |||
| t1.setValue("d"); | |||
| fail("expected exception for value \"d\""); | |||
| } catch (BuildException be) { | |||
| //TODO assert build exception | |||
| } | |||
| try { | |||
| (new TestNull()).setValue("d"); | |||
| fail("expected exception for value \"d\" in TestNull"); | |||
| } catch (BuildException be) { | |||
| //TODO assert exception message | |||
| } | |||
| } | |||
| public static class TestNormal extends EnumeratedAttribute { | |||
| public String[] getValues() { | |||
| return expected; | |||
| } | |||
| } | |||
| public static class TestNull extends EnumeratedAttribute { | |||
| public String[] getValues() { | |||
| return null; | |||
| } | |||
| } | |||
| public static class Factory extends EnumeratedAttribute { | |||
| public String[] getValues() { | |||
| return new String[] { "one", "two", "three" }; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,163 +1,163 @@ | |||
| /* | |||
| * 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.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Some tests for filelist. | |||
| */ | |||
| public class FileListTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/types/filelist.xml"); | |||
| } | |||
| @Test | |||
| public void testEmptyElementIfIsReference() { | |||
| FileList f = new FileList(); | |||
| f.setDir(buildRule.getProject().resolveFile(".")); | |||
| try { | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||
| fail("Can add reference to FileList with directory attribute set."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| f = new FileList(); | |||
| f.setFiles("foo.xml,c/d/bar.xml"); | |||
| try { | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||
| fail("Can add reference to FileList with file attribute set."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| f = new FileList(); | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||
| try { | |||
| f.setFiles("a/b/foo.java"); | |||
| fail("Can set files in FileList that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f.setDir(buildRule.getProject().resolveFile(".")); | |||
| fail("Can set dir in FileList that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testCircularReferenceCheck() { | |||
| FileList f = new FileList(); | |||
| buildRule.getProject().addReference("dummy", f); | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummy")); | |||
| try { | |||
| f.getDir(buildRule.getProject()); | |||
| fail("Can make FileList a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f.getFiles(buildRule.getProject()); | |||
| fail("Can make FileList a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||
| FileList f1 = new FileList(); | |||
| buildRule.getProject().addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(buildRule.getProject(), "dummy2")); | |||
| FileList f2 = new FileList(); | |||
| buildRule.getProject().addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(buildRule.getProject(), "dummy3")); | |||
| FileList f3 = new FileList(); | |||
| buildRule.getProject().addReference("dummy3", f3); | |||
| f3.setRefid(new Reference(buildRule.getProject(), "dummy1")); | |||
| try { | |||
| f1.getDir(buildRule.getProject()); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f1.getFiles(buildRule.getProject()); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 | |||
| // (which has the Project's basedir as root). | |||
| f1 = new FileList(); | |||
| buildRule.getProject().addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(buildRule.getProject(), "dummy2")); | |||
| f2 = new FileList(); | |||
| buildRule.getProject().addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(buildRule.getProject(), "dummy3")); | |||
| f3 = new FileList(); | |||
| buildRule.getProject().addReference("dummy3", f3); | |||
| f3.setDir(buildRule.getProject().resolveFile(".")); | |||
| File dir = f1.getDir(buildRule.getProject()); | |||
| assertEquals("Dir is basedir", dir, buildRule.getProject().getBaseDir()); | |||
| } | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| assertEquals("/abc/a", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDouble() { | |||
| buildRule.executeTarget("double"); | |||
| assertEquals("/abc/a:/abc/b", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNested() { | |||
| buildRule.executeTarget("nested"); | |||
| assertEquals("/abc/a:/abc/b", buildRule.getLog()); | |||
| } | |||
| } | |||
| /* | |||
| * 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.BuildException; | |||
| import org.apache.tools.ant.BuildFileRule; | |||
| import org.junit.Before; | |||
| import org.junit.Rule; | |||
| import org.junit.Test; | |||
| import java.io.File; | |||
| import static org.junit.Assert.assertEquals; | |||
| import static org.junit.Assert.fail; | |||
| /** | |||
| * Some tests for filelist. | |||
| */ | |||
| public class FileListTest { | |||
| @Rule | |||
| public BuildFileRule buildRule = new BuildFileRule(); | |||
| @Before | |||
| public void setUp() { | |||
| buildRule.configureProject("src/etc/testcases/types/filelist.xml"); | |||
| } | |||
| @Test | |||
| public void testEmptyElementIfIsReference() { | |||
| FileList f = new FileList(); | |||
| f.setDir(buildRule.getProject().resolveFile(".")); | |||
| try { | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||
| fail("Can add reference to FileList with directory attribute set."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| f = new FileList(); | |||
| f.setFiles("foo.xml,c/d/bar.xml"); | |||
| try { | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||
| fail("Can add reference to FileList with file attribute set."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| f = new FileList(); | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||
| try { | |||
| f.setFiles("a/b/foo.java"); | |||
| fail("Can set files in FileList that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f.setDir(buildRule.getProject().resolveFile(".")); | |||
| fail("Can set dir in FileList that is a reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("You must not specify more than one attribute when using refid", | |||
| be.getMessage()); | |||
| } | |||
| } | |||
| @Test | |||
| public void testCircularReferenceCheck() { | |||
| FileList f = new FileList(); | |||
| buildRule.getProject().addReference("dummy", f); | |||
| f.setRefid(new Reference(buildRule.getProject(), "dummy")); | |||
| try { | |||
| f.getDir(buildRule.getProject()); | |||
| fail("Can make FileList a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f.getFiles(buildRule.getProject()); | |||
| fail("Can make FileList a Reference to itself."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||
| FileList f1 = new FileList(); | |||
| buildRule.getProject().addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(buildRule.getProject(), "dummy2")); | |||
| FileList f2 = new FileList(); | |||
| buildRule.getProject().addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(buildRule.getProject(), "dummy3")); | |||
| FileList f3 = new FileList(); | |||
| buildRule.getProject().addReference("dummy3", f3); | |||
| f3.setRefid(new Reference(buildRule.getProject(), "dummy1")); | |||
| try { | |||
| f1.getDir(buildRule.getProject()); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| try { | |||
| f1.getFiles(buildRule.getProject()); | |||
| fail("Can make circular reference."); | |||
| } catch (BuildException be) { | |||
| assertEquals("This data type contains a circular reference.", | |||
| be.getMessage()); | |||
| } | |||
| // dummy1 --> dummy2 --> dummy3 | |||
| // (which has the Project's basedir as root). | |||
| f1 = new FileList(); | |||
| buildRule.getProject().addReference("dummy1", f1); | |||
| f1.setRefid(new Reference(buildRule.getProject(), "dummy2")); | |||
| f2 = new FileList(); | |||
| buildRule.getProject().addReference("dummy2", f2); | |||
| f2.setRefid(new Reference(buildRule.getProject(), "dummy3")); | |||
| f3 = new FileList(); | |||
| buildRule.getProject().addReference("dummy3", f3); | |||
| f3.setDir(buildRule.getProject().resolveFile(".")); | |||
| File dir = f1.getDir(buildRule.getProject()); | |||
| assertEquals("Dir is basedir", dir, buildRule.getProject().getBaseDir()); | |||
| } | |||
| @Test | |||
| public void testSimple() { | |||
| buildRule.executeTarget("simple"); | |||
| assertEquals("/abc/a", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testDouble() { | |||
| buildRule.executeTarget("double"); | |||
| assertEquals("/abc/a:/abc/b", buildRule.getLog()); | |||
| } | |||
| @Test | |||
| public void testNested() { | |||
| buildRule.executeTarget("nested"); | |||
| assertEquals("/abc/a:/abc/b", buildRule.getLog()); | |||
| } | |||
| } | |||
| @@ -1,36 +1,36 @@ | |||
| /* | |||
| * 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; | |||
| /** | |||
| * JUnit 3 testcases for org.apache.tools.ant.types.FileSet. | |||
| * | |||
| * <p>This doesn't actually test much, mainly reference handling. | |||
| * | |||
| */ | |||
| public class FileSetTest extends AbstractFileSetTest { | |||
| protected AbstractFileSet getInstance() { | |||
| return new FileSet(); | |||
| } | |||
| } | |||
| /* | |||
| * 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; | |||
| /** | |||
| * JUnit 3 testcases for org.apache.tools.ant.types.FileSet. | |||
| * | |||
| * <p>This doesn't actually test much, mainly reference handling. | |||
| * | |||
| */ | |||
| public class FileSetTest extends AbstractFileSetTest { | |||
| protected AbstractFileSet getInstance() { | |||
| return new FileSet(); | |||
| } | |||
| } | |||