| @@ -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,266 @@ | |||||
| /* | |||||
| * 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,200 @@ | |||||
| /* | |||||
| * 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,129 +1,129 @@ | |||||
| package org.apache.tools.ant.taskdefs.optional; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import java.io.ByteArrayInputStream; | |||||
| import java.io.File; | |||||
| import java.io.InputStream; | |||||
| import java.security.Permission; | |||||
| import junit.framework.AssertionFailedError; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||||
| import org.apache.tools.ant.taskdefs.XSLTLogger; | |||||
| import org.apache.tools.ant.util.JAXPUtils; | |||||
| import org.junit.After; | |||||
| import org.junit.Assume; | |||||
| import org.junit.Test; | |||||
| /* | |||||
| * 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. | |||||
| * | |||||
| */ | |||||
| /** | |||||
| * TraX XSLTLiaison testcase | |||||
| */ | |||||
| public class TraXLiaisonTest extends AbstractXSLTLiaisonTest | |||||
| implements XSLTLogger { | |||||
| @After | |||||
| public void tearDown() { | |||||
| File f = new File("xalan2-redirect-out.tmp"); | |||||
| if (f.exists()) { | |||||
| f.delete(); | |||||
| } | |||||
| } | |||||
| public XSLTLiaison createLiaison() throws Exception { | |||||
| TraXLiaison l = new TraXLiaison(); | |||||
| l.setLogger(this); | |||||
| return l; | |||||
| } | |||||
| @Test | |||||
| public void testXalan2Redirect() throws Exception { | |||||
| try { | |||||
| getClass().getClassLoader().loadClass("org.apache.xalan.lib.Redirect"); | |||||
| } catch (Exception exc) { | |||||
| Assume.assumeNoException("xalan redirect is not on the classpath", exc); | |||||
| } | |||||
| File xsl = getFile("/taskdefs/optional/xalan-redirect-in.xsl"); | |||||
| liaison.setStylesheet(xsl); | |||||
| File out = new File("xalan2-redirect-out-dummy.tmp"); | |||||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||||
| ClassLoader orig = Thread.currentThread().getContextClassLoader(); | |||||
| try { | |||||
| liaison.addParam("xalan-version", "2"); | |||||
| // Use the JRE's Xerces, not lib/optional/xerces.jar: | |||||
| Thread.currentThread().setContextClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) { | |||||
| public InputStream getResourceAsStream(String name) { | |||||
| if (name.startsWith("META-INF/services/")) { | |||||
| // work around JAXP #6723276 in JDK 6 | |||||
| return new ByteArrayInputStream(new byte[0]); | |||||
| } | |||||
| return super.getResourceAsStream(name); | |||||
| } | |||||
| }); | |||||
| // Tickle #52382: | |||||
| System.setSecurityManager(new SecurityManager() {public void checkPermission(Permission perm) {}}); | |||||
| liaison.transform(in, out); | |||||
| } finally { | |||||
| out.delete(); | |||||
| Thread.currentThread().setContextClassLoader(orig); | |||||
| System.setSecurityManager(null); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testMultipleTransform() 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"); | |||||
| // test for 10 consecutives transform | |||||
| for (int i = 0; i < 50; i++){ | |||||
| File out = new File("xsltliaison" + i + ".tmp"); | |||||
| try { | |||||
| liaison.transform(in, out); | |||||
| } catch (Exception e){ | |||||
| throw new BuildException("failed in transform " + i, e); | |||||
| } finally { | |||||
| out.delete(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testSystemId(){ | |||||
| File file = null; | |||||
| if ( File.separatorChar == '\\' ){ | |||||
| file = new File("d:\\jdk"); | |||||
| } else { | |||||
| file = new File("/user/local/bin"); | |||||
| } | |||||
| String systemid = JAXPUtils.getSystemId(file); | |||||
| assertTrue("SystemIDs should start by file:/", systemid.startsWith("file:/")); | |||||
| assertTrue("SystemIDs should not start with file:////", !systemid.startsWith("file:////")); | |||||
| } | |||||
| public void log(String message) { | |||||
| throw new AssertionFailedError("Liaison sent message: "+message); | |||||
| } | |||||
| } | |||||
| package org.apache.tools.ant.taskdefs.optional; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import java.io.ByteArrayInputStream; | |||||
| import java.io.File; | |||||
| import java.io.InputStream; | |||||
| import java.security.Permission; | |||||
| import junit.framework.AssertionFailedError; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||||
| import org.apache.tools.ant.taskdefs.XSLTLogger; | |||||
| import org.apache.tools.ant.util.JAXPUtils; | |||||
| import org.junit.After; | |||||
| import org.junit.Assume; | |||||
| import org.junit.Test; | |||||
| /* | |||||
| * 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. | |||||
| * | |||||
| */ | |||||
| /** | |||||
| * TraX XSLTLiaison testcase | |||||
| */ | |||||
| public class TraXLiaisonTest extends AbstractXSLTLiaisonTest | |||||
| implements XSLTLogger { | |||||
| @After | |||||
| public void tearDown() { | |||||
| File f = new File("xalan2-redirect-out.tmp"); | |||||
| if (f.exists()) { | |||||
| f.delete(); | |||||
| } | |||||
| } | |||||
| public XSLTLiaison createLiaison() throws Exception { | |||||
| TraXLiaison l = new TraXLiaison(); | |||||
| l.setLogger(this); | |||||
| return l; | |||||
| } | |||||
| @Test | |||||
| public void testXalan2Redirect() throws Exception { | |||||
| try { | |||||
| getClass().getClassLoader().loadClass("org.apache.xalan.lib.Redirect"); | |||||
| } catch (Exception exc) { | |||||
| Assume.assumeNoException("xalan redirect is not on the classpath", exc); | |||||
| } | |||||
| File xsl = getFile("/taskdefs/optional/xalan-redirect-in.xsl"); | |||||
| liaison.setStylesheet(xsl); | |||||
| File out = new File("xalan2-redirect-out-dummy.tmp"); | |||||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||||
| ClassLoader orig = Thread.currentThread().getContextClassLoader(); | |||||
| try { | |||||
| liaison.addParam("xalan-version", "2"); | |||||
| // Use the JRE's Xerces, not lib/optional/xerces.jar: | |||||
| Thread.currentThread().setContextClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) { | |||||
| public InputStream getResourceAsStream(String name) { | |||||
| if (name.startsWith("META-INF/services/")) { | |||||
| // work around JAXP #6723276 in JDK 6 | |||||
| return new ByteArrayInputStream(new byte[0]); | |||||
| } | |||||
| return super.getResourceAsStream(name); | |||||
| } | |||||
| }); | |||||
| // Tickle #52382: | |||||
| System.setSecurityManager(new SecurityManager() {public void checkPermission(Permission perm) {}}); | |||||
| liaison.transform(in, out); | |||||
| } finally { | |||||
| out.delete(); | |||||
| Thread.currentThread().setContextClassLoader(orig); | |||||
| System.setSecurityManager(null); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testMultipleTransform() 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"); | |||||
| // test for 10 consecutives transform | |||||
| for (int i = 0; i < 50; i++){ | |||||
| File out = new File("xsltliaison" + i + ".tmp"); | |||||
| try { | |||||
| liaison.transform(in, out); | |||||
| } catch (Exception e){ | |||||
| throw new BuildException("failed in transform " + i, e); | |||||
| } finally { | |||||
| out.delete(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testSystemId(){ | |||||
| File file = null; | |||||
| if ( File.separatorChar == '\\' ){ | |||||
| file = new File("d:\\jdk"); | |||||
| } else { | |||||
| file = new File("/user/local/bin"); | |||||
| } | |||||
| String systemid = JAXPUtils.getSystemId(file); | |||||
| assertTrue("SystemIDs should start by file:/", systemid.startsWith("file:/")); | |||||
| assertTrue("SystemIDs should not start with file:////", !systemid.startsWith("file:////")); | |||||
| } | |||||
| public void log(String message) { | |||||
| throw new AssertionFailedError("Liaison sent message: "+message); | |||||
| } | |||||
| } | |||||
| @@ -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,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; | |||||
| 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,87 @@ | |||||
| /* | |||||
| * 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,133 @@ | |||||
| /* | |||||
| * 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); | |||||
| } | |||||
| } | |||||
| @@ -1,211 +1,211 @@ | |||||
| /* | |||||
| * 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.assertFalse; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||||
| import static org.junit.Assert.fail; | |||||
| import java.io.File; | |||||
| import java.io.FileReader; | |||||
| import java.io.InputStream; | |||||
| import java.net.URL; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.util.FileUtils; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Small testcase for the junitreporttask. | |||||
| * First test added to reproduce an fault, still a lot to improve | |||||
| * | |||||
| */ | |||||
| public class JUnitReportTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junitreport.xml"); | |||||
| } | |||||
| /** | |||||
| * Verifies that no empty junit-noframes.html is generated when frames | |||||
| * output is selected via the default. | |||||
| * Needs reports1 task from junitreport.xml. | |||||
| */ | |||||
| @Test | |||||
| public void testNoFileJUnitNoFrames() { | |||||
| buildRule.executeTarget("reports1"); | |||||
| assertFalse("No file junit-noframes.html expected", (new File(System.getProperty("root"), "src/etc/testcases/taskdefs/optional/junitreport/test/html/junit-noframes.html").exists())); | |||||
| } | |||||
| public void assertIndexCreated() { | |||||
| if (!new File(buildRule.getProject().getProperty("output"), "html/index.html").exists()) { | |||||
| fail("No file index file found"); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testEmptyFile() throws Exception { | |||||
| buildRule.executeTarget("testEmptyFile"); | |||||
| assertIndexCreated(); | |||||
| assertContains("Required text not found in log", XMLResultAggregator.WARNING_EMPTY_FILE, buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testIncompleteFile() throws Exception { | |||||
| buildRule.executeTarget("testIncompleteFile"); | |||||
| assertIndexCreated(); | |||||
| assertContains("Required text not found in log", XMLResultAggregator.WARNING_IS_POSSIBLY_CORRUPTED, buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testWrongElement() throws Exception { | |||||
| buildRule.executeTarget("testWrongElement"); | |||||
| assertIndexCreated(); | |||||
| assertContains("Required text not found in log", XMLResultAggregator.WARNING_INVALID_ROOT_ELEMENT, buildRule.getLog()); | |||||
| } | |||||
| // Bugzilla Report 34963 | |||||
| @Test | |||||
| public void testStackTraceLineBreaks() throws Exception { | |||||
| buildRule.executeTarget("testStackTraceLineBreaks"); | |||||
| assertIndexCreated(); | |||||
| FileReader r = null; | |||||
| try { | |||||
| r = new FileReader(new File(buildRule.getOutputDir(), "html/sampleproject/coins/0_CoinTest.html")); | |||||
| String report = FileUtils.readFully(r); | |||||
| assertContains("output must contain <br>:\n" + report, "junit.framework.AssertionFailedError: DOEG<br>", report); | |||||
| assertContains("#51049: output must translate line breaks:\n" + report, "cur['line.separator'] = '\\r\\n';", report); | |||||
| } finally { | |||||
| FileUtils.close(r); | |||||
| } | |||||
| } | |||||
| // Bugzilla Report 38477 | |||||
| @Test | |||||
| public void testSpecialSignsInSrcPath() throws Exception { | |||||
| buildRule.executeTarget("testSpecialSignsInSrcPath"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| @Test | |||||
| public void testSpecialSignsInHtmlPath() throws Exception { | |||||
| buildRule.executeTarget("testSpecialSignsInHtmlPath"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html# $%\u00A7&-!report/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| //Bugzilla Report 39708 | |||||
| @Test | |||||
| public void testWithStyleFromDir() throws Exception { | |||||
| buildRule.executeTarget("testWithStyleFromDir"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| //Bugzilla Report 40021 | |||||
| @Test | |||||
| public void testNoFrames() throws Exception { | |||||
| buildRule.executeTarget("testNoFrames"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/junit-noframes.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No junit-noframes.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| //Bugzilla Report 39708 | |||||
| @Test | |||||
| public void testWithStyleFromDirAndXslImport() throws Exception { | |||||
| buildRule.executeTarget("testWithStyleFromDirAndXslImport"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| @Test | |||||
| public void testWithStyleFromClasspath() throws Exception { | |||||
| buildRule.executeTarget("testWithStyleFromClasspath"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| @Test | |||||
| public void testWithParams() throws Exception { | |||||
| buildRule.executeTarget("testWithParams"); | |||||
| assertContains("key1=value1,key2=value2", buildRule.getLog()); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 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 static org.junit.Assert.assertFalse; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||||
| import static org.junit.Assert.fail; | |||||
| import java.io.File; | |||||
| import java.io.FileReader; | |||||
| import java.io.InputStream; | |||||
| import java.net.URL; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.util.FileUtils; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Small testcase for the junitreporttask. | |||||
| * First test added to reproduce an fault, still a lot to improve | |||||
| * | |||||
| */ | |||||
| public class JUnitReportTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junitreport.xml"); | |||||
| } | |||||
| /** | |||||
| * Verifies that no empty junit-noframes.html is generated when frames | |||||
| * output is selected via the default. | |||||
| * Needs reports1 task from junitreport.xml. | |||||
| */ | |||||
| @Test | |||||
| public void testNoFileJUnitNoFrames() { | |||||
| buildRule.executeTarget("reports1"); | |||||
| assertFalse("No file junit-noframes.html expected", (new File(System.getProperty("root"), "src/etc/testcases/taskdefs/optional/junitreport/test/html/junit-noframes.html").exists())); | |||||
| } | |||||
| public void assertIndexCreated() { | |||||
| if (!new File(buildRule.getProject().getProperty("output"), "html/index.html").exists()) { | |||||
| fail("No file index file found"); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testEmptyFile() throws Exception { | |||||
| buildRule.executeTarget("testEmptyFile"); | |||||
| assertIndexCreated(); | |||||
| assertContains("Required text not found in log", XMLResultAggregator.WARNING_EMPTY_FILE, buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testIncompleteFile() throws Exception { | |||||
| buildRule.executeTarget("testIncompleteFile"); | |||||
| assertIndexCreated(); | |||||
| assertContains("Required text not found in log", XMLResultAggregator.WARNING_IS_POSSIBLY_CORRUPTED, buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testWrongElement() throws Exception { | |||||
| buildRule.executeTarget("testWrongElement"); | |||||
| assertIndexCreated(); | |||||
| assertContains("Required text not found in log", XMLResultAggregator.WARNING_INVALID_ROOT_ELEMENT, buildRule.getLog()); | |||||
| } | |||||
| // Bugzilla Report 34963 | |||||
| @Test | |||||
| public void testStackTraceLineBreaks() throws Exception { | |||||
| buildRule.executeTarget("testStackTraceLineBreaks"); | |||||
| assertIndexCreated(); | |||||
| FileReader r = null; | |||||
| try { | |||||
| r = new FileReader(new File(buildRule.getOutputDir(), "html/sampleproject/coins/0_CoinTest.html")); | |||||
| String report = FileUtils.readFully(r); | |||||
| assertContains("output must contain <br>:\n" + report, "junit.framework.AssertionFailedError: DOEG<br>", report); | |||||
| assertContains("#51049: output must translate line breaks:\n" + report, "cur['line.separator'] = '\\r\\n';", report); | |||||
| } finally { | |||||
| FileUtils.close(r); | |||||
| } | |||||
| } | |||||
| // Bugzilla Report 38477 | |||||
| @Test | |||||
| public void testSpecialSignsInSrcPath() throws Exception { | |||||
| buildRule.executeTarget("testSpecialSignsInSrcPath"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| @Test | |||||
| public void testSpecialSignsInHtmlPath() throws Exception { | |||||
| buildRule.executeTarget("testSpecialSignsInHtmlPath"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html# $%\u00A7&-!report/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| //Bugzilla Report 39708 | |||||
| @Test | |||||
| public void testWithStyleFromDir() throws Exception { | |||||
| buildRule.executeTarget("testWithStyleFromDir"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| //Bugzilla Report 40021 | |||||
| @Test | |||||
| public void testNoFrames() throws Exception { | |||||
| buildRule.executeTarget("testNoFrames"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/junit-noframes.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No junit-noframes.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| //Bugzilla Report 39708 | |||||
| @Test | |||||
| public void testWithStyleFromDirAndXslImport() throws Exception { | |||||
| buildRule.executeTarget("testWithStyleFromDirAndXslImport"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| @Test | |||||
| public void testWithStyleFromClasspath() throws Exception { | |||||
| buildRule.executeTarget("testWithStyleFromClasspath"); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| @Test | |||||
| public void testWithParams() throws Exception { | |||||
| buildRule.executeTarget("testWithParams"); | |||||
| assertContains("key1=value1,key2=value2", buildRule.getLog()); | |||||
| File reportFile = new File(buildRule.getOutputDir(), "html/index.html"); | |||||
| // tests one the file object | |||||
| assertTrue("No index.html present. Not generated?", reportFile.exists() ); | |||||
| assertTrue("Cant read the report file.", reportFile.canRead() ); | |||||
| assertTrue("File shouldn't be empty.", reportFile.length() > 0 ); | |||||
| // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report | |||||
| URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) ); | |||||
| InputStream reportStream = reportUrl.openStream(); | |||||
| assertTrue("This shouldn't be an empty stream.", reportStream.available() > 0); | |||||
| } | |||||
| } | |||||
| @@ -1,398 +1,398 @@ | |||||
| /* | |||||
| * 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 static org.junit.Assert.assertFalse; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||||
| import java.io.BufferedReader; | |||||
| import java.io.File; | |||||
| import java.io.FileReader; | |||||
| import java.io.IOException; | |||||
| import javax.xml.parsers.DocumentBuilder; | |||||
| import javax.xml.parsers.DocumentBuilderFactory; | |||||
| import javax.xml.xpath.XPath; | |||||
| import javax.xml.xpath.XPathConstants; | |||||
| import javax.xml.xpath.XPathFactory; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.util.JavaEnvUtils; | |||||
| import org.junit.Assume; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import org.w3c.dom.Document; | |||||
| import org.w3c.dom.Node; | |||||
| public class JUnitTaskTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| /** | |||||
| * The JUnit setup method. | |||||
| */ | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testCrash() { | |||||
| buildRule.executeTarget("crash"); | |||||
| assertEquals("true", buildRule.getProject().getProperty("crashed")); | |||||
| } | |||||
| @Test | |||||
| public void testNoCrash() { | |||||
| buildRule.executeTarget("nocrash"); | |||||
| assertNull(buildRule.getProject().getProperty("crashed")); | |||||
| } | |||||
| @Test | |||||
| public void testTimeout() { | |||||
| buildRule.executeTarget("timeout"); | |||||
| assertEquals("true", buildRule.getProject().getProperty("timeout")); | |||||
| } | |||||
| @Test | |||||
| public void testNoTimeout() { | |||||
| buildRule.executeTarget("notimeout"); | |||||
| assertNull(buildRule.getProject().getProperty("timeout")); | |||||
| } | |||||
| @Test | |||||
| public void testNonForkedCapture() throws IOException { | |||||
| buildRule.executeTarget("capture"); | |||||
| assertNoPrint(buildRule.getLog(), "log"); | |||||
| assertNoPrint(buildRule.getFullLog(), "debug log"); | |||||
| } | |||||
| @Test | |||||
| public void testForkedCapture() throws IOException { | |||||
| buildRule.getProject().setProperty("fork", "true"); | |||||
| testNonForkedCapture(); | |||||
| // those would fail because of the way BuildFileRule captures output | |||||
| assertNoPrint(buildRule.getOutput(), "output"); | |||||
| assertNoPrint(buildRule.getError(), "error output"); | |||||
| assertOutput(); | |||||
| } | |||||
| @Test | |||||
| public void testBatchTestForkOnceToDir() { | |||||
| assertResultFilesExist("testBatchTestForkOnceToDir", ".xml"); | |||||
| } | |||||
| /** Bugzilla Report 32973 */ | |||||
| @Test | |||||
| public void testBatchTestForkOnceExtension() { | |||||
| assertResultFilesExist("testBatchTestForkOnceExtension", ".foo"); | |||||
| } | |||||
| /* Bugzilla Report 42984 */ | |||||
| //TODO This scenario works from command line, but not from JUnit ... | |||||
| // Running these steps from the junit.xml-directory work | |||||
| // $ ant -f junit.xml failureRecorder.prepare | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // $ ant -f junit.xml failureRecorder.fixing | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // But running the JUnit testcase fails in 4th run. | |||||
| @Test | |||||
| public void testFailureRecorder() { | |||||
| if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_5)) { | |||||
| try { | |||||
| 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 | |||||
| } | |||||
| } | |||||
| File testDir = new File(buildRule.getOutputDir(), "out"); | |||||
| File collectorFile = new File(buildRule.getOutputDir(), | |||||
| "out/FailedTests.java"); | |||||
| // ensure that there is a clean test environment | |||||
| assertFalse("Test directory '" + testDir.getAbsolutePath() | |||||
| + "' must not exist before the test preparation.", | |||||
| testDir.exists()); | |||||
| assertFalse("The collector file '" | |||||
| + collectorFile.getAbsolutePath() | |||||
| + "'must not exist before the test preparation.", | |||||
| collectorFile.exists()); | |||||
| // prepare the test environment | |||||
| buildRule.executeTarget("failureRecorder.prepare"); | |||||
| assertTrue("Test directory '" + testDir.getAbsolutePath() | |||||
| + "' was not created.", testDir.exists()); | |||||
| assertTrue("There should be one class.", | |||||
| (new File(testDir, "A.class")).exists()); | |||||
| assertFalse("The collector file '" | |||||
| + 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() | |||||
| + "' should exist after the 1st run.", | |||||
| collectorFile.exists()); | |||||
| // the passing test cases | |||||
| buildRule.executeTarget("A.test01"); | |||||
| assertContains("1st run: should run A.test01", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test05"); | |||||
| assertContains("1st run: should run B.test05", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test06"); | |||||
| assertContains("1st run: should run B.test06", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test07"); | |||||
| assertContains("1st run: should run C.test07", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test08"); | |||||
| assertContains("1st run: should run C.test08", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test09"); | |||||
| assertContains("1st run: should run C.test09", buildRule.getOutput()); | |||||
| // the failing test cases | |||||
| buildRule.executeTarget("A.test02"); | |||||
| assertContains("1st run: should run A.test02", buildRule.getOutput()); | |||||
| buildRule.executeTarget("A.test03"); | |||||
| assertContains("1st run: should run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| assertContains("1st run: should run B.test04", buildRule.getOutput()); | |||||
| 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() | |||||
| + "' should exist after the 2nd run.", | |||||
| collectorFile.exists()); | |||||
| // the passing test cases | |||||
| buildRule.executeTarget("A.test01"); | |||||
| assertNotContains("2nd run: should not run A.test01", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test05"); | |||||
| assertNotContains("2nd run: should not run A.test05", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test06"); | |||||
| assertNotContains("2nd run: should not run B.test06", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test07"); | |||||
| assertNotContains("2nd run: should not run C.test07", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test08"); | |||||
| assertNotContains("2nd run: should not run C.test08", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test09"); | |||||
| assertNotContains("2nd run: should not run C.test09", buildRule.getOutput()); | |||||
| // the failing test cases | |||||
| buildRule.executeTarget("A.test02"); | |||||
| assertContains("2nd run: should run A.test02", buildRule.getOutput()); | |||||
| buildRule.executeTarget("A.test03"); | |||||
| assertContains("2nd run: should run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| 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() | |||||
| + "' should exist after the 3rd run.", | |||||
| collectorFile.exists()); | |||||
| buildRule.executeTarget("A.test02"); | |||||
| assertContains("3rd run: should run A.test02", buildRule.getOutput()); | |||||
| buildRule.executeTarget("A.test03"); | |||||
| assertContains("3rd run: should run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| 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() | |||||
| + "' should exist after the 4th run.", | |||||
| collectorFile.exists()); | |||||
| //TODO: these two statements fail | |||||
| //buildRule.executeTarget("A.test02");assertNotContains("4th run: should not run A.test02", buildRule.getOutput()); | |||||
| //buildRule.executeTarget("A.test03");assertNotContains("4th run: should not run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| assertContains("4th run: should run B.test04", buildRule.getOutput()); | |||||
| buildRule.executeTarget("D.test10"); | |||||
| assertContains("4th run: should run D.test10", buildRule.getOutput()); | |||||
| } | |||||
| @Test | |||||
| public void testBatchTestForkOnceCustomFormatter() { | |||||
| assertResultFilesExist("testBatchTestForkOnceCustomFormatter", "foo"); | |||||
| } | |||||
| // Bugzilla Issue 45411 | |||||
| @Test | |||||
| public void testMultilineAssertsNoFork() { | |||||
| buildRule.executeTarget("testMultilineAssertsNoFork"); | |||||
| assertNotContains("messaged up", buildRule.getLog()); | |||||
| assertNotContains("crashed)", buildRule.getLog()); | |||||
| } | |||||
| // Bugzilla Issue 45411 | |||||
| @Test | |||||
| public void testMultilineAssertsFork() { | |||||
| buildRule.executeTarget("testMultilineAssertsFork"); | |||||
| assertNotContains("messaged up", buildRule.getLog()); | |||||
| assertNotContains("crashed)", buildRule.getLog()); | |||||
| } | |||||
| private void assertResultFilesExist(String target, String extension) { | |||||
| buildRule.executeTarget(target); | |||||
| assertResultFileExists("JUnitClassLoader", extension); | |||||
| assertResultFileExists("JUnitTestRunner", extension); | |||||
| assertResultFileExists("JUnitVersionHelper", extension); | |||||
| } | |||||
| private void assertResultFileExists(String classNameFragment, String ext) { | |||||
| assertTrue("result for " + classNameFragment + "Test" + ext + " exists", | |||||
| new File(buildRule.getOutputDir(), "TEST-org.apache.tools.ant." | |||||
| + "taskdefs.optional.junit." | |||||
| + classNameFragment + "Test" + ext) | |||||
| .exists()); | |||||
| } | |||||
| private void assertNoPrint(String result, String where) { | |||||
| assertNotContains(where + " '" + result + "' must not contain print statement", | |||||
| "print to System.", result); | |||||
| } | |||||
| private void assertOutput() throws IOException { | |||||
| FileReader inner = new FileReader(new File(buildRule.getOutputDir(), | |||||
| "testlog.txt")); | |||||
| BufferedReader reader = new BufferedReader(inner); | |||||
| try { | |||||
| String line = reader.readLine(); | |||||
| assertEquals("Testsuite: org.apache.tools.ant.taskdefs.optional.junit.Printer", | |||||
| line); | |||||
| line = reader.readLine(); | |||||
| assertNotNull(line); | |||||
| assertTrue(line.startsWith("Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed:")); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- Standard Output ---------------", | |||||
| line); | |||||
| assertPrint(reader.readLine(), "static", "out"); | |||||
| assertPrint(reader.readLine(), "constructor", "out"); | |||||
| assertPrint(reader.readLine(), "method", "out"); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- ---------------- ---------------", | |||||
| line); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- Standard Error -----------------", | |||||
| line); | |||||
| assertPrint(reader.readLine(), "static", "err"); | |||||
| assertPrint(reader.readLine(), "constructor", "err"); | |||||
| assertPrint(reader.readLine(), "method", "err"); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- ---------------- ---------------", | |||||
| line); | |||||
| line = reader.readLine(); | |||||
| assertEquals("", line); | |||||
| line = reader.readLine(); | |||||
| assertNotNull(line); | |||||
| assertTrue(line.startsWith("Testcase: testNoCrash took ")); | |||||
| } finally { | |||||
| inner.close(); | |||||
| } | |||||
| } | |||||
| private void assertPrint(String line, String from, String to) { | |||||
| String search = from + " print to System." + to; | |||||
| assertEquals(search, line); | |||||
| } | |||||
| @Test | |||||
| public void testJUnit4Skip() throws Exception { | |||||
| buildRule.executeTarget("testSkippableTests"); | |||||
| DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); | |||||
| DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); | |||||
| Document doc = dBuilder.parse(new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit4Skippable.xml")); | |||||
| assertEquals("Incorrect number of nodes created", 8, doc.getElementsByTagName("testcase").getLength()); | |||||
| XPathFactory factory = XPathFactory.newInstance(); | |||||
| XPath xpath = factory.newXPath(); | |||||
| assertEquals("Incorrect number of skipped tests in header", 4, Integer.parseInt(xpath.compile("//testsuite/@skipped").evaluate(doc))); | |||||
| assertEquals("Incorrect number of error tests in header", 1, Integer.parseInt(xpath.compile("//testsuite/@errors").evaluate(doc))); | |||||
| assertEquals("Incorrect number of failure tests in header", 2, Integer.parseInt(xpath.compile("//testsuite/@failures").evaluate(doc))); | |||||
| assertEquals("Incorrect number of tests in header", 8, Integer.parseInt(xpath.compile("//testsuite/@tests").evaluate(doc))); | |||||
| assertEquals("Incorrect ignore message on explicit ignored test", "Please don't ignore me!", xpath.compile("//testsuite/testcase[@name='explicitIgnoreTest']/skipped/@message").evaluate(doc)); | |||||
| assertEquals("No message should be set on Ignored tests with no Ignore annotation text", 0, ((Node)xpath.compile("//testsuite/testcase[@name='explicitlyIgnoreTestNoMessage']/skipped").evaluate(doc, XPathConstants.NODE)).getAttributes().getLength()); | |||||
| assertEquals("Incorrect ignore message on implicit ignored test", "This test will be ignored", xpath.compile("//testsuite/testcase[@name='implicitlyIgnoreTest']/skipped/@message").evaluate(doc)); | |||||
| assertNotNull("Implicit ignore test should have an ignore element", xpath.compile("//testsuite/testcase[@name='implicitlyIgnoreTestNoMessage']/skipped").evaluate(doc, XPathConstants.NODE)); | |||||
| } | |||||
| @Test | |||||
| public void testTestMethods() throws Exception { | |||||
| buildRule.executeTarget("testTestMethods"); | |||||
| } | |||||
| @Test | |||||
| public void testNonTestsSkipped() throws Exception { | |||||
| buildRule.executeTarget("testNonTests"); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.NonTestMissed.xml").exists()); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.JUnit3NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3TestMissed.xml").exists()); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.AbstractTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestMissed.xml").exists()); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.AbstractJUnit3TestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractJUnit3TestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractTestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractJUnit3TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractJUnit3TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestWithSuiteNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestWithSuiteNotMissed.xml").exists()); | |||||
| buildRule.executeTarget("testNonTestsRun"); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.NonTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3NonTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractTestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractJUnit3TestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractJUnit3TestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3NonTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestWithSuiteNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestWithSuiteNotMissed.xml").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.junit; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertFalse; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.apache.tools.ant.AntAssert.assertNotContains; | |||||
| import static org.apache.tools.ant.AntAssert.assertContains; | |||||
| import java.io.BufferedReader; | |||||
| import java.io.File; | |||||
| import java.io.FileReader; | |||||
| import java.io.IOException; | |||||
| import javax.xml.parsers.DocumentBuilder; | |||||
| import javax.xml.parsers.DocumentBuilderFactory; | |||||
| import javax.xml.xpath.XPath; | |||||
| import javax.xml.xpath.XPathConstants; | |||||
| import javax.xml.xpath.XPathFactory; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.util.JavaEnvUtils; | |||||
| import org.junit.Assume; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import org.w3c.dom.Document; | |||||
| import org.w3c.dom.Node; | |||||
| public class JUnitTaskTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| /** | |||||
| * The JUnit setup method. | |||||
| */ | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/junit.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testCrash() { | |||||
| buildRule.executeTarget("crash"); | |||||
| assertEquals("true", buildRule.getProject().getProperty("crashed")); | |||||
| } | |||||
| @Test | |||||
| public void testNoCrash() { | |||||
| buildRule.executeTarget("nocrash"); | |||||
| assertNull(buildRule.getProject().getProperty("crashed")); | |||||
| } | |||||
| @Test | |||||
| public void testTimeout() { | |||||
| buildRule.executeTarget("timeout"); | |||||
| assertEquals("true", buildRule.getProject().getProperty("timeout")); | |||||
| } | |||||
| @Test | |||||
| public void testNoTimeout() { | |||||
| buildRule.executeTarget("notimeout"); | |||||
| assertNull(buildRule.getProject().getProperty("timeout")); | |||||
| } | |||||
| @Test | |||||
| public void testNonForkedCapture() throws IOException { | |||||
| buildRule.executeTarget("capture"); | |||||
| assertNoPrint(buildRule.getLog(), "log"); | |||||
| assertNoPrint(buildRule.getFullLog(), "debug log"); | |||||
| } | |||||
| @Test | |||||
| public void testForkedCapture() throws IOException { | |||||
| buildRule.getProject().setProperty("fork", "true"); | |||||
| testNonForkedCapture(); | |||||
| // those would fail because of the way BuildFileRule captures output | |||||
| assertNoPrint(buildRule.getOutput(), "output"); | |||||
| assertNoPrint(buildRule.getError(), "error output"); | |||||
| assertOutput(); | |||||
| } | |||||
| @Test | |||||
| public void testBatchTestForkOnceToDir() { | |||||
| assertResultFilesExist("testBatchTestForkOnceToDir", ".xml"); | |||||
| } | |||||
| /** Bugzilla Report 32973 */ | |||||
| @Test | |||||
| public void testBatchTestForkOnceExtension() { | |||||
| assertResultFilesExist("testBatchTestForkOnceExtension", ".foo"); | |||||
| } | |||||
| /* Bugzilla Report 42984 */ | |||||
| //TODO This scenario works from command line, but not from JUnit ... | |||||
| // Running these steps from the junit.xml-directory work | |||||
| // $ ant -f junit.xml failureRecorder.prepare | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // $ ant -f junit.xml failureRecorder.fixing | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // $ ant -f junit.xml failureRecorder.runtest | |||||
| // But running the JUnit testcase fails in 4th run. | |||||
| @Test | |||||
| public void testFailureRecorder() { | |||||
| if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_5)) { | |||||
| try { | |||||
| 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 | |||||
| } | |||||
| } | |||||
| File testDir = new File(buildRule.getOutputDir(), "out"); | |||||
| File collectorFile = new File(buildRule.getOutputDir(), | |||||
| "out/FailedTests.java"); | |||||
| // ensure that there is a clean test environment | |||||
| assertFalse("Test directory '" + testDir.getAbsolutePath() | |||||
| + "' must not exist before the test preparation.", | |||||
| testDir.exists()); | |||||
| assertFalse("The collector file '" | |||||
| + collectorFile.getAbsolutePath() | |||||
| + "'must not exist before the test preparation.", | |||||
| collectorFile.exists()); | |||||
| // prepare the test environment | |||||
| buildRule.executeTarget("failureRecorder.prepare"); | |||||
| assertTrue("Test directory '" + testDir.getAbsolutePath() | |||||
| + "' was not created.", testDir.exists()); | |||||
| assertTrue("There should be one class.", | |||||
| (new File(testDir, "A.class")).exists()); | |||||
| assertFalse("The collector file '" | |||||
| + 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() | |||||
| + "' should exist after the 1st run.", | |||||
| collectorFile.exists()); | |||||
| // the passing test cases | |||||
| buildRule.executeTarget("A.test01"); | |||||
| assertContains("1st run: should run A.test01", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test05"); | |||||
| assertContains("1st run: should run B.test05", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test06"); | |||||
| assertContains("1st run: should run B.test06", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test07"); | |||||
| assertContains("1st run: should run C.test07", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test08"); | |||||
| assertContains("1st run: should run C.test08", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test09"); | |||||
| assertContains("1st run: should run C.test09", buildRule.getOutput()); | |||||
| // the failing test cases | |||||
| buildRule.executeTarget("A.test02"); | |||||
| assertContains("1st run: should run A.test02", buildRule.getOutput()); | |||||
| buildRule.executeTarget("A.test03"); | |||||
| assertContains("1st run: should run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| assertContains("1st run: should run B.test04", buildRule.getOutput()); | |||||
| 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() | |||||
| + "' should exist after the 2nd run.", | |||||
| collectorFile.exists()); | |||||
| // the passing test cases | |||||
| buildRule.executeTarget("A.test01"); | |||||
| assertNotContains("2nd run: should not run A.test01", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test05"); | |||||
| assertNotContains("2nd run: should not run A.test05", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test06"); | |||||
| assertNotContains("2nd run: should not run B.test06", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test07"); | |||||
| assertNotContains("2nd run: should not run C.test07", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test08"); | |||||
| assertNotContains("2nd run: should not run C.test08", buildRule.getOutput()); | |||||
| buildRule.executeTarget("C.test09"); | |||||
| assertNotContains("2nd run: should not run C.test09", buildRule.getOutput()); | |||||
| // the failing test cases | |||||
| buildRule.executeTarget("A.test02"); | |||||
| assertContains("2nd run: should run A.test02", buildRule.getOutput()); | |||||
| buildRule.executeTarget("A.test03"); | |||||
| assertContains("2nd run: should run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| 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() | |||||
| + "' should exist after the 3rd run.", | |||||
| collectorFile.exists()); | |||||
| buildRule.executeTarget("A.test02"); | |||||
| assertContains("3rd run: should run A.test02", buildRule.getOutput()); | |||||
| buildRule.executeTarget("A.test03"); | |||||
| assertContains("3rd run: should run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| 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() | |||||
| + "' should exist after the 4th run.", | |||||
| collectorFile.exists()); | |||||
| //TODO: these two statements fail | |||||
| //buildRule.executeTarget("A.test02");assertNotContains("4th run: should not run A.test02", buildRule.getOutput()); | |||||
| //buildRule.executeTarget("A.test03");assertNotContains("4th run: should not run A.test03", buildRule.getOutput()); | |||||
| buildRule.executeTarget("B.test04"); | |||||
| assertContains("4th run: should run B.test04", buildRule.getOutput()); | |||||
| buildRule.executeTarget("D.test10"); | |||||
| assertContains("4th run: should run D.test10", buildRule.getOutput()); | |||||
| } | |||||
| @Test | |||||
| public void testBatchTestForkOnceCustomFormatter() { | |||||
| assertResultFilesExist("testBatchTestForkOnceCustomFormatter", "foo"); | |||||
| } | |||||
| // Bugzilla Issue 45411 | |||||
| @Test | |||||
| public void testMultilineAssertsNoFork() { | |||||
| buildRule.executeTarget("testMultilineAssertsNoFork"); | |||||
| assertNotContains("messaged up", buildRule.getLog()); | |||||
| assertNotContains("crashed)", buildRule.getLog()); | |||||
| } | |||||
| // Bugzilla Issue 45411 | |||||
| @Test | |||||
| public void testMultilineAssertsFork() { | |||||
| buildRule.executeTarget("testMultilineAssertsFork"); | |||||
| assertNotContains("messaged up", buildRule.getLog()); | |||||
| assertNotContains("crashed)", buildRule.getLog()); | |||||
| } | |||||
| private void assertResultFilesExist(String target, String extension) { | |||||
| buildRule.executeTarget(target); | |||||
| assertResultFileExists("JUnitClassLoader", extension); | |||||
| assertResultFileExists("JUnitTestRunner", extension); | |||||
| assertResultFileExists("JUnitVersionHelper", extension); | |||||
| } | |||||
| private void assertResultFileExists(String classNameFragment, String ext) { | |||||
| assertTrue("result for " + classNameFragment + "Test" + ext + " exists", | |||||
| new File(buildRule.getOutputDir(), "TEST-org.apache.tools.ant." | |||||
| + "taskdefs.optional.junit." | |||||
| + classNameFragment + "Test" + ext) | |||||
| .exists()); | |||||
| } | |||||
| private void assertNoPrint(String result, String where) { | |||||
| assertNotContains(where + " '" + result + "' must not contain print statement", | |||||
| "print to System.", result); | |||||
| } | |||||
| private void assertOutput() throws IOException { | |||||
| FileReader inner = new FileReader(new File(buildRule.getOutputDir(), | |||||
| "testlog.txt")); | |||||
| BufferedReader reader = new BufferedReader(inner); | |||||
| try { | |||||
| String line = reader.readLine(); | |||||
| assertEquals("Testsuite: org.apache.tools.ant.taskdefs.optional.junit.Printer", | |||||
| line); | |||||
| line = reader.readLine(); | |||||
| assertNotNull(line); | |||||
| assertTrue(line.startsWith("Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed:")); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- Standard Output ---------------", | |||||
| line); | |||||
| assertPrint(reader.readLine(), "static", "out"); | |||||
| assertPrint(reader.readLine(), "constructor", "out"); | |||||
| assertPrint(reader.readLine(), "method", "out"); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- ---------------- ---------------", | |||||
| line); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- Standard Error -----------------", | |||||
| line); | |||||
| assertPrint(reader.readLine(), "static", "err"); | |||||
| assertPrint(reader.readLine(), "constructor", "err"); | |||||
| assertPrint(reader.readLine(), "method", "err"); | |||||
| line = reader.readLine(); | |||||
| assertEquals("------------- ---------------- ---------------", | |||||
| line); | |||||
| line = reader.readLine(); | |||||
| assertEquals("", line); | |||||
| line = reader.readLine(); | |||||
| assertNotNull(line); | |||||
| assertTrue(line.startsWith("Testcase: testNoCrash took ")); | |||||
| } finally { | |||||
| inner.close(); | |||||
| } | |||||
| } | |||||
| private void assertPrint(String line, String from, String to) { | |||||
| String search = from + " print to System." + to; | |||||
| assertEquals(search, line); | |||||
| } | |||||
| @Test | |||||
| public void testJUnit4Skip() throws Exception { | |||||
| buildRule.executeTarget("testSkippableTests"); | |||||
| DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); | |||||
| DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); | |||||
| Document doc = dBuilder.parse(new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit4Skippable.xml")); | |||||
| assertEquals("Incorrect number of nodes created", 8, doc.getElementsByTagName("testcase").getLength()); | |||||
| XPathFactory factory = XPathFactory.newInstance(); | |||||
| XPath xpath = factory.newXPath(); | |||||
| assertEquals("Incorrect number of skipped tests in header", 4, Integer.parseInt(xpath.compile("//testsuite/@skipped").evaluate(doc))); | |||||
| assertEquals("Incorrect number of error tests in header", 1, Integer.parseInt(xpath.compile("//testsuite/@errors").evaluate(doc))); | |||||
| assertEquals("Incorrect number of failure tests in header", 2, Integer.parseInt(xpath.compile("//testsuite/@failures").evaluate(doc))); | |||||
| assertEquals("Incorrect number of tests in header", 8, Integer.parseInt(xpath.compile("//testsuite/@tests").evaluate(doc))); | |||||
| assertEquals("Incorrect ignore message on explicit ignored test", "Please don't ignore me!", xpath.compile("//testsuite/testcase[@name='explicitIgnoreTest']/skipped/@message").evaluate(doc)); | |||||
| assertEquals("No message should be set on Ignored tests with no Ignore annotation text", 0, ((Node)xpath.compile("//testsuite/testcase[@name='explicitlyIgnoreTestNoMessage']/skipped").evaluate(doc, XPathConstants.NODE)).getAttributes().getLength()); | |||||
| assertEquals("Incorrect ignore message on implicit ignored test", "This test will be ignored", xpath.compile("//testsuite/testcase[@name='implicitlyIgnoreTest']/skipped/@message").evaluate(doc)); | |||||
| assertNotNull("Implicit ignore test should have an ignore element", xpath.compile("//testsuite/testcase[@name='implicitlyIgnoreTestNoMessage']/skipped").evaluate(doc, XPathConstants.NODE)); | |||||
| } | |||||
| @Test | |||||
| public void testTestMethods() throws Exception { | |||||
| buildRule.executeTarget("testTestMethods"); | |||||
| } | |||||
| @Test | |||||
| public void testNonTestsSkipped() throws Exception { | |||||
| buildRule.executeTarget("testNonTests"); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.NonTestMissed.xml").exists()); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.JUnit3NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3TestMissed.xml").exists()); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.AbstractTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestMissed.xml").exists()); | |||||
| assertFalse("Test result should not exist as test was skipped - TEST-org.example.junit.AbstractJUnit3TestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractJUnit3TestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractTestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractJUnit3TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractJUnit3TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestWithSuiteNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestWithSuiteNotMissed.xml").exists()); | |||||
| buildRule.executeTarget("testNonTestsRun"); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.NonTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3NonTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3TestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3TestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractTestNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractTestNotMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.AbstractJUnit3TestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.AbstractJUnit3TestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.JUnit3NonTestMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.JUnit3NonTestMissed.xml").exists()); | |||||
| assertTrue("Test result should exist as test was not skipped - TEST-org.example.junit.TestWithSuiteNotMissed.xml", new File(buildRule.getOutputDir(), "TEST-org.example.junit.TestWithSuiteNotMissed.xml").exists()); | |||||
| } | |||||
| } | |||||
| @@ -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()); | |||||
| } | |||||
| } | |||||
| @@ -1,217 +1,217 @@ | |||||
| /* | |||||
| * 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 static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| import java.io.PrintWriter; | |||||
| import java.io.StringWriter; | |||||
| import junit.framework.AssertionFailedError; | |||||
| import junit.framework.TestCase; | |||||
| import junit.framework.TestSuite; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Small testcase for the runner, tests are very very very basics. | |||||
| * They must be enhanced with time. | |||||
| * | |||||
| */ | |||||
| public class JUnitTestRunnerTest{ | |||||
| // check that a valid method name generates no errors | |||||
| @Test | |||||
| public void testValidMethod(){ | |||||
| TestRunner runner = createRunnerForTestMethod(ValidMethodTestCase.class,"testA"); | |||||
| runner.run(); | |||||
| assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode()); | |||||
| } | |||||
| // check that having an invalid method name generates an error | |||||
| @Test | |||||
| public void testInvalidMethod(){ | |||||
| TestRunner runner = createRunnerForTestMethod(InvalidMethodTestCase.class,"testInvalid"); | |||||
| runner.run(); | |||||
| 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(){ | |||||
| TestRunner runner = createRunner(NoSuiteTestCase.class); | |||||
| runner.run(); | |||||
| assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode()); | |||||
| } | |||||
| // check that a suite generates no errors | |||||
| @Test | |||||
| public void testSuite(){ | |||||
| TestRunner runner = createRunner(SuiteTestCase.class); | |||||
| runner.run(); | |||||
| assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode()); | |||||
| } | |||||
| // check that an invalid suite generates an error. | |||||
| @Test | |||||
| public void testInvalidSuite(){ | |||||
| TestRunner runner = createRunner(InvalidSuiteTestCase.class); | |||||
| runner.run(); | |||||
| String error = runner.getFormatter().getError(); | |||||
| assertEquals(error, JUnitTestRunner.ERRORS, runner.getRetCode()); | |||||
| assertTrue(error, error.indexOf("thrown on purpose") != -1); | |||||
| } | |||||
| // check that something which is not a testcase generates no errors | |||||
| // at first even though this is incorrect. | |||||
| @Test | |||||
| public void testNoTestCase(){ | |||||
| TestRunner runner = createRunner(NoTestCase.class); | |||||
| 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"); | |||||
| } | |||||
| // JUnit3 test | |||||
| //assertEquals(runner.getFormatter().getError(), JUnitTestRunner.FAILURES, runner.getRetCode()); | |||||
| } | |||||
| // check that an exception in the constructor is noticed | |||||
| @Test | |||||
| public void testInvalidTestCase(){ | |||||
| TestRunner runner = createRunner(InvalidTestCase.class); | |||||
| 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"); | |||||
| } | |||||
| // JUNIT3 test | |||||
| //assertEquals(error, JUnitTestRunner.FAILURES, runner.getRetCode()); | |||||
| //@fixme as of now does not report the original stacktrace. | |||||
| //assertTrue(error, error.indexOf("thrown on purpose") != -1); | |||||
| } | |||||
| protected TestRunner createRunner(Class<?> clazz){ | |||||
| 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, | |||||
| 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 | |||||
| // is ran in non-forked mode. | |||||
| addFormatter(formatter); | |||||
| } | |||||
| ResultFormatter getFormatter(){ | |||||
| return formatter; | |||||
| } | |||||
| } | |||||
| // dummy formatter just to catch the error | |||||
| private final static class ResultFormatter implements JUnitResultFormatter { | |||||
| private Throwable error; | |||||
| public void setSystemOutput(String output){} | |||||
| public void setSystemError(String output){} | |||||
| public void startTestSuite(JUnitTest suite) throws BuildException{} | |||||
| public void endTestSuite(JUnitTest suite) throws BuildException{} | |||||
| public void setOutput(java.io.OutputStream out){} | |||||
| public void startTest(junit.framework.Test t) {} | |||||
| public void endTest(junit.framework.Test test) {} | |||||
| public void addFailure(junit.framework.Test test, AssertionFailedError t) { } | |||||
| public void addError(junit.framework.Test test, Throwable t) { | |||||
| error = t; | |||||
| } | |||||
| String getError(){ | |||||
| if (error == null){ | |||||
| return ""; | |||||
| } | |||||
| StringWriter sw = new StringWriter(); | |||||
| error.printStackTrace(new PrintWriter(sw)); | |||||
| return sw.toString(); | |||||
| } | |||||
| } | |||||
| public static class NoTestCase { | |||||
| } | |||||
| public static class InvalidMethodTestCase extends TestCase { | |||||
| public InvalidMethodTestCase(String name){ super(name); } | |||||
| public void testA(){ | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| public static class ValidMethodTestCase extends TestCase { | |||||
| public ValidMethodTestCase(String name){ super(name); } | |||||
| public void testA(){ | |||||
| // expected to be executed | |||||
| } | |||||
| public void testB(){ | |||||
| // should not be executed | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| public static class InvalidTestCase extends TestCase { | |||||
| public InvalidTestCase(String name){ | |||||
| super(name); | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| public static class NoSuiteTestCase extends TestCase { | |||||
| public NoSuiteTestCase(String name){ super(name); } | |||||
| public void testA(){} | |||||
| } | |||||
| public static class SuiteTestCase extends NoSuiteTestCase { | |||||
| public SuiteTestCase(String name){ super(name); } | |||||
| public static junit.framework.Test suite(){ | |||||
| return new TestSuite(SuiteTestCase.class); | |||||
| } | |||||
| } | |||||
| public static class InvalidSuiteTestCase extends NoSuiteTestCase { | |||||
| public InvalidSuiteTestCase(String name){ super(name); } | |||||
| public static junit.framework.Test suite(){ | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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 static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| import java.io.PrintWriter; | |||||
| import java.io.StringWriter; | |||||
| import junit.framework.AssertionFailedError; | |||||
| import junit.framework.TestCase; | |||||
| import junit.framework.TestSuite; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Small testcase for the runner, tests are very very very basics. | |||||
| * They must be enhanced with time. | |||||
| * | |||||
| */ | |||||
| public class JUnitTestRunnerTest{ | |||||
| // check that a valid method name generates no errors | |||||
| @Test | |||||
| public void testValidMethod(){ | |||||
| TestRunner runner = createRunnerForTestMethod(ValidMethodTestCase.class,"testA"); | |||||
| runner.run(); | |||||
| assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode()); | |||||
| } | |||||
| // check that having an invalid method name generates an error | |||||
| @Test | |||||
| public void testInvalidMethod(){ | |||||
| TestRunner runner = createRunnerForTestMethod(InvalidMethodTestCase.class,"testInvalid"); | |||||
| runner.run(); | |||||
| 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(){ | |||||
| TestRunner runner = createRunner(NoSuiteTestCase.class); | |||||
| runner.run(); | |||||
| assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode()); | |||||
| } | |||||
| // check that a suite generates no errors | |||||
| @Test | |||||
| public void testSuite(){ | |||||
| TestRunner runner = createRunner(SuiteTestCase.class); | |||||
| runner.run(); | |||||
| assertEquals(runner.getFormatter().getError(), JUnitTestRunner.SUCCESS, runner.getRetCode()); | |||||
| } | |||||
| // check that an invalid suite generates an error. | |||||
| @Test | |||||
| public void testInvalidSuite(){ | |||||
| TestRunner runner = createRunner(InvalidSuiteTestCase.class); | |||||
| runner.run(); | |||||
| String error = runner.getFormatter().getError(); | |||||
| assertEquals(error, JUnitTestRunner.ERRORS, runner.getRetCode()); | |||||
| assertTrue(error, error.indexOf("thrown on purpose") != -1); | |||||
| } | |||||
| // check that something which is not a testcase generates no errors | |||||
| // at first even though this is incorrect. | |||||
| @Test | |||||
| public void testNoTestCase(){ | |||||
| TestRunner runner = createRunner(NoTestCase.class); | |||||
| 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"); | |||||
| } | |||||
| // JUnit3 test | |||||
| //assertEquals(runner.getFormatter().getError(), JUnitTestRunner.FAILURES, runner.getRetCode()); | |||||
| } | |||||
| // check that an exception in the constructor is noticed | |||||
| @Test | |||||
| public void testInvalidTestCase(){ | |||||
| TestRunner runner = createRunner(InvalidTestCase.class); | |||||
| 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"); | |||||
| } | |||||
| // JUNIT3 test | |||||
| //assertEquals(error, JUnitTestRunner.FAILURES, runner.getRetCode()); | |||||
| //@fixme as of now does not report the original stacktrace. | |||||
| //assertTrue(error, error.indexOf("thrown on purpose") != -1); | |||||
| } | |||||
| protected TestRunner createRunner(Class<?> clazz){ | |||||
| 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, | |||||
| 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 | |||||
| // is ran in non-forked mode. | |||||
| addFormatter(formatter); | |||||
| } | |||||
| ResultFormatter getFormatter(){ | |||||
| return formatter; | |||||
| } | |||||
| } | |||||
| // dummy formatter just to catch the error | |||||
| private final static class ResultFormatter implements JUnitResultFormatter { | |||||
| private Throwable error; | |||||
| public void setSystemOutput(String output){} | |||||
| public void setSystemError(String output){} | |||||
| public void startTestSuite(JUnitTest suite) throws BuildException{} | |||||
| public void endTestSuite(JUnitTest suite) throws BuildException{} | |||||
| public void setOutput(java.io.OutputStream out){} | |||||
| public void startTest(junit.framework.Test t) {} | |||||
| public void endTest(junit.framework.Test test) {} | |||||
| public void addFailure(junit.framework.Test test, AssertionFailedError t) { } | |||||
| public void addError(junit.framework.Test test, Throwable t) { | |||||
| error = t; | |||||
| } | |||||
| String getError(){ | |||||
| if (error == null){ | |||||
| return ""; | |||||
| } | |||||
| StringWriter sw = new StringWriter(); | |||||
| error.printStackTrace(new PrintWriter(sw)); | |||||
| return sw.toString(); | |||||
| } | |||||
| } | |||||
| public static class NoTestCase { | |||||
| } | |||||
| public static class InvalidMethodTestCase extends TestCase { | |||||
| public InvalidMethodTestCase(String name){ super(name); } | |||||
| public void testA(){ | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| public static class ValidMethodTestCase extends TestCase { | |||||
| public ValidMethodTestCase(String name){ super(name); } | |||||
| public void testA(){ | |||||
| // expected to be executed | |||||
| } | |||||
| public void testB(){ | |||||
| // should not be executed | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| public static class InvalidTestCase extends TestCase { | |||||
| public InvalidTestCase(String name){ | |||||
| super(name); | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| public static class NoSuiteTestCase extends TestCase { | |||||
| public NoSuiteTestCase(String name){ super(name); } | |||||
| public void testA(){} | |||||
| } | |||||
| public static class SuiteTestCase extends NoSuiteTestCase { | |||||
| public SuiteTestCase(String name){ super(name); } | |||||
| public static junit.framework.Test suite(){ | |||||
| return new TestSuite(SuiteTestCase.class); | |||||
| } | |||||
| } | |||||
| public static class InvalidSuiteTestCase extends NoSuiteTestCase { | |||||
| public InvalidSuiteTestCase(String name){ super(name); } | |||||
| public static junit.framework.Test suite(){ | |||||
| throw new NullPointerException("thrown on purpose"); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -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,50 @@ | |||||
| /* | |||||
| * 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,206 +1,206 @@ | |||||
| /* | |||||
| * 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.ssh; | |||||
| import java.io.File; | |||||
| import java.io.FileWriter; | |||||
| import java.io.IOException; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.taskdefs.condition.FilesMatch; | |||||
| import org.apache.tools.ant.types.FileSet; | |||||
| import org.apache.tools.ant.types.selectors.FilenameSelector; | |||||
| import org.junit.After; | |||||
| import org.junit.Before; | |||||
| 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; | |||||
| /** | |||||
| * This is a unit test for the Scp task in Ant. It must be | |||||
| * configured with command line options in order for it to work. | |||||
| * Here are the options: | |||||
| * | |||||
| * scp.tmp This is a local path to a temporary | |||||
| * directory for this task to use. | |||||
| * scp.host This is the remote location of the form: | |||||
| * "user:password@host:/path/to/directory" | |||||
| * scp.port The port of the listening SSH service. | |||||
| * Defaults to 22. (optional) | |||||
| * scp.known.hosts The file containing the public keys of known | |||||
| * hosts. Must be a SSH2 version file, but | |||||
| * supports RSA and DSA keys. If it is not present | |||||
| * this task setTrust() to true. (optional) | |||||
| */ | |||||
| public class ScpTest { | |||||
| private File tempDir; | |||||
| private String sshHostUri = System.getProperty("scp.host"); | |||||
| private int port = Integer.parseInt( System.getProperty( "scp.port", "22" ) ); | |||||
| private String knownHosts = System.getProperty("scp.known.hosts"); | |||||
| private List cleanUpList = new ArrayList(); | |||||
| public ScpTest() { | |||||
| if (System.getProperty("scp.tmp") != null) { | |||||
| tempDir = new File(System.getProperty("scp.tmp")); | |||||
| } | |||||
| } | |||||
| @Before | |||||
| public void setUp() { | |||||
| cleanUpList.clear(); | |||||
| } | |||||
| @After | |||||
| public void tearDown() { | |||||
| for( Iterator i = cleanUpList.iterator(); i.hasNext(); ) { | |||||
| File file = (File) i.next(); | |||||
| file.delete(); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testSingleFileUploadAndDownload() throws IOException { | |||||
| assertNotNull("system property scp.tmp must be set", tempDir); | |||||
| File uploadFile = createTemporaryFile(); | |||||
| // upload | |||||
| Scp scpTask = createTask(); | |||||
| scpTask.setFile( uploadFile.getPath() ); | |||||
| scpTask.setTodir( sshHostUri ); | |||||
| scpTask.execute(); | |||||
| File testFile = new File( tempDir.getPath() + File.separator + | |||||
| "download-testSingleFileUploadAndDownload.test" ); | |||||
| addCleanup(testFile ); | |||||
| assertFalse("Assert that the testFile does not exist.", testFile.exists()); | |||||
| // download | |||||
| scpTask = createTask(); | |||||
| scpTask.setFile( sshHostUri + "/" + uploadFile.getName() ); | |||||
| scpTask.setTodir( testFile.getPath() ); | |||||
| scpTask.execute(); | |||||
| assertTrue( "Assert that the testFile exists.", testFile.exists() ); | |||||
| compareFiles( uploadFile, testFile ); | |||||
| } | |||||
| @Test | |||||
| public void testMultiUploadAndDownload() throws IOException { | |||||
| assertNotNull("system property scp.tmp must be set", tempDir); | |||||
| List uploadList = new ArrayList(); | |||||
| for( int i = 0; i < 5; i++ ) { | |||||
| uploadList.add( createTemporaryFile() ); | |||||
| } | |||||
| Scp scp = createTask(); | |||||
| FilenameSelector selector = new FilenameSelector(); | |||||
| selector.setName( "scp*" ); | |||||
| FileSet fileset = new FileSet(); | |||||
| fileset.setDir( tempDir ); | |||||
| fileset.addFilename( selector ); | |||||
| scp.addFileset( fileset ); | |||||
| scp.setTodir( sshHostUri ); | |||||
| scp.execute(); | |||||
| File multi = new File( tempDir, "multi" ); | |||||
| multi.mkdir(); | |||||
| addCleanup( multi ); | |||||
| Scp scp2 = createTask(); | |||||
| scp2.setFile( sshHostUri + "/scp*" ); | |||||
| scp2.setTodir( multi.getPath() ); | |||||
| scp2.execute(); | |||||
| FilesMatch match = new FilesMatch(); | |||||
| for( Iterator i = uploadList.iterator(); i.hasNext(); ) { | |||||
| File f = (File)i.next(); | |||||
| match.setFile1( f ); | |||||
| File f2 = new File( multi, f.getName() ); | |||||
| match.setFile2( f2 ); | |||||
| assertTrue("Assert file '" + f.getPath() + "' and file '" + | |||||
| f2.getPath() + "'", match.eval() ); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testRemoteToDir() throws IOException { | |||||
| Scp scpTask = createTask(); | |||||
| // first try an invalid URI | |||||
| try { | |||||
| scpTask.setRemoteTodir( "host:/a/path/without/an/at" ); | |||||
| fail("Expected a BuildException to be thrown due to invalid" | |||||
| + " remoteToDir"); | |||||
| } | |||||
| catch (BuildException e) | |||||
| { | |||||
| // expected | |||||
| //TODO we should be asserting a value in here | |||||
| } | |||||
| // And this one should work | |||||
| scpTask.setRemoteTodir( "user:password@host:/a/path/with/an/at" ); | |||||
| // no exception | |||||
| } | |||||
| public void addCleanup( File file ) { | |||||
| cleanUpList.add( file ); | |||||
| } | |||||
| private void compareFiles(File src, File dest) { | |||||
| FilesMatch match = new FilesMatch(); | |||||
| match.setFile1( src ); | |||||
| match.setFile2( dest ); | |||||
| assertTrue( "Assert files are equal.", match.eval() ); | |||||
| } | |||||
| private File createTemporaryFile() throws IOException { | |||||
| File uploadFile; | |||||
| uploadFile = File.createTempFile( "scp", "test", tempDir ); | |||||
| FileWriter writer = new FileWriter( uploadFile ); | |||||
| writer.write("Can you hear me now?\n"); | |||||
| writer.close(); | |||||
| addCleanup( uploadFile ); | |||||
| return uploadFile; | |||||
| } | |||||
| private Scp createTask() { | |||||
| Scp scp = new Scp(); | |||||
| Project p = new Project(); | |||||
| p.init(); | |||||
| scp.setProject( p ); | |||||
| if( knownHosts != null ) { | |||||
| scp.setKnownhosts( knownHosts ); | |||||
| } else { | |||||
| scp.setTrust( true ); | |||||
| } | |||||
| scp.setPort( port ); | |||||
| return scp; | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.ssh; | |||||
| import java.io.File; | |||||
| import java.io.FileWriter; | |||||
| import java.io.IOException; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.taskdefs.condition.FilesMatch; | |||||
| import org.apache.tools.ant.types.FileSet; | |||||
| import org.apache.tools.ant.types.selectors.FilenameSelector; | |||||
| import org.junit.After; | |||||
| import org.junit.Before; | |||||
| 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; | |||||
| /** | |||||
| * This is a unit test for the Scp task in Ant. It must be | |||||
| * configured with command line options in order for it to work. | |||||
| * Here are the options: | |||||
| * | |||||
| * scp.tmp This is a local path to a temporary | |||||
| * directory for this task to use. | |||||
| * scp.host This is the remote location of the form: | |||||
| * "user:password@host:/path/to/directory" | |||||
| * scp.port The port of the listening SSH service. | |||||
| * Defaults to 22. (optional) | |||||
| * scp.known.hosts The file containing the public keys of known | |||||
| * hosts. Must be a SSH2 version file, but | |||||
| * supports RSA and DSA keys. If it is not present | |||||
| * this task setTrust() to true. (optional) | |||||
| */ | |||||
| public class ScpTest { | |||||
| private File tempDir; | |||||
| private String sshHostUri = System.getProperty("scp.host"); | |||||
| private int port = Integer.parseInt( System.getProperty( "scp.port", "22" ) ); | |||||
| private String knownHosts = System.getProperty("scp.known.hosts"); | |||||
| private List cleanUpList = new ArrayList(); | |||||
| public ScpTest() { | |||||
| if (System.getProperty("scp.tmp") != null) { | |||||
| tempDir = new File(System.getProperty("scp.tmp")); | |||||
| } | |||||
| } | |||||
| @Before | |||||
| public void setUp() { | |||||
| cleanUpList.clear(); | |||||
| } | |||||
| @After | |||||
| public void tearDown() { | |||||
| for( Iterator i = cleanUpList.iterator(); i.hasNext(); ) { | |||||
| File file = (File) i.next(); | |||||
| file.delete(); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testSingleFileUploadAndDownload() throws IOException { | |||||
| assertNotNull("system property scp.tmp must be set", tempDir); | |||||
| File uploadFile = createTemporaryFile(); | |||||
| // upload | |||||
| Scp scpTask = createTask(); | |||||
| scpTask.setFile( uploadFile.getPath() ); | |||||
| scpTask.setTodir( sshHostUri ); | |||||
| scpTask.execute(); | |||||
| File testFile = new File( tempDir.getPath() + File.separator + | |||||
| "download-testSingleFileUploadAndDownload.test" ); | |||||
| addCleanup(testFile ); | |||||
| assertFalse("Assert that the testFile does not exist.", testFile.exists()); | |||||
| // download | |||||
| scpTask = createTask(); | |||||
| scpTask.setFile( sshHostUri + "/" + uploadFile.getName() ); | |||||
| scpTask.setTodir( testFile.getPath() ); | |||||
| scpTask.execute(); | |||||
| assertTrue( "Assert that the testFile exists.", testFile.exists() ); | |||||
| compareFiles( uploadFile, testFile ); | |||||
| } | |||||
| @Test | |||||
| public void testMultiUploadAndDownload() throws IOException { | |||||
| assertNotNull("system property scp.tmp must be set", tempDir); | |||||
| List uploadList = new ArrayList(); | |||||
| for( int i = 0; i < 5; i++ ) { | |||||
| uploadList.add( createTemporaryFile() ); | |||||
| } | |||||
| Scp scp = createTask(); | |||||
| FilenameSelector selector = new FilenameSelector(); | |||||
| selector.setName( "scp*" ); | |||||
| FileSet fileset = new FileSet(); | |||||
| fileset.setDir( tempDir ); | |||||
| fileset.addFilename( selector ); | |||||
| scp.addFileset( fileset ); | |||||
| scp.setTodir( sshHostUri ); | |||||
| scp.execute(); | |||||
| File multi = new File( tempDir, "multi" ); | |||||
| multi.mkdir(); | |||||
| addCleanup( multi ); | |||||
| Scp scp2 = createTask(); | |||||
| scp2.setFile( sshHostUri + "/scp*" ); | |||||
| scp2.setTodir( multi.getPath() ); | |||||
| scp2.execute(); | |||||
| FilesMatch match = new FilesMatch(); | |||||
| for( Iterator i = uploadList.iterator(); i.hasNext(); ) { | |||||
| File f = (File)i.next(); | |||||
| match.setFile1( f ); | |||||
| File f2 = new File( multi, f.getName() ); | |||||
| match.setFile2( f2 ); | |||||
| assertTrue("Assert file '" + f.getPath() + "' and file '" + | |||||
| f2.getPath() + "'", match.eval() ); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testRemoteToDir() throws IOException { | |||||
| Scp scpTask = createTask(); | |||||
| // first try an invalid URI | |||||
| try { | |||||
| scpTask.setRemoteTodir( "host:/a/path/without/an/at" ); | |||||
| fail("Expected a BuildException to be thrown due to invalid" | |||||
| + " remoteToDir"); | |||||
| } | |||||
| catch (BuildException e) | |||||
| { | |||||
| // expected | |||||
| //TODO we should be asserting a value in here | |||||
| } | |||||
| // And this one should work | |||||
| scpTask.setRemoteTodir( "user:password@host:/a/path/with/an/at" ); | |||||
| // no exception | |||||
| } | |||||
| public void addCleanup( File file ) { | |||||
| cleanUpList.add( file ); | |||||
| } | |||||
| private void compareFiles(File src, File dest) { | |||||
| FilesMatch match = new FilesMatch(); | |||||
| match.setFile1( src ); | |||||
| match.setFile2( dest ); | |||||
| assertTrue( "Assert files are equal.", match.eval() ); | |||||
| } | |||||
| private File createTemporaryFile() throws IOException { | |||||
| File uploadFile; | |||||
| uploadFile = File.createTempFile( "scp", "test", tempDir ); | |||||
| FileWriter writer = new FileWriter( uploadFile ); | |||||
| writer.write("Can you hear me now?\n"); | |||||
| writer.close(); | |||||
| addCleanup( uploadFile ); | |||||
| return uploadFile; | |||||
| } | |||||
| private Scp createTask() { | |||||
| Scp scp = new Scp(); | |||||
| Project p = new Project(); | |||||
| p.init(); | |||||
| scp.setProject( p ); | |||||
| if( knownHosts != null ) { | |||||
| scp.setKnownhosts( knownHosts ); | |||||
| } else { | |||||
| scp.setTrust( true ); | |||||
| } | |||||
| scp.setPort( port ); | |||||
| return scp; | |||||
| } | |||||
| } | |||||
| @@ -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,125 @@ | |||||
| /* | |||||
| * 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(); | |||||
| } | |||||
| } | |||||
| @@ -1,239 +1,239 @@ | |||||
| /* | |||||
| * 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.After; | |||||
| 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 java.util.Hashtable; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * FilterSet testing | |||||
| * | |||||
| */ | |||||
| public class FilterSetTest { | |||||
| static private final int BUF_SIZE = 32768; | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/filterset.xml"); | |||||
| } | |||||
| @After | |||||
| public void tearDown() { | |||||
| buildRule.executeTarget("cleanup"); | |||||
| } | |||||
| @Test | |||||
| public void test1() throws IOException { | |||||
| buildRule.executeTarget("test1"); | |||||
| assertTrue("Filterset 1 failed", compareFiles("src/etc/testcases/types/gold/filterset1.txt", | |||||
| "src/etc/testcases/types/dest1.txt")); | |||||
| } | |||||
| @Test | |||||
| public void test2() throws IOException { | |||||
| buildRule.executeTarget("test2"); | |||||
| assertTrue("Filterset 2 failed", compareFiles("src/etc/testcases/types/gold/filterset2.txt", | |||||
| "src/etc/testcases/types/dest2.txt")); | |||||
| } | |||||
| @Test | |||||
| public void test3() throws IOException { | |||||
| buildRule.executeTarget("test3"); | |||||
| assertTrue("Filterset 3 failed", compareFiles("src/etc/testcases/types/gold/filterset3.txt", | |||||
| "src/etc/testcases/types/dest3.txt")); | |||||
| } | |||||
| /** | |||||
| * This will test the recursive FilterSet. Which means that if | |||||
| * the filter value @test@ contains another filter value, it will | |||||
| * actually resolve. | |||||
| */ | |||||
| @Test | |||||
| public void testRecursive() { | |||||
| String result = "it works line"; | |||||
| String line="@test@ line"; | |||||
| FilterSet fs = new FilterSet(); | |||||
| fs.addFilter("test", "@test1@"); | |||||
| fs.addFilter("test1","@test2@"); | |||||
| fs.addFilter("test2", "it works"); | |||||
| fs.setBeginToken("@"); | |||||
| fs.setEndToken("@"); | |||||
| assertEquals(result, fs.replaceTokens(line)); | |||||
| } | |||||
| /** | |||||
| * Test to see what happens when the resolving occurs in an | |||||
| * infinite loop. | |||||
| */ | |||||
| @Test | |||||
| public void testInfinite() { | |||||
| String result = "@test@ line testvalue"; | |||||
| String line = "@test@ line @test3@"; | |||||
| FilterSet fs = new FilterSet(); | |||||
| fs.addFilter("test", "@test1@"); | |||||
| fs.addFilter("test1","@test2@"); | |||||
| fs.addFilter("test2", "@test@"); | |||||
| fs.addFilter("test3", "testvalue"); | |||||
| fs.setBeginToken("@"); | |||||
| fs.setEndToken("@"); | |||||
| assertEquals(result, fs.replaceTokens(line)); | |||||
| } | |||||
| /** | |||||
| * Test to see what happens when the resolving occurs in | |||||
| * what would be an infinite loop, but with recursion disabled. | |||||
| */ | |||||
| @Test | |||||
| public void testRecursionDisabled() { | |||||
| String result = "@test1@ line testvalue"; | |||||
| String line = "@test@ line @test2@"; | |||||
| FilterSet fs = new FilterSet(); | |||||
| fs.addFilter("test", "@test1@"); | |||||
| fs.addFilter("test1","@test@"); | |||||
| fs.addFilter("test2", "testvalue"); | |||||
| fs.setBeginToken("@"); | |||||
| fs.setEndToken("@"); | |||||
| fs.setRecurse(false); | |||||
| assertEquals(result, fs.replaceTokens(line)); | |||||
| } | |||||
| @Test | |||||
| public void testNonInfiniteRecursiveMultipleOnSingleLine() { | |||||
| FilterSet filters = new FilterSet(); | |||||
| filters.setBeginToken("<"); | |||||
| filters.setEndToken(">"); | |||||
| filters.addFilter("ul", "<itemizedlist>"); | |||||
| filters.addFilter("/ul", "</itemizedList>"); | |||||
| filters.addFilter("li", "<listitem>"); | |||||
| filters.addFilter("/li", "</listitem>"); | |||||
| String result = "<itemizedlist><listitem>Item 1</listitem> <listitem>Item 2</listitem></itemizedList>"; | |||||
| String line = "<ul><li>Item 1</li> <li>Item 2</li></ul>"; | |||||
| assertEquals(result, filters.replaceTokens(line)); | |||||
| } | |||||
| @Test | |||||
| public void testNestedFilterSets() { | |||||
| buildRule.executeTarget("test-nested-filtersets"); | |||||
| FilterSet fs = (FilterSet) buildRule.getProject().getReference("1"); | |||||
| Hashtable filters = fs.getFilterHash(); | |||||
| assertEquals(1, filters.size()); | |||||
| assertEquals("value1", filters.get("token1")); | |||||
| fs = (FilterSet) buildRule.getProject().getReference("2"); | |||||
| filters = fs.getFilterHash(); | |||||
| assertEquals(2, filters.size()); | |||||
| assertEquals("1111", filters.get("aaaa")); | |||||
| assertEquals("2222", filters.get("bbbb")); | |||||
| fs = (FilterSet) buildRule.getProject().getReference("3"); | |||||
| filters = fs.getFilterHash(); | |||||
| assertEquals(1, filters.size()); | |||||
| assertEquals("value4", filters.get("token4")); | |||||
| fs = (FilterSet) buildRule.getProject().getReference("5"); | |||||
| filters = fs.getFilterHash(); | |||||
| assertEquals(1, filters.size()); | |||||
| assertEquals("value1", filters.get("token1")); | |||||
| } | |||||
| @Test | |||||
| public void testFiltersFileElement() { | |||||
| buildRule.executeTarget("testFiltersFileElement"); | |||||
| } | |||||
| @Test | |||||
| public void testFiltersFileAttribute() { | |||||
| buildRule.executeTarget("testFiltersFileAttribute"); | |||||
| } | |||||
| @Test | |||||
| public void testMultipleFiltersFiles() { | |||||
| buildRule.executeTarget("testMultipleFiltersFiles"); | |||||
| } | |||||
| @Test | |||||
| public void testMissingFiltersFile() { | |||||
| try { | |||||
| buildRule.executeTarget("testMissingFiltersFile"); | |||||
| fail("should fail due to missing filtersfile"); | |||||
| } catch (BuildException ex) { | |||||
| //TODO assert exception text | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testAllowMissingFiltersFile() { | |||||
| buildRule.executeTarget("testAllowMissingFiltersFile"); | |||||
| } | |||||
| private boolean compareFiles(String name1, String name2) throws IOException { | |||||
| File file1 = new File(System.getProperty("root"), name1); | |||||
| File file2 = new File(System.getProperty("root"), name2); | |||||
| 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.types; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| 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 java.io.FileInputStream; | |||||
| import java.io.IOException; | |||||
| import java.util.Hashtable; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * FilterSet testing | |||||
| * | |||||
| */ | |||||
| public class FilterSetTest { | |||||
| static private final int BUF_SIZE = 32768; | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/filterset.xml"); | |||||
| } | |||||
| @After | |||||
| public void tearDown() { | |||||
| buildRule.executeTarget("cleanup"); | |||||
| } | |||||
| @Test | |||||
| public void test1() throws IOException { | |||||
| buildRule.executeTarget("test1"); | |||||
| assertTrue("Filterset 1 failed", compareFiles("src/etc/testcases/types/gold/filterset1.txt", | |||||
| "src/etc/testcases/types/dest1.txt")); | |||||
| } | |||||
| @Test | |||||
| public void test2() throws IOException { | |||||
| buildRule.executeTarget("test2"); | |||||
| assertTrue("Filterset 2 failed", compareFiles("src/etc/testcases/types/gold/filterset2.txt", | |||||
| "src/etc/testcases/types/dest2.txt")); | |||||
| } | |||||
| @Test | |||||
| public void test3() throws IOException { | |||||
| buildRule.executeTarget("test3"); | |||||
| assertTrue("Filterset 3 failed", compareFiles("src/etc/testcases/types/gold/filterset3.txt", | |||||
| "src/etc/testcases/types/dest3.txt")); | |||||
| } | |||||
| /** | |||||
| * This will test the recursive FilterSet. Which means that if | |||||
| * the filter value @test@ contains another filter value, it will | |||||
| * actually resolve. | |||||
| */ | |||||
| @Test | |||||
| public void testRecursive() { | |||||
| String result = "it works line"; | |||||
| String line="@test@ line"; | |||||
| FilterSet fs = new FilterSet(); | |||||
| fs.addFilter("test", "@test1@"); | |||||
| fs.addFilter("test1","@test2@"); | |||||
| fs.addFilter("test2", "it works"); | |||||
| fs.setBeginToken("@"); | |||||
| fs.setEndToken("@"); | |||||
| assertEquals(result, fs.replaceTokens(line)); | |||||
| } | |||||
| /** | |||||
| * Test to see what happens when the resolving occurs in an | |||||
| * infinite loop. | |||||
| */ | |||||
| @Test | |||||
| public void testInfinite() { | |||||
| String result = "@test@ line testvalue"; | |||||
| String line = "@test@ line @test3@"; | |||||
| FilterSet fs = new FilterSet(); | |||||
| fs.addFilter("test", "@test1@"); | |||||
| fs.addFilter("test1","@test2@"); | |||||
| fs.addFilter("test2", "@test@"); | |||||
| fs.addFilter("test3", "testvalue"); | |||||
| fs.setBeginToken("@"); | |||||
| fs.setEndToken("@"); | |||||
| assertEquals(result, fs.replaceTokens(line)); | |||||
| } | |||||
| /** | |||||
| * Test to see what happens when the resolving occurs in | |||||
| * what would be an infinite loop, but with recursion disabled. | |||||
| */ | |||||
| @Test | |||||
| public void testRecursionDisabled() { | |||||
| String result = "@test1@ line testvalue"; | |||||
| String line = "@test@ line @test2@"; | |||||
| FilterSet fs = new FilterSet(); | |||||
| fs.addFilter("test", "@test1@"); | |||||
| fs.addFilter("test1","@test@"); | |||||
| fs.addFilter("test2", "testvalue"); | |||||
| fs.setBeginToken("@"); | |||||
| fs.setEndToken("@"); | |||||
| fs.setRecurse(false); | |||||
| assertEquals(result, fs.replaceTokens(line)); | |||||
| } | |||||
| @Test | |||||
| public void testNonInfiniteRecursiveMultipleOnSingleLine() { | |||||
| FilterSet filters = new FilterSet(); | |||||
| filters.setBeginToken("<"); | |||||
| filters.setEndToken(">"); | |||||
| filters.addFilter("ul", "<itemizedlist>"); | |||||
| filters.addFilter("/ul", "</itemizedList>"); | |||||
| filters.addFilter("li", "<listitem>"); | |||||
| filters.addFilter("/li", "</listitem>"); | |||||
| String result = "<itemizedlist><listitem>Item 1</listitem> <listitem>Item 2</listitem></itemizedList>"; | |||||
| String line = "<ul><li>Item 1</li> <li>Item 2</li></ul>"; | |||||
| assertEquals(result, filters.replaceTokens(line)); | |||||
| } | |||||
| @Test | |||||
| public void testNestedFilterSets() { | |||||
| buildRule.executeTarget("test-nested-filtersets"); | |||||
| FilterSet fs = (FilterSet) buildRule.getProject().getReference("1"); | |||||
| Hashtable filters = fs.getFilterHash(); | |||||
| assertEquals(1, filters.size()); | |||||
| assertEquals("value1", filters.get("token1")); | |||||
| fs = (FilterSet) buildRule.getProject().getReference("2"); | |||||
| filters = fs.getFilterHash(); | |||||
| assertEquals(2, filters.size()); | |||||
| assertEquals("1111", filters.get("aaaa")); | |||||
| assertEquals("2222", filters.get("bbbb")); | |||||
| fs = (FilterSet) buildRule.getProject().getReference("3"); | |||||
| filters = fs.getFilterHash(); | |||||
| assertEquals(1, filters.size()); | |||||
| assertEquals("value4", filters.get("token4")); | |||||
| fs = (FilterSet) buildRule.getProject().getReference("5"); | |||||
| filters = fs.getFilterHash(); | |||||
| assertEquals(1, filters.size()); | |||||
| assertEquals("value1", filters.get("token1")); | |||||
| } | |||||
| @Test | |||||
| public void testFiltersFileElement() { | |||||
| buildRule.executeTarget("testFiltersFileElement"); | |||||
| } | |||||
| @Test | |||||
| public void testFiltersFileAttribute() { | |||||
| buildRule.executeTarget("testFiltersFileAttribute"); | |||||
| } | |||||
| @Test | |||||
| public void testMultipleFiltersFiles() { | |||||
| buildRule.executeTarget("testMultipleFiltersFiles"); | |||||
| } | |||||
| @Test | |||||
| public void testMissingFiltersFile() { | |||||
| try { | |||||
| buildRule.executeTarget("testMissingFiltersFile"); | |||||
| fail("should fail due to missing filtersfile"); | |||||
| } catch (BuildException ex) { | |||||
| //TODO assert exception text | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testAllowMissingFiltersFile() { | |||||
| buildRule.executeTarget("testAllowMissingFiltersFile"); | |||||
| } | |||||
| private boolean compareFiles(String name1, String name2) throws IOException { | |||||
| File file1 = new File(System.getProperty("root"), name1); | |||||
| File file2 = new File(System.getProperty("root"), name2); | |||||
| 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,74 +1,74 @@ | |||||
| /* | |||||
| * 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.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public class FlexIntegerTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/flexinteger.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testFlexInteger() { | |||||
| buildRule.executeTarget("test"); | |||||
| assertEquals(buildRule.getProject().getProperty("flexint.value1"), "10"); | |||||
| assertEquals(buildRule.getProject().getProperty("flexint.value2"), "8"); | |||||
| } | |||||
| // This class acts as a custom Ant task also | |||||
| // and uses these variables/methods in that mode | |||||
| private Project taskProject; | |||||
| String propName; | |||||
| private FlexInteger value; | |||||
| public void setPropName(String propName) { | |||||
| this.propName = propName; | |||||
| } | |||||
| public void setValue(FlexInteger value) { | |||||
| this.value = value; | |||||
| } | |||||
| public void setProject(Project project) { | |||||
| taskProject = project; | |||||
| } | |||||
| public void execute() { | |||||
| if (propName == null || value == null) { | |||||
| throw new BuildException("name and value required"); | |||||
| } | |||||
| taskProject.setNewProperty(propName, value.toString()); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public class FlexIntegerTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/flexinteger.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testFlexInteger() { | |||||
| buildRule.executeTarget("test"); | |||||
| assertEquals(buildRule.getProject().getProperty("flexint.value1"), "10"); | |||||
| assertEquals(buildRule.getProject().getProperty("flexint.value2"), "8"); | |||||
| } | |||||
| // This class acts as a custom Ant task also | |||||
| // and uses these variables/methods in that mode | |||||
| private Project taskProject; | |||||
| String propName; | |||||
| private FlexInteger value; | |||||
| public void setPropName(String propName) { | |||||
| this.propName = propName; | |||||
| } | |||||
| public void setValue(FlexInteger value) { | |||||
| this.value = value; | |||||
| } | |||||
| public void setProject(Project project) { | |||||
| taskProject = project; | |||||
| } | |||||
| public void execute() { | |||||
| if (propName == null || value == null) { | |||||
| throw new BuildException("name and value required"); | |||||
| } | |||||
| taskProject.setNewProperty(propName, value.toString()); | |||||
| } | |||||
| } | |||||
| @@ -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.types; | |||||
| import java.util.Arrays; | |||||
| import java.util.List; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.util.ChainedMapper; | |||||
| import org.apache.tools.ant.util.FileNameMapper; | |||||
| import org.apache.tools.ant.util.FlatFileNameMapper; | |||||
| import org.apache.tools.ant.util.GlobPatternMapper; | |||||
| import org.apache.tools.ant.util.MergingMapper; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit testcases for org.apache.tools.ant.types.Mapper. | |||||
| * | |||||
| */ | |||||
| public class MapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| private Project project; | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.setBasedir("."); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReference() { | |||||
| Mapper m = new Mapper(project); | |||||
| m.setFrom("*.java"); | |||||
| try { | |||||
| m.setRefid(new Reference(project, "dummyref")); | |||||
| fail("Can add reference to Mapper with from attribute set"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| m = new Mapper(project); | |||||
| m.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| m.setFrom("*.java"); | |||||
| fail("Can set from in Mapper that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| m = new Mapper(project); | |||||
| m.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| m.setTo("*.java"); | |||||
| fail("Can set to in Mapper that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| Mapper.MapperType mt = new Mapper.MapperType(); | |||||
| mt.setValue("glob"); | |||||
| m.setType(mt); | |||||
| fail("Can set type in Mapper 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() { | |||||
| Mapper m = new Mapper(project); | |||||
| project.addReference("dummy", m); | |||||
| m.setRefid(new Reference(project, "dummy")); | |||||
| try { | |||||
| m.getImplementation(); | |||||
| fail("Can make Mapper a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||||
| Mapper m1 = new Mapper(project); | |||||
| project.addReference("dummy1", m1); | |||||
| m1.setRefid(new Reference(project, "dummy2")); | |||||
| Mapper m2 = new Mapper(project); | |||||
| project.addReference("dummy2", m2); | |||||
| m2.setRefid(new Reference(project, "dummy3")); | |||||
| Mapper m3 = new Mapper(project); | |||||
| project.addReference("dummy3", m3); | |||||
| m3.setRefid(new Reference(project, "dummy1")); | |||||
| try { | |||||
| m1.getImplementation(); | |||||
| fail("Can make circular reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 | |||||
| // (which holds a glob mapper from "*.java" to "*.class" | |||||
| m1 = new Mapper(project); | |||||
| project.addReference("dummy1", m1); | |||||
| m1.setRefid(new Reference(project, "dummy2")); | |||||
| m2 = new Mapper(project); | |||||
| project.addReference("dummy2", m2); | |||||
| m2.setRefid(new Reference(project, "dummy3")); | |||||
| m3 = new Mapper(project); | |||||
| project.addReference("dummy3", m3); | |||||
| Mapper.MapperType mt = new Mapper.MapperType(); | |||||
| mt.setValue("glob"); | |||||
| m3.setType(mt); | |||||
| m3.setFrom("*.java"); | |||||
| m3.setTo("*.class"); | |||||
| FileNameMapper fmm = m1.getImplementation(); | |||||
| assertTrue("should be glob", fmm instanceof GlobPatternMapper); | |||||
| String[] result = fmm.mapFileName("a.java"); | |||||
| assertEquals("a.java should match", 1, result.length); | |||||
| assertEquals("a.class", result[0]); | |||||
| } | |||||
| @Test | |||||
| public void testNested() { | |||||
| Mapper mapper1 = new Mapper(project); | |||||
| Mapper.MapperType mt = new Mapper.MapperType(); | |||||
| mt.setValue("glob"); | |||||
| mapper1.setType(mt); | |||||
| mapper1.setFrom("from*"); | |||||
| mapper1.setTo("to*"); | |||||
| //mix element types | |||||
| FileNameMapper mapper2 = new FlatFileNameMapper(); | |||||
| FileNameMapper mapper3 = new MergingMapper(); | |||||
| mapper3.setTo("mergefile"); | |||||
| Mapper container = new Mapper(project); | |||||
| container.addConfiguredMapper(mapper1); | |||||
| container.add(mapper2); | |||||
| container.add(mapper3); | |||||
| FileNameMapper fileNameMapper = container.getImplementation(); | |||||
| String[] targets = fileNameMapper.mapFileName("fromfilename"); | |||||
| assertNotNull("no filenames mapped", targets); | |||||
| assertEquals("wrong number of filenames mapped", 3, targets.length); | |||||
| List list = Arrays.asList(targets); | |||||
| assertTrue("cannot find expected target \"tofilename\"", | |||||
| list.contains("tofilename")); | |||||
| assertTrue("cannot find expected target \"fromfilename\"", | |||||
| list.contains("fromfilename")); | |||||
| assertTrue("cannot find expected target \"mergefile\"", | |||||
| list.contains("mergefile")); | |||||
| } | |||||
| @Test | |||||
| public void testChained() { | |||||
| // a --> b --> c --- def | |||||
| // \-- ghi | |||||
| FileNameMapper mapperAB = new GlobPatternMapper(); | |||||
| mapperAB.setFrom("a"); | |||||
| mapperAB.setTo("b"); | |||||
| FileNameMapper mapperBC = new GlobPatternMapper(); | |||||
| mapperBC.setFrom("b"); | |||||
| mapperBC.setTo("c"); | |||||
| //implicit composite | |||||
| Mapper mapperCX = new Mapper(project); | |||||
| FileNameMapper mapperDEF = new GlobPatternMapper(); | |||||
| mapperDEF.setFrom("c"); | |||||
| mapperDEF.setTo("def"); | |||||
| FileNameMapper mapperGHI = new GlobPatternMapper(); | |||||
| mapperGHI.setFrom("c"); | |||||
| mapperGHI.setTo("ghi"); | |||||
| mapperCX.add(mapperDEF); | |||||
| mapperCX.add(mapperGHI); | |||||
| Mapper chained = new Mapper(project); | |||||
| chained.setClassname(ChainedMapper.class.getName()); | |||||
| chained.add(mapperAB); | |||||
| chained.add(mapperBC); | |||||
| chained.addConfiguredMapper(mapperCX); | |||||
| FileNameMapper fileNameMapper = chained.getImplementation(); | |||||
| String[] targets = fileNameMapper.mapFileName("a"); | |||||
| assertNotNull("no filenames mapped", targets); | |||||
| assertEquals("wrong number of filenames mapped", 2, targets.length); | |||||
| List list = Arrays.asList(targets); | |||||
| assertTrue("cannot find expected target \"def\"", list.contains("def")); | |||||
| assertTrue("cannot find expected target \"ghi\"", list.contains("ghi")); | |||||
| } | |||||
| @Test | |||||
| public void testCopyTaskWithTwoFilesets() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mapper.xml"); | |||||
| buildRule.executeTarget("test1"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.util.Arrays; | |||||
| import java.util.List; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.util.ChainedMapper; | |||||
| import org.apache.tools.ant.util.FileNameMapper; | |||||
| import org.apache.tools.ant.util.FlatFileNameMapper; | |||||
| import org.apache.tools.ant.util.GlobPatternMapper; | |||||
| import org.apache.tools.ant.util.MergingMapper; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit testcases for org.apache.tools.ant.types.Mapper. | |||||
| * | |||||
| */ | |||||
| public class MapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| private Project project; | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.setBasedir("."); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReference() { | |||||
| Mapper m = new Mapper(project); | |||||
| m.setFrom("*.java"); | |||||
| try { | |||||
| m.setRefid(new Reference(project, "dummyref")); | |||||
| fail("Can add reference to Mapper with from attribute set"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| m = new Mapper(project); | |||||
| m.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| m.setFrom("*.java"); | |||||
| fail("Can set from in Mapper that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| m = new Mapper(project); | |||||
| m.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| m.setTo("*.java"); | |||||
| fail("Can set to in Mapper that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| Mapper.MapperType mt = new Mapper.MapperType(); | |||||
| mt.setValue("glob"); | |||||
| m.setType(mt); | |||||
| fail("Can set type in Mapper 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() { | |||||
| Mapper m = new Mapper(project); | |||||
| project.addReference("dummy", m); | |||||
| m.setRefid(new Reference(project, "dummy")); | |||||
| try { | |||||
| m.getImplementation(); | |||||
| fail("Can make Mapper a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||||
| Mapper m1 = new Mapper(project); | |||||
| project.addReference("dummy1", m1); | |||||
| m1.setRefid(new Reference(project, "dummy2")); | |||||
| Mapper m2 = new Mapper(project); | |||||
| project.addReference("dummy2", m2); | |||||
| m2.setRefid(new Reference(project, "dummy3")); | |||||
| Mapper m3 = new Mapper(project); | |||||
| project.addReference("dummy3", m3); | |||||
| m3.setRefid(new Reference(project, "dummy1")); | |||||
| try { | |||||
| m1.getImplementation(); | |||||
| fail("Can make circular reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 | |||||
| // (which holds a glob mapper from "*.java" to "*.class" | |||||
| m1 = new Mapper(project); | |||||
| project.addReference("dummy1", m1); | |||||
| m1.setRefid(new Reference(project, "dummy2")); | |||||
| m2 = new Mapper(project); | |||||
| project.addReference("dummy2", m2); | |||||
| m2.setRefid(new Reference(project, "dummy3")); | |||||
| m3 = new Mapper(project); | |||||
| project.addReference("dummy3", m3); | |||||
| Mapper.MapperType mt = new Mapper.MapperType(); | |||||
| mt.setValue("glob"); | |||||
| m3.setType(mt); | |||||
| m3.setFrom("*.java"); | |||||
| m3.setTo("*.class"); | |||||
| FileNameMapper fmm = m1.getImplementation(); | |||||
| assertTrue("should be glob", fmm instanceof GlobPatternMapper); | |||||
| String[] result = fmm.mapFileName("a.java"); | |||||
| assertEquals("a.java should match", 1, result.length); | |||||
| assertEquals("a.class", result[0]); | |||||
| } | |||||
| @Test | |||||
| public void testNested() { | |||||
| Mapper mapper1 = new Mapper(project); | |||||
| Mapper.MapperType mt = new Mapper.MapperType(); | |||||
| mt.setValue("glob"); | |||||
| mapper1.setType(mt); | |||||
| mapper1.setFrom("from*"); | |||||
| mapper1.setTo("to*"); | |||||
| //mix element types | |||||
| FileNameMapper mapper2 = new FlatFileNameMapper(); | |||||
| FileNameMapper mapper3 = new MergingMapper(); | |||||
| mapper3.setTo("mergefile"); | |||||
| Mapper container = new Mapper(project); | |||||
| container.addConfiguredMapper(mapper1); | |||||
| container.add(mapper2); | |||||
| container.add(mapper3); | |||||
| FileNameMapper fileNameMapper = container.getImplementation(); | |||||
| String[] targets = fileNameMapper.mapFileName("fromfilename"); | |||||
| assertNotNull("no filenames mapped", targets); | |||||
| assertEquals("wrong number of filenames mapped", 3, targets.length); | |||||
| List list = Arrays.asList(targets); | |||||
| assertTrue("cannot find expected target \"tofilename\"", | |||||
| list.contains("tofilename")); | |||||
| assertTrue("cannot find expected target \"fromfilename\"", | |||||
| list.contains("fromfilename")); | |||||
| assertTrue("cannot find expected target \"mergefile\"", | |||||
| list.contains("mergefile")); | |||||
| } | |||||
| @Test | |||||
| public void testChained() { | |||||
| // a --> b --> c --- def | |||||
| // \-- ghi | |||||
| FileNameMapper mapperAB = new GlobPatternMapper(); | |||||
| mapperAB.setFrom("a"); | |||||
| mapperAB.setTo("b"); | |||||
| FileNameMapper mapperBC = new GlobPatternMapper(); | |||||
| mapperBC.setFrom("b"); | |||||
| mapperBC.setTo("c"); | |||||
| //implicit composite | |||||
| Mapper mapperCX = new Mapper(project); | |||||
| FileNameMapper mapperDEF = new GlobPatternMapper(); | |||||
| mapperDEF.setFrom("c"); | |||||
| mapperDEF.setTo("def"); | |||||
| FileNameMapper mapperGHI = new GlobPatternMapper(); | |||||
| mapperGHI.setFrom("c"); | |||||
| mapperGHI.setTo("ghi"); | |||||
| mapperCX.add(mapperDEF); | |||||
| mapperCX.add(mapperGHI); | |||||
| Mapper chained = new Mapper(project); | |||||
| chained.setClassname(ChainedMapper.class.getName()); | |||||
| chained.add(mapperAB); | |||||
| chained.add(mapperBC); | |||||
| chained.addConfiguredMapper(mapperCX); | |||||
| FileNameMapper fileNameMapper = chained.getImplementation(); | |||||
| String[] targets = fileNameMapper.mapFileName("a"); | |||||
| assertNotNull("no filenames mapped", targets); | |||||
| assertEquals("wrong number of filenames mapped", 2, targets.length); | |||||
| List list = Arrays.asList(targets); | |||||
| assertTrue("cannot find expected target \"def\"", list.contains("def")); | |||||
| assertTrue("cannot find expected target \"ghi\"", list.contains("ghi")); | |||||
| } | |||||
| @Test | |||||
| public void testCopyTaskWithTwoFilesets() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mapper.xml"); | |||||
| buildRule.executeTarget("test1"); | |||||
| } | |||||
| } | |||||
| @@ -1,206 +1,206 @@ | |||||
| /* | |||||
| * 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.Project; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.PatternSet. | |||||
| * | |||||
| * <p>This doesn't actually test much, mainly reference handling.</p> | |||||
| * | |||||
| */ | |||||
| public class PatternSetTest { | |||||
| private Project project; | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.setBasedir("."); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReference() { | |||||
| PatternSet p = new PatternSet(); | |||||
| p.setIncludes("**/*.java"); | |||||
| try { | |||||
| p.setRefid(new Reference(project, "dummyref")); | |||||
| fail("Can add reference to PatternSet with elements from setIncludes"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| p = new PatternSet(); | |||||
| p.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| p.setIncludes("**/*.java"); | |||||
| fail("Can set includes in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| p = new PatternSet(); | |||||
| p.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| p.setIncludesfile(new File("/a")); | |||||
| fail("Can set includesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.setExcludes("**/*.java"); | |||||
| fail("Can set excludes in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.setExcludesfile(new File("/a")); | |||||
| fail("Can set excludesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createInclude(); | |||||
| fail("Can add nested include in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createExclude(); | |||||
| fail("Can add nested exclude in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createIncludesFile(); | |||||
| fail("Can add nested includesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createExcludesFile(); | |||||
| fail("Can add nested excludesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testCircularReferenceCheck() { | |||||
| PatternSet p = new PatternSet(); | |||||
| project.addReference("dummy", p); | |||||
| p.setRefid(new Reference(project, "dummy")); | |||||
| try { | |||||
| p.getIncludePatterns(project); | |||||
| fail("Can make PatternSet a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.getExcludePatterns(project); | |||||
| fail("Can make PatternSet a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||||
| PatternSet p1 = new PatternSet(); | |||||
| project.addReference("dummy1", p1); | |||||
| p1.setRefid(new Reference(project, "dummy2")); | |||||
| PatternSet p2 = new PatternSet(); | |||||
| project.addReference("dummy2", p2); | |||||
| p2.setRefid(new Reference(project, "dummy3")); | |||||
| PatternSet p3 = new PatternSet(); | |||||
| project.addReference("dummy3", p3); | |||||
| p3.setRefid(new Reference(project, "dummy1")); | |||||
| try { | |||||
| p1.getIncludePatterns(project); | |||||
| fail("Can make circular reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p1.getExcludePatterns(project); | |||||
| fail("Can make circular reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 | |||||
| // (which holds patterns "include" and "exclude") | |||||
| p1 = new PatternSet(); | |||||
| project.addReference("dummy1", p1); | |||||
| p1.setRefid(new Reference(project, "dummy2")); | |||||
| p2 = new PatternSet(); | |||||
| project.addReference("dummy2", p2); | |||||
| p2.setRefid(new Reference(project, "dummy3")); | |||||
| p3 = new PatternSet(); | |||||
| project.addReference("dummy3", p3); | |||||
| p3.setIncludes("include"); | |||||
| p3.createExclude().setName("exclude"); | |||||
| String[] i = p1.getIncludePatterns(project); | |||||
| assertEquals("One include pattern buried deep inside a nested patternset structure", | |||||
| 1, i.length); | |||||
| assertEquals("include", i[0]); | |||||
| i = p3.getExcludePatterns(project); | |||||
| assertEquals("One exclude pattern buried deep inside a nested patternset structure", | |||||
| 1, i.length); | |||||
| assertEquals("exclude", i[0]); | |||||
| } | |||||
| @Test | |||||
| public void testNestedPatternset() { | |||||
| PatternSet p = new PatternSet(); | |||||
| p.setIncludes("**/*.java"); | |||||
| PatternSet nested = new PatternSet(); | |||||
| nested.setExcludes("**/*.class"); | |||||
| p.addConfiguredPatternset(nested); | |||||
| String[] excludes = p.getExcludePatterns(project); | |||||
| String[] includes = p.getIncludePatterns(project); | |||||
| assertEquals("Includes","**/*.java", includes[0]); | |||||
| assertEquals("Excludes","**/*.class", excludes[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.types; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.PatternSet. | |||||
| * | |||||
| * <p>This doesn't actually test much, mainly reference handling.</p> | |||||
| * | |||||
| */ | |||||
| public class PatternSetTest { | |||||
| private Project project; | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.setBasedir("."); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReference() { | |||||
| PatternSet p = new PatternSet(); | |||||
| p.setIncludes("**/*.java"); | |||||
| try { | |||||
| p.setRefid(new Reference(project, "dummyref")); | |||||
| fail("Can add reference to PatternSet with elements from setIncludes"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| p = new PatternSet(); | |||||
| p.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| p.setIncludes("**/*.java"); | |||||
| fail("Can set includes in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| p = new PatternSet(); | |||||
| p.setRefid(new Reference(project, "dummyref")); | |||||
| try { | |||||
| p.setIncludesfile(new File("/a")); | |||||
| fail("Can set includesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.setExcludes("**/*.java"); | |||||
| fail("Can set excludes in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.setExcludesfile(new File("/a")); | |||||
| fail("Can set excludesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createInclude(); | |||||
| fail("Can add nested include in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createExclude(); | |||||
| fail("Can add nested exclude in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createIncludesFile(); | |||||
| fail("Can add nested includesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.createExcludesFile(); | |||||
| fail("Can add nested excludesfile in PatternSet that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testCircularReferenceCheck() { | |||||
| PatternSet p = new PatternSet(); | |||||
| project.addReference("dummy", p); | |||||
| p.setRefid(new Reference(project, "dummy")); | |||||
| try { | |||||
| p.getIncludePatterns(project); | |||||
| fail("Can make PatternSet a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p.getExcludePatterns(project); | |||||
| fail("Can make PatternSet a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 --> dummy1 | |||||
| PatternSet p1 = new PatternSet(); | |||||
| project.addReference("dummy1", p1); | |||||
| p1.setRefid(new Reference(project, "dummy2")); | |||||
| PatternSet p2 = new PatternSet(); | |||||
| project.addReference("dummy2", p2); | |||||
| p2.setRefid(new Reference(project, "dummy3")); | |||||
| PatternSet p3 = new PatternSet(); | |||||
| project.addReference("dummy3", p3); | |||||
| p3.setRefid(new Reference(project, "dummy1")); | |||||
| try { | |||||
| p1.getIncludePatterns(project); | |||||
| fail("Can make circular reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| try { | |||||
| p1.getExcludePatterns(project); | |||||
| fail("Can make circular reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| // dummy1 --> dummy2 --> dummy3 | |||||
| // (which holds patterns "include" and "exclude") | |||||
| p1 = new PatternSet(); | |||||
| project.addReference("dummy1", p1); | |||||
| p1.setRefid(new Reference(project, "dummy2")); | |||||
| p2 = new PatternSet(); | |||||
| project.addReference("dummy2", p2); | |||||
| p2.setRefid(new Reference(project, "dummy3")); | |||||
| p3 = new PatternSet(); | |||||
| project.addReference("dummy3", p3); | |||||
| p3.setIncludes("include"); | |||||
| p3.createExclude().setName("exclude"); | |||||
| String[] i = p1.getIncludePatterns(project); | |||||
| assertEquals("One include pattern buried deep inside a nested patternset structure", | |||||
| 1, i.length); | |||||
| assertEquals("include", i[0]); | |||||
| i = p3.getExcludePatterns(project); | |||||
| assertEquals("One exclude pattern buried deep inside a nested patternset structure", | |||||
| 1, i.length); | |||||
| assertEquals("exclude", i[0]); | |||||
| } | |||||
| @Test | |||||
| public void testNestedPatternset() { | |||||
| PatternSet p = new PatternSet(); | |||||
| p.setIncludes("**/*.java"); | |||||
| PatternSet nested = new PatternSet(); | |||||
| nested.setExcludes("**/*.class"); | |||||
| p.addConfiguredPatternset(nested); | |||||
| String[] excludes = p.getExcludePatterns(project); | |||||
| String[] includes = p.getIncludePatterns(project); | |||||
| assertEquals("Includes","**/*.java", includes[0]); | |||||
| assertEquals("Excludes","**/*.class", excludes[0]); | |||||
| } | |||||
| } | |||||
| @@ -1,158 +1,158 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.ExitException; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.Permissions. | |||||
| * | |||||
| */ | |||||
| public class PermissionsTest { | |||||
| Permissions perms; | |||||
| @Before | |||||
| public void setUp() { | |||||
| perms = new Permissions(); | |||||
| Permissions.Permission perm = new Permissions.Permission(); | |||||
| // Grant extra permissions to read and write the user.* properties and read to the | |||||
| // java.home property | |||||
| perm.setActions("read, write"); | |||||
| perm.setName("user.*"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredGrant(perm); | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("read"); | |||||
| perm.setName("java.home"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredGrant(perm); | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("read"); | |||||
| perm.setName("file.encoding"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredGrant(perm); | |||||
| // Revoke permission to write user.home (granted above via user.*), still able to read though. | |||||
| // and the default granted permission to read os.name. | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("write"); | |||||
| perm.setName("user.home"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredRevoke(perm); | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("read"); | |||||
| perm.setName("os.*"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredRevoke(perm); | |||||
| } | |||||
| /** Tests a permission that is granted per default. */ | |||||
| @Test | |||||
| public void testDefaultGranted() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.getProperty("line.separator"); | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that has been granted later via wildcard. */ | |||||
| @Test | |||||
| public void testGranted() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| String s = System.getProperty("user.name"); | |||||
| System.setProperty("user.name", s); | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that has been granted and revoked later. */ | |||||
| @Test | |||||
| public void testGrantedAndRevoked() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| String s = System.getProperty("user.home"); | |||||
| System.setProperty("user.home", s); | |||||
| fail("Could perform an action that should have been forbidden."); | |||||
| } catch (SecurityException e){ | |||||
| // Was expected, test passes | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that is granted as per default but revoked later via wildcard. */ | |||||
| @Test | |||||
| public void testDefaultRevoked() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.getProperty("os.name"); | |||||
| fail("Could perform an action that should have been forbidden."); | |||||
| } catch (SecurityException e){ | |||||
| // Was expected, test passes | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that has not been granted or revoked. */ | |||||
| @Test | |||||
| public void testOther() { | |||||
| String ls = System.getProperty("line.separator"); | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.setProperty("line.separator",ls); | |||||
| fail("Could perform an action that should have been forbidden."); | |||||
| } catch (SecurityException e){ | |||||
| //TODO assert exception message | |||||
| // Was expected, test passes | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests an exit condition. */ | |||||
| @Test | |||||
| public void testExit() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.out.println("If this is the last line on standard out the testExit f.a.i.l.e.d"); | |||||
| System.exit(3); | |||||
| fail("Totaly impossible that this fail is ever executed. Please let me know if it is!"); | |||||
| } catch (ExitException e) { | |||||
| if (e.getStatus() != 3) { | |||||
| fail("Received wrong exit status in Exit Exception."); | |||||
| } | |||||
| System.out.println("testExit successful."); | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.ExitException; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.Permissions. | |||||
| * | |||||
| */ | |||||
| public class PermissionsTest { | |||||
| Permissions perms; | |||||
| @Before | |||||
| public void setUp() { | |||||
| perms = new Permissions(); | |||||
| Permissions.Permission perm = new Permissions.Permission(); | |||||
| // Grant extra permissions to read and write the user.* properties and read to the | |||||
| // java.home property | |||||
| perm.setActions("read, write"); | |||||
| perm.setName("user.*"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredGrant(perm); | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("read"); | |||||
| perm.setName("java.home"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredGrant(perm); | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("read"); | |||||
| perm.setName("file.encoding"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredGrant(perm); | |||||
| // Revoke permission to write user.home (granted above via user.*), still able to read though. | |||||
| // and the default granted permission to read os.name. | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("write"); | |||||
| perm.setName("user.home"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredRevoke(perm); | |||||
| perm = new Permissions.Permission(); | |||||
| perm.setActions("read"); | |||||
| perm.setName("os.*"); | |||||
| perm.setClass("java.util.PropertyPermission"); | |||||
| perms.addConfiguredRevoke(perm); | |||||
| } | |||||
| /** Tests a permission that is granted per default. */ | |||||
| @Test | |||||
| public void testDefaultGranted() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.getProperty("line.separator"); | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that has been granted later via wildcard. */ | |||||
| @Test | |||||
| public void testGranted() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| String s = System.getProperty("user.name"); | |||||
| System.setProperty("user.name", s); | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that has been granted and revoked later. */ | |||||
| @Test | |||||
| public void testGrantedAndRevoked() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| String s = System.getProperty("user.home"); | |||||
| System.setProperty("user.home", s); | |||||
| fail("Could perform an action that should have been forbidden."); | |||||
| } catch (SecurityException e){ | |||||
| // Was expected, test passes | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that is granted as per default but revoked later via wildcard. */ | |||||
| @Test | |||||
| public void testDefaultRevoked() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.getProperty("os.name"); | |||||
| fail("Could perform an action that should have been forbidden."); | |||||
| } catch (SecurityException e){ | |||||
| // Was expected, test passes | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests a permission that has not been granted or revoked. */ | |||||
| @Test | |||||
| public void testOther() { | |||||
| String ls = System.getProperty("line.separator"); | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.setProperty("line.separator",ls); | |||||
| fail("Could perform an action that should have been forbidden."); | |||||
| } catch (SecurityException e){ | |||||
| //TODO assert exception message | |||||
| // Was expected, test passes | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| /** Tests an exit condition. */ | |||||
| @Test | |||||
| public void testExit() { | |||||
| perms.setSecurityManager(); | |||||
| try { | |||||
| System.out.println("If this is the last line on standard out the testExit f.a.i.l.e.d"); | |||||
| System.exit(3); | |||||
| fail("Totaly impossible that this fail is ever executed. Please let me know if it is!"); | |||||
| } catch (ExitException e) { | |||||
| if (e.getStatus() != 3) { | |||||
| fail("Received wrong exit status in Exit Exception."); | |||||
| } | |||||
| System.out.println("testExit successful."); | |||||
| } finally { | |||||
| perms.restoreSecurityManager(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,79 +1,79 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.AntAssert; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.Task; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| public class PolyTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/poly.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testFileSet() { | |||||
| buildRule.executeTarget("fileset"); | |||||
| AntAssert.assertContains( "types.FileSet", buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testFileSetAntType() { | |||||
| buildRule.executeTarget("fileset-ant-type"); | |||||
| AntAssert.assertContains("types.PolyTest$MyFileSet", buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testPath() { | |||||
| buildRule.executeTarget("path"); | |||||
| AntAssert.assertContains( "types.Path", buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testPathAntType() { | |||||
| buildRule.executeTarget("path-ant-type"); | |||||
| AntAssert.assertContains( "types.PolyTest$MyPath", buildRule.getLog()); | |||||
| } | |||||
| public static class MyFileSet extends FileSet {} | |||||
| public static class MyPath extends Path { | |||||
| public MyPath(Project project) { | |||||
| super(project); | |||||
| } | |||||
| } | |||||
| public static class MyTask extends Task { | |||||
| public void addPath(Path path) { | |||||
| log("class of path is " + path.getClass()); | |||||
| } | |||||
| public void addFileset(FileSet fileset) { | |||||
| log("class of fileset is " + fileset.getClass()); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.AntAssert; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.Task; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| public class PolyTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/poly.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testFileSet() { | |||||
| buildRule.executeTarget("fileset"); | |||||
| AntAssert.assertContains( "types.FileSet", buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testFileSetAntType() { | |||||
| buildRule.executeTarget("fileset-ant-type"); | |||||
| AntAssert.assertContains("types.PolyTest$MyFileSet", buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testPath() { | |||||
| buildRule.executeTarget("path"); | |||||
| AntAssert.assertContains( "types.Path", buildRule.getLog()); | |||||
| } | |||||
| @Test | |||||
| public void testPathAntType() { | |||||
| buildRule.executeTarget("path-ant-type"); | |||||
| AntAssert.assertContains( "types.PolyTest$MyPath", buildRule.getLog()); | |||||
| } | |||||
| public static class MyFileSet extends FileSet {} | |||||
| public static class MyPath extends Path { | |||||
| public MyPath(Project project) { | |||||
| super(project); | |||||
| } | |||||
| } | |||||
| public static class MyTask extends Task { | |||||
| public void addPath(Path path) { | |||||
| log("class of path is " + path.getClass()); | |||||
| } | |||||
| public void addFileset(FileSet fileset) { | |||||
| log("class of fileset is " + fileset.getClass()); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,86 +1,86 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.AntAssert; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| public class RedirectorElementTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/redirector.xml", Project.MSG_VERBOSE); | |||||
| } | |||||
| @Test | |||||
| public void test1() { | |||||
| buildRule.executeTarget("test1"); | |||||
| assertTrue((buildRule.getProject().<Object> getReference("test1") | |||||
| instanceof RedirectorElement)); | |||||
| } | |||||
| @Test | |||||
| public void test2() { | |||||
| try { | |||||
| buildRule.executeTarget("test2"); | |||||
| fail("You must not specify more than one attribute when using refid"); | |||||
| } catch (BuildException ex) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void test3() { | |||||
| try { | |||||
| buildRule.executeTarget("test3"); | |||||
| fail("You must not specify nested elements when using refid"); | |||||
| } catch (BuildException ex) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void test4() { | |||||
| buildRule.executeTarget("test4"); | |||||
| } | |||||
| @Test | |||||
| public void testLogInputString() { | |||||
| buildRule.executeTarget("testLogInputString"); | |||||
| if (buildRule.getLog().indexOf("testLogInputString can-cat") >=0 ) { | |||||
| AntAssert.assertContains("Using input string", buildRule.getFullLog()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testRefid() { | |||||
| buildRule.executeTarget("testRefid"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.AntAssert; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| public class RedirectorElementTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/redirector.xml", Project.MSG_VERBOSE); | |||||
| } | |||||
| @Test | |||||
| public void test1() { | |||||
| buildRule.executeTarget("test1"); | |||||
| assertTrue((buildRule.getProject().<Object> getReference("test1") | |||||
| instanceof RedirectorElement)); | |||||
| } | |||||
| @Test | |||||
| public void test2() { | |||||
| try { | |||||
| buildRule.executeTarget("test2"); | |||||
| fail("You must not specify more than one attribute when using refid"); | |||||
| } catch (BuildException ex) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void test3() { | |||||
| try { | |||||
| buildRule.executeTarget("test3"); | |||||
| fail("You must not specify nested elements when using refid"); | |||||
| } catch (BuildException ex) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void test4() { | |||||
| buildRule.executeTarget("test4"); | |||||
| } | |||||
| @Test | |||||
| public void testLogInputString() { | |||||
| buildRule.executeTarget("testLogInputString"); | |||||
| if (buildRule.getLog().indexOf("testLogInputString can-cat") >=0 ) { | |||||
| AntAssert.assertContains("Using input string", buildRule.getFullLog()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testRefid() { | |||||
| buildRule.executeTarget("testRefid"); | |||||
| } | |||||
| } | |||||
| @@ -1,160 +1,160 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import java.net.UnknownServiceException; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.taskdefs.Zip; | |||||
| import org.apache.tools.ant.types.resources.ImmutableResourceException; | |||||
| import org.apache.tools.ant.types.resources.PropertyResource; | |||||
| import org.apache.tools.ant.types.resources.StringResource; | |||||
| import org.apache.tools.ant.types.resources.URLResource; | |||||
| import org.apache.tools.ant.types.resources.ZipResource; | |||||
| import org.apache.tools.ant.util.FileUtils; | |||||
| import org.apache.tools.ant.util.ResourceUtils; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| public class ResourceOutputTest { | |||||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
| private static final File basedir = new File(System.getProperty("root"), | |||||
| "src/etc/testcases/types/resources"); | |||||
| private Project project; | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.init(); | |||||
| project.setUserProperty("basedir" , basedir.getAbsolutePath()); | |||||
| } | |||||
| @Test | |||||
| public void testresourceoutput() { | |||||
| try { | |||||
| testoutputbe(new Resource("foo")); | |||||
| fail("should have caught UnsupportedOperationException"); | |||||
| } catch (UnsupportedOperationException e) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void teststringoutput1() { | |||||
| StringResource r = new StringResource(); | |||||
| testoutputbe(r); | |||||
| assertEquals("foo", r.getValue()); | |||||
| } | |||||
| @Test | |||||
| public void teststringoutput2() throws IOException { | |||||
| StringResource r = new StringResource("bar"); | |||||
| try { | |||||
| testoutput(r); | |||||
| fail("should have caught ImmutableResourceException"); | |||||
| } catch (ImmutableResourceException e) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| assertEquals("bar", r.getValue()); | |||||
| } | |||||
| @Test | |||||
| public void testpropertyoutput1() { | |||||
| PropertyResource r = new PropertyResource(project, "bar"); | |||||
| testoutputbe(r); | |||||
| assertEquals("foo", project.getProperty("bar")); | |||||
| } | |||||
| @Test | |||||
| public void testpropertyoutput2() throws IOException { | |||||
| project.setNewProperty("bar", "bar"); | |||||
| PropertyResource r = new PropertyResource(project, "bar"); | |||||
| try { | |||||
| testoutput(r); | |||||
| fail("should have caught ImmutableResourceException"); | |||||
| } catch (ImmutableResourceException e) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| assertEquals("bar", project.getProperty("bar")); | |||||
| } | |||||
| @Test | |||||
| public void testurloutput() throws IOException { | |||||
| File f = project.resolveFile("testurloutput"); | |||||
| try { | |||||
| FILE_UTILS.createNewFile(f); | |||||
| testoutput(new URLResource(f)); | |||||
| fail("should have caught UnknownServiceException"); | |||||
| } catch (UnknownServiceException e) { | |||||
| //TODO assert exception message | |||||
| } finally { | |||||
| if (!f.delete()) { | |||||
| f.deleteOnExit(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testzipentryoutput() { | |||||
| Zip z = new Zip(); | |||||
| z.setProject(project); | |||||
| Zip.WhenEmpty create = new Zip.WhenEmpty(); | |||||
| create.setValue("create"); | |||||
| z.setWhenempty(create); | |||||
| z.setBasedir(basedir); | |||||
| z.setExcludes("**/*"); | |||||
| File f = project.resolveFile("foo"); | |||||
| z.setDestFile(f); | |||||
| z.execute(); | |||||
| ZipResource r = new ZipResource(); | |||||
| r.setZipfile(f); | |||||
| r.setName("foo"); | |||||
| try { | |||||
| testoutputbe(r); | |||||
| fail("should have caught UnsupportedOperationException"); | |||||
| } catch (UnsupportedOperationException e) { | |||||
| //TODO assert exception message | |||||
| } finally { | |||||
| if (!f.delete()) { | |||||
| f.deleteOnExit(); | |||||
| } | |||||
| } | |||||
| } | |||||
| private void testoutputbe(Resource dest) { | |||||
| try { | |||||
| testoutput(dest); | |||||
| } catch (IOException e) { | |||||
| throw new BuildException(e); | |||||
| } | |||||
| } | |||||
| private void testoutput(Resource dest) throws IOException { | |||||
| ResourceUtils.copyResource(new StringResource("foo"), dest, null); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import java.net.UnknownServiceException; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.taskdefs.Zip; | |||||
| import org.apache.tools.ant.types.resources.ImmutableResourceException; | |||||
| import org.apache.tools.ant.types.resources.PropertyResource; | |||||
| import org.apache.tools.ant.types.resources.StringResource; | |||||
| import org.apache.tools.ant.types.resources.URLResource; | |||||
| import org.apache.tools.ant.types.resources.ZipResource; | |||||
| import org.apache.tools.ant.util.FileUtils; | |||||
| import org.apache.tools.ant.util.ResourceUtils; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| public class ResourceOutputTest { | |||||
| private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
| private static final File basedir = new File(System.getProperty("root"), | |||||
| "src/etc/testcases/types/resources"); | |||||
| private Project project; | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.init(); | |||||
| project.setUserProperty("basedir" , basedir.getAbsolutePath()); | |||||
| } | |||||
| @Test | |||||
| public void testresourceoutput() { | |||||
| try { | |||||
| testoutputbe(new Resource("foo")); | |||||
| fail("should have caught UnsupportedOperationException"); | |||||
| } catch (UnsupportedOperationException e) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void teststringoutput1() { | |||||
| StringResource r = new StringResource(); | |||||
| testoutputbe(r); | |||||
| assertEquals("foo", r.getValue()); | |||||
| } | |||||
| @Test | |||||
| public void teststringoutput2() throws IOException { | |||||
| StringResource r = new StringResource("bar"); | |||||
| try { | |||||
| testoutput(r); | |||||
| fail("should have caught ImmutableResourceException"); | |||||
| } catch (ImmutableResourceException e) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| assertEquals("bar", r.getValue()); | |||||
| } | |||||
| @Test | |||||
| public void testpropertyoutput1() { | |||||
| PropertyResource r = new PropertyResource(project, "bar"); | |||||
| testoutputbe(r); | |||||
| assertEquals("foo", project.getProperty("bar")); | |||||
| } | |||||
| @Test | |||||
| public void testpropertyoutput2() throws IOException { | |||||
| project.setNewProperty("bar", "bar"); | |||||
| PropertyResource r = new PropertyResource(project, "bar"); | |||||
| try { | |||||
| testoutput(r); | |||||
| fail("should have caught ImmutableResourceException"); | |||||
| } catch (ImmutableResourceException e) { | |||||
| //TODO assert exception message | |||||
| } | |||||
| assertEquals("bar", project.getProperty("bar")); | |||||
| } | |||||
| @Test | |||||
| public void testurloutput() throws IOException { | |||||
| File f = project.resolveFile("testurloutput"); | |||||
| try { | |||||
| FILE_UTILS.createNewFile(f); | |||||
| testoutput(new URLResource(f)); | |||||
| fail("should have caught UnknownServiceException"); | |||||
| } catch (UnknownServiceException e) { | |||||
| //TODO assert exception message | |||||
| } finally { | |||||
| if (!f.delete()) { | |||||
| f.deleteOnExit(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testzipentryoutput() { | |||||
| Zip z = new Zip(); | |||||
| z.setProject(project); | |||||
| Zip.WhenEmpty create = new Zip.WhenEmpty(); | |||||
| create.setValue("create"); | |||||
| z.setWhenempty(create); | |||||
| z.setBasedir(basedir); | |||||
| z.setExcludes("**/*"); | |||||
| File f = project.resolveFile("foo"); | |||||
| z.setDestFile(f); | |||||
| z.execute(); | |||||
| ZipResource r = new ZipResource(); | |||||
| r.setZipfile(f); | |||||
| r.setName("foo"); | |||||
| try { | |||||
| testoutputbe(r); | |||||
| fail("should have caught UnsupportedOperationException"); | |||||
| } catch (UnsupportedOperationException e) { | |||||
| //TODO assert exception message | |||||
| } finally { | |||||
| if (!f.delete()) { | |||||
| f.deleteOnExit(); | |||||
| } | |||||
| } | |||||
| } | |||||
| private void testoutputbe(Resource dest) { | |||||
| try { | |||||
| testoutput(dest); | |||||
| } catch (IOException e) { | |||||
| throw new BuildException(e); | |||||
| } | |||||
| } | |||||
| private void testoutput(Resource dest) throws IOException { | |||||
| ResourceUtils.copyResource(new StringResource("foo"), dest, null); | |||||
| } | |||||
| } | |||||
| @@ -1,119 +1,119 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.TarFileSet. | |||||
| * | |||||
| * <p>This doesn't actually test much, mainly reference handling. | |||||
| * | |||||
| */ | |||||
| public class TarFileSetTest extends AbstractFileSetTest { | |||||
| protected AbstractFileSet getInstance() { | |||||
| return new TarFileSet(); | |||||
| } | |||||
| @Test | |||||
| public final void testAttributes() { | |||||
| TarFileSet f = (TarFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setSrc(new File("example.tar")); | |||||
| try { | |||||
| f.setDir(new File("examples")); | |||||
| fail("can add dir to " | |||||
| + f.getDataTypeName() | |||||
| + " when a src is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| f = (TarFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setDir(new File("examples")); | |||||
| try { | |||||
| f.setSrc(new File("example.tar")); | |||||
| fail("can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a dir is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| //check that fullpath and prefix are incompatible | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setSrc(new File("example.tar")); | |||||
| f.setPrefix("/examples"); | |||||
| try { | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| fail("Can add fullpath to " | |||||
| + f.getDataTypeName() | |||||
| + " when a prefix is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setSrc(new File("example.tar")); | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| try { | |||||
| f.setPrefix("/examples"); | |||||
| fail("Can add prefix to " | |||||
| + f.getDataTypeName() | |||||
| + " when a fullpath is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| // check that reference tarfilesets cannot have specific attributes | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setRefid(new Reference(getProject(), "test")); | |||||
| try { | |||||
| f.setSrc(new File("example.tar")); | |||||
| fail("Can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a refid is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one " | |||||
| + "attribute when using refid", be.getMessage()); | |||||
| } | |||||
| // check that a reference tarfileset gets the same attributes as the original | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setSrc(new File("example.tar")); | |||||
| f.setPrefix("/examples"); | |||||
| f.setFileMode("600"); | |||||
| f.setDirMode("530"); | |||||
| getProject().addReference("test",f); | |||||
| TarFileSet zid=(TarFileSet)getInstance(); | |||||
| zid.setRefid(new Reference(getProject(), "test")); | |||||
| assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject()))); | |||||
| assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject()))); | |||||
| assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject())); | |||||
| assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject())); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.TarFileSet. | |||||
| * | |||||
| * <p>This doesn't actually test much, mainly reference handling. | |||||
| * | |||||
| */ | |||||
| public class TarFileSetTest extends AbstractFileSetTest { | |||||
| protected AbstractFileSet getInstance() { | |||||
| return new TarFileSet(); | |||||
| } | |||||
| @Test | |||||
| public final void testAttributes() { | |||||
| TarFileSet f = (TarFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setSrc(new File("example.tar")); | |||||
| try { | |||||
| f.setDir(new File("examples")); | |||||
| fail("can add dir to " | |||||
| + f.getDataTypeName() | |||||
| + " when a src is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| f = (TarFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setDir(new File("examples")); | |||||
| try { | |||||
| f.setSrc(new File("example.tar")); | |||||
| fail("can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a dir is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| //check that fullpath and prefix are incompatible | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setSrc(new File("example.tar")); | |||||
| f.setPrefix("/examples"); | |||||
| try { | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| fail("Can add fullpath to " | |||||
| + f.getDataTypeName() | |||||
| + " when a prefix is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setSrc(new File("example.tar")); | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| try { | |||||
| f.setPrefix("/examples"); | |||||
| fail("Can add prefix to " | |||||
| + f.getDataTypeName() | |||||
| + " when a fullpath is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| // check that reference tarfilesets cannot have specific attributes | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setRefid(new Reference(getProject(), "test")); | |||||
| try { | |||||
| f.setSrc(new File("example.tar")); | |||||
| fail("Can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a refid is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one " | |||||
| + "attribute when using refid", be.getMessage()); | |||||
| } | |||||
| // check that a reference tarfileset gets the same attributes as the original | |||||
| f = (TarFileSet)getInstance(); | |||||
| f.setSrc(new File("example.tar")); | |||||
| f.setPrefix("/examples"); | |||||
| f.setFileMode("600"); | |||||
| f.setDirMode("530"); | |||||
| getProject().addReference("test",f); | |||||
| TarFileSet zid=(TarFileSet)getInstance(); | |||||
| zid.setRefid(new Reference(getProject(), "test")); | |||||
| assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject()))); | |||||
| assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject()))); | |||||
| assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject())); | |||||
| assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject())); | |||||
| } | |||||
| } | |||||
| @@ -1,98 +1,98 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| /** | |||||
| * testcases for org.apache.tools.ant.types.XMLCatalog | |||||
| * | |||||
| * @see org.apache.tools.ant.types.XMLCatalogTest | |||||
| * | |||||
| */ | |||||
| public class XMLCatalogBuildFileTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| // | |||||
| // Ensure that an external entity resolves as expected with NO | |||||
| // XMLCatalog involvement: | |||||
| // | |||||
| // Transform an XML file that refers to the entity into a text | |||||
| // file, stuff result into property: val1 | |||||
| // | |||||
| @Test | |||||
| public void testEntityNoCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testentitynocatalog"); | |||||
| assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val1")); | |||||
| } | |||||
| // | |||||
| // Ensure that an external entity resolves as expected Using an | |||||
| // XMLCatalog: | |||||
| // | |||||
| // Transform an XML file that refers to the entity into a text | |||||
| // file, entity is listed in the XMLCatalog pointing to a | |||||
| // different file. Stuff result into property: val2 | |||||
| // | |||||
| @Test | |||||
| public void testEntityWithCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testentitywithcatalog"); | |||||
| assertEquals("No news is good news", buildRule.getProject().getProperty("val2")); | |||||
| } | |||||
| // | |||||
| // Ensure that an external entity resolves as expected with NO | |||||
| // XMLCatalog involvement: | |||||
| // | |||||
| // Transform an XML file that contains a reference to a _second_ XML file | |||||
| // via the document() function. The _second_ XML file refers to an entity. | |||||
| // Stuff result into the property: val3 | |||||
| // | |||||
| @Test | |||||
| public void testDocumentNoCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testdocumentnocatalog"); | |||||
| assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val3")); | |||||
| } | |||||
| // | |||||
| // Ensure that an external entity resolves as expected Using an | |||||
| // XMLCatalog: | |||||
| // | |||||
| // Transform an XML file that contains a reference to a _second_ XML file | |||||
| // via the document() function. The _second_ XML file refers to an entity. | |||||
| // The entity is listed in the XMLCatalog pointing to a different file. | |||||
| // Stuff result into the property: val4 | |||||
| @Test | |||||
| public void testDocumentWithCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testdocumentwithcatalog"); | |||||
| assertEquals("No news is good news", buildRule.getProject().getProperty("val4")); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| /** | |||||
| * testcases for org.apache.tools.ant.types.XMLCatalog | |||||
| * | |||||
| * @see org.apache.tools.ant.types.XMLCatalogTest | |||||
| * | |||||
| */ | |||||
| public class XMLCatalogBuildFileTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| // | |||||
| // Ensure that an external entity resolves as expected with NO | |||||
| // XMLCatalog involvement: | |||||
| // | |||||
| // Transform an XML file that refers to the entity into a text | |||||
| // file, stuff result into property: val1 | |||||
| // | |||||
| @Test | |||||
| public void testEntityNoCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testentitynocatalog"); | |||||
| assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val1")); | |||||
| } | |||||
| // | |||||
| // Ensure that an external entity resolves as expected Using an | |||||
| // XMLCatalog: | |||||
| // | |||||
| // Transform an XML file that refers to the entity into a text | |||||
| // file, entity is listed in the XMLCatalog pointing to a | |||||
| // different file. Stuff result into property: val2 | |||||
| // | |||||
| @Test | |||||
| public void testEntityWithCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testentitywithcatalog"); | |||||
| assertEquals("No news is good news", buildRule.getProject().getProperty("val2")); | |||||
| } | |||||
| // | |||||
| // Ensure that an external entity resolves as expected with NO | |||||
| // XMLCatalog involvement: | |||||
| // | |||||
| // Transform an XML file that contains a reference to a _second_ XML file | |||||
| // via the document() function. The _second_ XML file refers to an entity. | |||||
| // Stuff result into the property: val3 | |||||
| // | |||||
| @Test | |||||
| public void testDocumentNoCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testdocumentnocatalog"); | |||||
| assertEquals("A stitch in time saves nine", buildRule.getProject().getProperty("val3")); | |||||
| } | |||||
| // | |||||
| // Ensure that an external entity resolves as expected Using an | |||||
| // XMLCatalog: | |||||
| // | |||||
| // Transform an XML file that contains a reference to a _second_ XML file | |||||
| // via the document() function. The _second_ XML file refers to an entity. | |||||
| // The entity is listed in the XMLCatalog pointing to a different file. | |||||
| // Stuff result into the property: val4 | |||||
| @Test | |||||
| public void testDocumentWithCatalog() { | |||||
| buildRule.configureProject("src/etc/testcases/types/xmlcatalog.xml"); | |||||
| buildRule.executeTarget("testdocumentwithcatalog"); | |||||
| assertEquals("No news is good news", buildRule.getProject().getProperty("val4")); | |||||
| } | |||||
| } | |||||
| @@ -1,392 +1,392 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import java.net.MalformedURLException; | |||||
| import java.net.URL; | |||||
| import javax.xml.transform.Source; | |||||
| import javax.xml.transform.TransformerException; | |||||
| import javax.xml.transform.sax.SAXSource; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.util.JAXPUtils; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import org.xml.sax.InputSource; | |||||
| import org.xml.sax.SAXException; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| /** | |||||
| * JUnit testcases for org.apache.tools.ant.types.XMLCatalog | |||||
| * | |||||
| */ | |||||
| public class XMLCatalogTest { | |||||
| private Project project; | |||||
| private XMLCatalog catalog; | |||||
| private XMLCatalog newCatalog() { | |||||
| XMLCatalog cat = new XMLCatalog(); | |||||
| cat.setProject(project); | |||||
| return cat; | |||||
| } | |||||
| private static String toURLString(File file) throws MalformedURLException { | |||||
| return JAXPUtils.getSystemId(file); | |||||
| } | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.setBasedir(System.getProperty("root")); | |||||
| // This causes XMLCatalog to print out detailed logging | |||||
| // messages for debugging | |||||
| // | |||||
| // DefaultLogger logger = new DefaultLogger(); | |||||
| // logger.setMessageOutputLevel(Project.MSG_DEBUG); | |||||
| // logger.setOutputPrintStream(System.out); | |||||
| // logger.setErrorPrintStream(System.err); | |||||
| // project.addBuildListener(logger); | |||||
| catalog = newCatalog(); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyCatalog() { | |||||
| try { | |||||
| InputSource result = catalog.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| assertNull("Empty catalog should return null", result); | |||||
| } catch (Exception e) { | |||||
| fail("resolveEntity() failed!" + e.toString()); | |||||
| } | |||||
| try { | |||||
| Source result = catalog.resolve("i/dont/exist.dtd", null); | |||||
| String expected = toURLString(new File(project.getBaseDir() + | |||||
| "/i/dont/exist.dtd")); | |||||
| String resultStr = | |||||
| fileURLPartWithoutLeadingSlashes((SAXSource)result); | |||||
| assertTrue("Empty catalog should return input with a system ID like " | |||||
| + expected + " but was " + resultStr, | |||||
| expected.endsWith(resultStr)); | |||||
| } catch (Exception e) { | |||||
| fail("resolve() failed!" + e.toString()); | |||||
| } | |||||
| } | |||||
| private static String fileURLPartWithoutLeadingSlashes(SAXSource result) | |||||
| throws MalformedURLException { | |||||
| // | |||||
| // These shenanigans are necessary b/c Norm Walsh's resolver | |||||
| // has a different idea of how file URLs are created on windoze | |||||
| // ie file://c:/foo instead of file:///c:/foo | |||||
| // | |||||
| String resultStr = | |||||
| new URL(result.getInputSource().getSystemId()).getFile(); | |||||
| // on Sun's Java6 this returns an unexpected number of four | |||||
| // leading slashes, at least on Linux - strip all of them | |||||
| while (resultStr.startsWith("/")) { | |||||
| resultStr = resultStr.substring(1); | |||||
| } | |||||
| return resultStr; | |||||
| } | |||||
| @Test | |||||
| public void testNonExistentEntry() throws IOException, SAXException, TransformerException { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("PUBLIC ID ONE"); | |||||
| dtd.setLocation("i/dont/exist.dtd"); | |||||
| InputSource isResult = catalog.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| assertNull("Nonexistent Catalog entry should not be returned", isResult); | |||||
| Source result = catalog.resolve("i/dont/exist.dtd", null); | |||||
| String expected = toURLString(new File(project.getBaseDir().toURL() + | |||||
| "/i/dont/exist.dtd")); | |||||
| String resultStr = | |||||
| fileURLPartWithoutLeadingSlashes((SAXSource)result); | |||||
| assertTrue("Nonexistent Catalog entry return input with a system ID like " | |||||
| + expected + " but was " + resultStr, | |||||
| expected.endsWith(resultStr)); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReference() { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("PUBLIC ID ONE"); | |||||
| dtd.setLocation("i/dont/exist.dtd"); | |||||
| catalog.addDTD(dtd); | |||||
| project.addReference("catalog", catalog); | |||||
| try { | |||||
| catalog.setRefid(new Reference(project, "dummyref")); | |||||
| fail("Can add reference to nonexistent XMLCatalog"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one " | |||||
| + "attribute when using refid", be.getMessage()); | |||||
| } | |||||
| XMLCatalog catalog2 = newCatalog(); | |||||
| catalog2.setRefid(new Reference(project, "catalog")); | |||||
| try { | |||||
| catalog2.addConfiguredXMLCatalog(catalog); | |||||
| fail("Can add nested XMLCatalog to XMLCatalog that is a reference"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testCircularReferenceCheck() throws IOException, SAXException { | |||||
| // catalog <--> catalog | |||||
| project.addReference("catalog", catalog); | |||||
| catalog.setRefid(new Reference(project, "catalog")); | |||||
| try { | |||||
| InputSource result = catalog.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| fail("Can make XMLCatalog a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } catch (Exception e) { | |||||
| fail("resolveEntity() failed!" + e.toString()); | |||||
| } | |||||
| // catalog1 --> catalog2 --> catalog3 --> catalog1 | |||||
| XMLCatalog catalog1 = newCatalog(); | |||||
| project.addReference("catalog1", catalog1); | |||||
| XMLCatalog catalog2 = newCatalog(); | |||||
| project.addReference("catalog2", catalog2); | |||||
| XMLCatalog catalog3 = newCatalog(); | |||||
| project.addReference("catalog3", catalog3); | |||||
| catalog3.setRefid(new Reference(project, "catalog1")); | |||||
| catalog2.setRefid(new Reference(project, "catalog3")); | |||||
| catalog1.setRefid(new Reference(project, "catalog2")); | |||||
| try { | |||||
| catalog1.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| fail("Can make circular reference"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| // inspired by Bugzilla Report 23913 | |||||
| // a problem used to happen under Windows when the location of the DTD was given as an absolute path | |||||
| // possibly with a mixture of file separators | |||||
| @Test | |||||
| public void testAbsolutePath() throws IOException, SAXException { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("-//stevo//DTD doc 1.0//EN"); | |||||
| String sysid = System.getProperty("root") + File.separator + "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| dtd.setLocation(sysid); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(sysid); | |||||
| InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN", | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testSimpleEntry() throws IOException, SAXException { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("-//stevo//DTD doc 1.0//EN"); | |||||
| String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| dtd.setLocation(sysid); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(sysid); | |||||
| InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN", | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testEntryReference() throws IOException, SAXException, TransformerException { | |||||
| String publicId = "-//stevo//DTD doc 1.0//EN"; | |||||
| String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| // catalog2 --> catalog1 --> catalog | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId(publicId); | |||||
| dtd.setLocation(sysid); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(sysid); | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile(uriLoc); | |||||
| project.addReference("catalog", catalog); | |||||
| XMLCatalog catalog1 = newCatalog(); | |||||
| project.addReference("catalog1", catalog1); | |||||
| XMLCatalog catalog2 = newCatalog(); | |||||
| project.addReference("catalog2", catalog1); | |||||
| catalog1.setRefid(new Reference(project, "catalog")); | |||||
| catalog2.setRefid(new Reference(project, "catalog1")); | |||||
| InputSource isResult = catalog2.resolveEntity(publicId, | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(isResult); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| isResult.getSystemId()); | |||||
| Source result = catalog.resolve(uri, null); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(xmlFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testNestedCatalog() throws IOException, SAXException, TransformerException { | |||||
| String publicId = "-//stevo//DTD doc 1.0//EN"; | |||||
| String dtdLoc = "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId(publicId); | |||||
| dtd.setLocation(dtdLoc); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(dtdLoc); | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile(uriLoc); | |||||
| XMLCatalog catalog1 = newCatalog(); | |||||
| catalog1.addConfiguredXMLCatalog(catalog); | |||||
| InputSource isResult = catalog1.resolveEntity(publicId, | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(isResult); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| isResult.getSystemId()); | |||||
| Source result = catalog.resolve(uri, null); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(xmlFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testResolverBase() throws MalformedURLException, TransformerException { | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| String base = toURLString(project.getBaseDir()) + "/src/"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile("src/" + uriLoc); | |||||
| Source result = catalog.resolve(uri, base); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(xmlFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testClasspath() throws IOException, TransformerException, SAXException { | |||||
| String publicId = "-//stevo//DTD doc 1.0//EN"; | |||||
| String dtdLoc = "testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| String path1 = project.getBaseDir().toString() + "/src/etc"; | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId(publicId); | |||||
| dtd.setLocation(dtdLoc); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile("src/etc/" + dtdLoc); | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| String path2 = project.getBaseDir().toString() + "/src"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile("src/" + uriLoc); | |||||
| Path aPath = new Path(project, path1); | |||||
| aPath.append(new Path(project, path2)); | |||||
| catalog.setClasspath(aPath); | |||||
| InputSource isResult = catalog.resolveEntity(publicId, | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(isResult); | |||||
| String resultStr1 = new URL(isResult.getSystemId()).getFile(); | |||||
| assertTrue(toURLString(dtdFile).endsWith(resultStr1)); | |||||
| Source result = catalog.resolve(uri, null); | |||||
| assertNotNull(result); | |||||
| String resultStr = new URL(result.getSystemId()).getFile(); | |||||
| assertTrue(toURLString(xmlFile).endsWith(resultStr)); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import java.net.MalformedURLException; | |||||
| import java.net.URL; | |||||
| import javax.xml.transform.Source; | |||||
| import javax.xml.transform.TransformerException; | |||||
| import javax.xml.transform.sax.SAXSource; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.util.JAXPUtils; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import org.xml.sax.InputSource; | |||||
| import org.xml.sax.SAXException; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| /** | |||||
| * JUnit testcases for org.apache.tools.ant.types.XMLCatalog | |||||
| * | |||||
| */ | |||||
| public class XMLCatalogTest { | |||||
| private Project project; | |||||
| private XMLCatalog catalog; | |||||
| private XMLCatalog newCatalog() { | |||||
| XMLCatalog cat = new XMLCatalog(); | |||||
| cat.setProject(project); | |||||
| return cat; | |||||
| } | |||||
| private static String toURLString(File file) throws MalformedURLException { | |||||
| return JAXPUtils.getSystemId(file); | |||||
| } | |||||
| @Before | |||||
| public void setUp() { | |||||
| project = new Project(); | |||||
| project.setBasedir(System.getProperty("root")); | |||||
| // This causes XMLCatalog to print out detailed logging | |||||
| // messages for debugging | |||||
| // | |||||
| // DefaultLogger logger = new DefaultLogger(); | |||||
| // logger.setMessageOutputLevel(Project.MSG_DEBUG); | |||||
| // logger.setOutputPrintStream(System.out); | |||||
| // logger.setErrorPrintStream(System.err); | |||||
| // project.addBuildListener(logger); | |||||
| catalog = newCatalog(); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyCatalog() { | |||||
| try { | |||||
| InputSource result = catalog.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| assertNull("Empty catalog should return null", result); | |||||
| } catch (Exception e) { | |||||
| fail("resolveEntity() failed!" + e.toString()); | |||||
| } | |||||
| try { | |||||
| Source result = catalog.resolve("i/dont/exist.dtd", null); | |||||
| String expected = toURLString(new File(project.getBaseDir() + | |||||
| "/i/dont/exist.dtd")); | |||||
| String resultStr = | |||||
| fileURLPartWithoutLeadingSlashes((SAXSource)result); | |||||
| assertTrue("Empty catalog should return input with a system ID like " | |||||
| + expected + " but was " + resultStr, | |||||
| expected.endsWith(resultStr)); | |||||
| } catch (Exception e) { | |||||
| fail("resolve() failed!" + e.toString()); | |||||
| } | |||||
| } | |||||
| private static String fileURLPartWithoutLeadingSlashes(SAXSource result) | |||||
| throws MalformedURLException { | |||||
| // | |||||
| // These shenanigans are necessary b/c Norm Walsh's resolver | |||||
| // has a different idea of how file URLs are created on windoze | |||||
| // ie file://c:/foo instead of file:///c:/foo | |||||
| // | |||||
| String resultStr = | |||||
| new URL(result.getInputSource().getSystemId()).getFile(); | |||||
| // on Sun's Java6 this returns an unexpected number of four | |||||
| // leading slashes, at least on Linux - strip all of them | |||||
| while (resultStr.startsWith("/")) { | |||||
| resultStr = resultStr.substring(1); | |||||
| } | |||||
| return resultStr; | |||||
| } | |||||
| @Test | |||||
| public void testNonExistentEntry() throws IOException, SAXException, TransformerException { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("PUBLIC ID ONE"); | |||||
| dtd.setLocation("i/dont/exist.dtd"); | |||||
| InputSource isResult = catalog.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| assertNull("Nonexistent Catalog entry should not be returned", isResult); | |||||
| Source result = catalog.resolve("i/dont/exist.dtd", null); | |||||
| String expected = toURLString(new File(project.getBaseDir().toURL() + | |||||
| "/i/dont/exist.dtd")); | |||||
| String resultStr = | |||||
| fileURLPartWithoutLeadingSlashes((SAXSource)result); | |||||
| assertTrue("Nonexistent Catalog entry return input with a system ID like " | |||||
| + expected + " but was " + resultStr, | |||||
| expected.endsWith(resultStr)); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReference() { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("PUBLIC ID ONE"); | |||||
| dtd.setLocation("i/dont/exist.dtd"); | |||||
| catalog.addDTD(dtd); | |||||
| project.addReference("catalog", catalog); | |||||
| try { | |||||
| catalog.setRefid(new Reference(project, "dummyref")); | |||||
| fail("Can add reference to nonexistent XMLCatalog"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one " | |||||
| + "attribute when using refid", be.getMessage()); | |||||
| } | |||||
| XMLCatalog catalog2 = newCatalog(); | |||||
| catalog2.setRefid(new Reference(project, "catalog")); | |||||
| try { | |||||
| catalog2.addConfiguredXMLCatalog(catalog); | |||||
| fail("Can add nested XMLCatalog to XMLCatalog that is a reference"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testCircularReferenceCheck() throws IOException, SAXException { | |||||
| // catalog <--> catalog | |||||
| project.addReference("catalog", catalog); | |||||
| catalog.setRefid(new Reference(project, "catalog")); | |||||
| try { | |||||
| InputSource result = catalog.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| fail("Can make XMLCatalog a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } catch (Exception e) { | |||||
| fail("resolveEntity() failed!" + e.toString()); | |||||
| } | |||||
| // catalog1 --> catalog2 --> catalog3 --> catalog1 | |||||
| XMLCatalog catalog1 = newCatalog(); | |||||
| project.addReference("catalog1", catalog1); | |||||
| XMLCatalog catalog2 = newCatalog(); | |||||
| project.addReference("catalog2", catalog2); | |||||
| XMLCatalog catalog3 = newCatalog(); | |||||
| project.addReference("catalog3", catalog3); | |||||
| catalog3.setRefid(new Reference(project, "catalog1")); | |||||
| catalog2.setRefid(new Reference(project, "catalog3")); | |||||
| catalog1.setRefid(new Reference(project, "catalog2")); | |||||
| try { | |||||
| catalog1.resolveEntity("PUBLIC ID ONE", | |||||
| "i/dont/exist.dtd"); | |||||
| fail("Can make circular reference"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| // inspired by Bugzilla Report 23913 | |||||
| // a problem used to happen under Windows when the location of the DTD was given as an absolute path | |||||
| // possibly with a mixture of file separators | |||||
| @Test | |||||
| public void testAbsolutePath() throws IOException, SAXException { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("-//stevo//DTD doc 1.0//EN"); | |||||
| String sysid = System.getProperty("root") + File.separator + "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| dtd.setLocation(sysid); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(sysid); | |||||
| InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN", | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testSimpleEntry() throws IOException, SAXException { | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId("-//stevo//DTD doc 1.0//EN"); | |||||
| String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| dtd.setLocation(sysid); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(sysid); | |||||
| InputSource result = catalog.resolveEntity("-//stevo//DTD doc 1.0//EN", | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testEntryReference() throws IOException, SAXException, TransformerException { | |||||
| String publicId = "-//stevo//DTD doc 1.0//EN"; | |||||
| String sysid = "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| // catalog2 --> catalog1 --> catalog | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId(publicId); | |||||
| dtd.setLocation(sysid); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(sysid); | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile(uriLoc); | |||||
| project.addReference("catalog", catalog); | |||||
| XMLCatalog catalog1 = newCatalog(); | |||||
| project.addReference("catalog1", catalog1); | |||||
| XMLCatalog catalog2 = newCatalog(); | |||||
| project.addReference("catalog2", catalog1); | |||||
| catalog1.setRefid(new Reference(project, "catalog")); | |||||
| catalog2.setRefid(new Reference(project, "catalog1")); | |||||
| InputSource isResult = catalog2.resolveEntity(publicId, | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(isResult); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| isResult.getSystemId()); | |||||
| Source result = catalog.resolve(uri, null); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(xmlFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testNestedCatalog() throws IOException, SAXException, TransformerException { | |||||
| String publicId = "-//stevo//DTD doc 1.0//EN"; | |||||
| String dtdLoc = "src/etc/testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId(publicId); | |||||
| dtd.setLocation(dtdLoc); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile(dtdLoc); | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "src/etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile(uriLoc); | |||||
| XMLCatalog catalog1 = newCatalog(); | |||||
| catalog1.addConfiguredXMLCatalog(catalog); | |||||
| InputSource isResult = catalog1.resolveEntity(publicId, | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(isResult); | |||||
| assertEquals(toURLString(dtdFile), | |||||
| isResult.getSystemId()); | |||||
| Source result = catalog.resolve(uri, null); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(xmlFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testResolverBase() throws MalformedURLException, TransformerException { | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| String base = toURLString(project.getBaseDir()) + "/src/"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile("src/" + uriLoc); | |||||
| Source result = catalog.resolve(uri, base); | |||||
| assertNotNull(result); | |||||
| assertEquals(toURLString(xmlFile), | |||||
| result.getSystemId()); | |||||
| } | |||||
| @Test | |||||
| public void testClasspath() throws IOException, TransformerException, SAXException { | |||||
| String publicId = "-//stevo//DTD doc 1.0//EN"; | |||||
| String dtdLoc = "testcases/taskdefs/optional/xml/doc.dtd"; | |||||
| String path1 = project.getBaseDir().toString() + "/src/etc"; | |||||
| ResourceLocation dtd = new ResourceLocation(); | |||||
| dtd.setPublicId(publicId); | |||||
| dtd.setLocation(dtdLoc); | |||||
| catalog.addDTD(dtd); | |||||
| File dtdFile = project.resolveFile("src/etc/" + dtdLoc); | |||||
| String uri = "http://foo.com/bar/blah.xml"; | |||||
| String uriLoc = "etc/testcases/taskdefs/optional/xml/about.xml"; | |||||
| String path2 = project.getBaseDir().toString() + "/src"; | |||||
| ResourceLocation entity = new ResourceLocation(); | |||||
| entity.setPublicId(uri); | |||||
| entity.setLocation(uriLoc); | |||||
| catalog.addEntity(entity); | |||||
| File xmlFile = project.resolveFile("src/" + uriLoc); | |||||
| Path aPath = new Path(project, path1); | |||||
| aPath.append(new Path(project, path2)); | |||||
| catalog.setClasspath(aPath); | |||||
| InputSource isResult = catalog.resolveEntity(publicId, | |||||
| "nap:chemical+brothers"); | |||||
| assertNotNull(isResult); | |||||
| String resultStr1 = new URL(isResult.getSystemId()).getFile(); | |||||
| assertTrue(toURLString(dtdFile).endsWith(resultStr1)); | |||||
| Source result = catalog.resolve(uri, null); | |||||
| assertNotNull(result); | |||||
| String resultStr = new URL(result.getSystemId()).getFile(); | |||||
| assertTrue(toURLString(xmlFile).endsWith(resultStr)); | |||||
| } | |||||
| } | |||||
| @@ -1,118 +1,118 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.ZipFileSet. | |||||
| * | |||||
| * <p>This doesn't actually test much, mainly reference handling. | |||||
| * | |||||
| */ | |||||
| public class ZipFileSetTest extends AbstractFileSetTest { | |||||
| protected AbstractFileSet getInstance() { | |||||
| return new ZipFileSet(); | |||||
| } | |||||
| @Test | |||||
| public final void testAttributes() { | |||||
| ZipFileSet f = (ZipFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setSrc(new File("example.zip")); | |||||
| try { | |||||
| f.setDir(new File("examples")); | |||||
| fail("can add dir to " | |||||
| + f.getDataTypeName() | |||||
| + " when a src is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| f = (ZipFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setDir(new File("examples")); | |||||
| try { | |||||
| f.setSrc(new File("example.zip")); | |||||
| fail("can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a dir is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| //check that fullpath and prefix are incompatible | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setSrc(new File("example.zip")); | |||||
| f.setPrefix("/examples"); | |||||
| try { | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| fail("Can add fullpath to " | |||||
| + f.getDataTypeName() | |||||
| + " when a prefix is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setSrc(new File("example.zip")); | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| try { | |||||
| f.setPrefix("/examples"); | |||||
| fail("Can add prefix to " | |||||
| + f.getDataTypeName() | |||||
| + " when a fullpath is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| // check that reference zipfilesets cannot have specific attributes | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setRefid(new Reference(getProject(), "test")); | |||||
| try { | |||||
| f.setSrc(new File("example.zip")); | |||||
| fail("Can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a refid is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one " | |||||
| + "attribute when using refid", be.getMessage()); | |||||
| } | |||||
| // check that a reference zipfileset gets the same attributes as the original | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setSrc(new File("example.zip")); | |||||
| f.setPrefix("/examples"); | |||||
| f.setFileMode("600"); | |||||
| f.setDirMode("530"); | |||||
| getProject().addReference("test",f); | |||||
| ZipFileSet zid=(ZipFileSet)getInstance(); | |||||
| zid.setRefid(new Reference(getProject(), "test")); | |||||
| assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject()))); | |||||
| assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject()))); | |||||
| assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject())); | |||||
| assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject())); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * JUnit 3 testcases for org.apache.tools.ant.types.ZipFileSet. | |||||
| * | |||||
| * <p>This doesn't actually test much, mainly reference handling. | |||||
| * | |||||
| */ | |||||
| public class ZipFileSetTest extends AbstractFileSetTest { | |||||
| protected AbstractFileSet getInstance() { | |||||
| return new ZipFileSet(); | |||||
| } | |||||
| @Test | |||||
| public final void testAttributes() { | |||||
| ZipFileSet f = (ZipFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setSrc(new File("example.zip")); | |||||
| try { | |||||
| f.setDir(new File("examples")); | |||||
| fail("can add dir to " | |||||
| + f.getDataTypeName() | |||||
| + " when a src is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| f = (ZipFileSet)getInstance(); | |||||
| //check that dir and src are incompatible | |||||
| f.setDir(new File("examples")); | |||||
| try { | |||||
| f.setSrc(new File("example.zip")); | |||||
| fail("can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a dir is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both dir and src attributes",be.getMessage()); | |||||
| } | |||||
| //check that fullpath and prefix are incompatible | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setSrc(new File("example.zip")); | |||||
| f.setPrefix("/examples"); | |||||
| try { | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| fail("Can add fullpath to " | |||||
| + f.getDataTypeName() | |||||
| + " when a prefix is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setSrc(new File("example.zip")); | |||||
| f.setFullpath("/doc/manual/index.html"); | |||||
| try { | |||||
| f.setPrefix("/examples"); | |||||
| fail("Can add prefix to " | |||||
| + f.getDataTypeName() | |||||
| + " when a fullpath is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("Cannot set both fullpath and prefix attributes", be.getMessage()); | |||||
| } | |||||
| // check that reference zipfilesets cannot have specific attributes | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setRefid(new Reference(getProject(), "test")); | |||||
| try { | |||||
| f.setSrc(new File("example.zip")); | |||||
| fail("Can add src to " | |||||
| + f.getDataTypeName() | |||||
| + " when a refid is already present"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one " | |||||
| + "attribute when using refid", be.getMessage()); | |||||
| } | |||||
| // check that a reference zipfileset gets the same attributes as the original | |||||
| f = (ZipFileSet)getInstance(); | |||||
| f.setSrc(new File("example.zip")); | |||||
| f.setPrefix("/examples"); | |||||
| f.setFileMode("600"); | |||||
| f.setDirMode("530"); | |||||
| getProject().addReference("test",f); | |||||
| ZipFileSet zid=(ZipFileSet)getInstance(); | |||||
| zid.setRefid(new Reference(getProject(), "test")); | |||||
| assertTrue("src attribute copied by copy constructor",zid.getSrc(getProject()).equals(f.getSrc(getProject()))); | |||||
| assertTrue("prefix attribute copied by copy constructor",f.getPrefix(getProject()).equals(zid.getPrefix(getProject()))); | |||||
| assertTrue("file mode attribute copied by copy constructor",f.getFileMode(getProject())==zid.getFileMode(getProject())); | |||||
| assertTrue("dir mode attribute copied by copy constructor",f.getDirMode(getProject())==zid.getDirMode(getProject())); | |||||
| } | |||||
| } | |||||
| @@ -1,49 +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.types.mappers; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Testcase for the <globmapper> mapper. | |||||
| * | |||||
| */ | |||||
| public class GlobMapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mappers/globmapper.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testIgnoreCase() { | |||||
| buildRule.executeTarget("ignore.case"); | |||||
| } | |||||
| public void testHandleDirSep() { | |||||
| buildRule.executeTarget("handle.dirsep"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.mappers; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Testcase for the <globmapper> mapper. | |||||
| * | |||||
| */ | |||||
| public class GlobMapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mappers/globmapper.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testIgnoreCase() { | |||||
| buildRule.executeTarget("ignore.case"); | |||||
| } | |||||
| public void testHandleDirSep() { | |||||
| buildRule.executeTarget("handle.dirsep"); | |||||
| } | |||||
| } | |||||
| @@ -1,103 +1,103 @@ | |||||
| /* | |||||
| * 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.mappers; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Task; | |||||
| import org.apache.tools.ant.types.Mapper; | |||||
| import org.apache.tools.ant.util.FileNameMapper; | |||||
| /** | |||||
| * This is a test task to show the result of a mapper | |||||
| * on a specific input. | |||||
| * (Test is not in the name of the class, to make sure that | |||||
| * it is not treated as a unit test. | |||||
| */ | |||||
| public class MapperResult extends Task { | |||||
| private String failMessage = ""; | |||||
| private String input; | |||||
| private String output; | |||||
| private FileNameMapper fileNameMapper; | |||||
| /** | |||||
| * The output on an empty string array | |||||
| */ | |||||
| private static final String NULL_MAPPER_RESULT = "<NULL>"; | |||||
| public void setFailMessage(String failMessage) { | |||||
| this.failMessage = failMessage; | |||||
| } | |||||
| public void setInput(String input) { | |||||
| this.input = input; | |||||
| } | |||||
| public void setOutput(String output) { | |||||
| this.output = output; | |||||
| } | |||||
| public void addConfiguredMapper(Mapper mapper) { | |||||
| add(mapper.getImplementation()); | |||||
| } | |||||
| public void add(FileNameMapper fileNameMapper) { | |||||
| if (this.fileNameMapper != null) { | |||||
| throw new BuildException("Only one mapper type nested element allowed"); | |||||
| } | |||||
| this.fileNameMapper = fileNameMapper; | |||||
| } | |||||
| public void execute() { | |||||
| if (input == null) { | |||||
| throw new BuildException("Missing attribute 'input'"); | |||||
| } | |||||
| if (output == null) { | |||||
| throw new BuildException("Missing attribute 'output'"); | |||||
| } | |||||
| if (fileNameMapper == null) { | |||||
| throw new BuildException("Missing a nested file name mapper type element"); | |||||
| } | |||||
| String[] result = fileNameMapper.mapFileName(input); | |||||
| String flattened; | |||||
| if (result == null) { | |||||
| flattened = NULL_MAPPER_RESULT; | |||||
| } else { | |||||
| StringBuffer b = new StringBuffer(); | |||||
| for (int i = 0; i < result.length; ++i) { | |||||
| if (i != 0) { | |||||
| b.append("|"); | |||||
| } | |||||
| b.append(result[i]); | |||||
| } | |||||
| flattened = b.toString(); | |||||
| } | |||||
| if (!flattened.equals(output)) { | |||||
| throw new BuildException( | |||||
| failMessage | |||||
| + " " | |||||
| + "got " | |||||
| + flattened | |||||
| + " " | |||||
| + "expected " | |||||
| + output); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.mappers; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Task; | |||||
| import org.apache.tools.ant.types.Mapper; | |||||
| import org.apache.tools.ant.util.FileNameMapper; | |||||
| /** | |||||
| * This is a test task to show the result of a mapper | |||||
| * on a specific input. | |||||
| * (Test is not in the name of the class, to make sure that | |||||
| * it is not treated as a unit test. | |||||
| */ | |||||
| public class MapperResult extends Task { | |||||
| private String failMessage = ""; | |||||
| private String input; | |||||
| private String output; | |||||
| private FileNameMapper fileNameMapper; | |||||
| /** | |||||
| * The output on an empty string array | |||||
| */ | |||||
| private static final String NULL_MAPPER_RESULT = "<NULL>"; | |||||
| public void setFailMessage(String failMessage) { | |||||
| this.failMessage = failMessage; | |||||
| } | |||||
| public void setInput(String input) { | |||||
| this.input = input; | |||||
| } | |||||
| public void setOutput(String output) { | |||||
| this.output = output; | |||||
| } | |||||
| public void addConfiguredMapper(Mapper mapper) { | |||||
| add(mapper.getImplementation()); | |||||
| } | |||||
| public void add(FileNameMapper fileNameMapper) { | |||||
| if (this.fileNameMapper != null) { | |||||
| throw new BuildException("Only one mapper type nested element allowed"); | |||||
| } | |||||
| this.fileNameMapper = fileNameMapper; | |||||
| } | |||||
| public void execute() { | |||||
| if (input == null) { | |||||
| throw new BuildException("Missing attribute 'input'"); | |||||
| } | |||||
| if (output == null) { | |||||
| throw new BuildException("Missing attribute 'output'"); | |||||
| } | |||||
| if (fileNameMapper == null) { | |||||
| throw new BuildException("Missing a nested file name mapper type element"); | |||||
| } | |||||
| String[] result = fileNameMapper.mapFileName(input); | |||||
| String flattened; | |||||
| if (result == null) { | |||||
| flattened = NULL_MAPPER_RESULT; | |||||
| } else { | |||||
| StringBuffer b = new StringBuffer(); | |||||
| for (int i = 0; i < result.length; ++i) { | |||||
| if (i != 0) { | |||||
| b.append("|"); | |||||
| } | |||||
| b.append(result[i]); | |||||
| } | |||||
| flattened = b.toString(); | |||||
| } | |||||
| if (!flattened.equals(output)) { | |||||
| throw new BuildException( | |||||
| failMessage | |||||
| + " " | |||||
| + "got " | |||||
| + flattened | |||||
| + " " | |||||
| + "expected " | |||||
| + output); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,51 +1,51 @@ | |||||
| /* | |||||
| * 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.mappers; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Testcase for the <regexpmapper> mapper. | |||||
| * | |||||
| */ | |||||
| public class RegexpPatternMapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mappers/regexpmapper.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testIgnoreCase() { | |||||
| buildRule.executeTarget("ignore.case"); | |||||
| } | |||||
| @Test | |||||
| public void testHandleDirSep() { | |||||
| buildRule.executeTarget("handle.dirsep"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.mappers; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Testcase for the <regexpmapper> mapper. | |||||
| * | |||||
| */ | |||||
| public class RegexpPatternMapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mappers/regexpmapper.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testIgnoreCase() { | |||||
| buildRule.executeTarget("ignore.case"); | |||||
| } | |||||
| @Test | |||||
| public void testHandleDirSep() { | |||||
| buildRule.executeTarget("handle.dirsep"); | |||||
| } | |||||
| } | |||||
| @@ -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.types.optional; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Test our script mapping | |||||
| */ | |||||
| public class ScriptMapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mappers/scriptmapper.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testClear() { | |||||
| buildRule.executeTarget("testClear"); | |||||
| } | |||||
| @Test | |||||
| public void testSetMultiple() { | |||||
| buildRule.executeTarget("testSetMultiple"); | |||||
| } | |||||
| @Test | |||||
| public void testPassthrough() { | |||||
| buildRule.executeTarget("testPassthrough"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.optional; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Test our script mapping | |||||
| */ | |||||
| public class ScriptMapperTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/mappers/scriptmapper.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testClear() { | |||||
| buildRule.executeTarget("testClear"); | |||||
| } | |||||
| @Test | |||||
| public void testSetMultiple() { | |||||
| buildRule.executeTarget("testSetMultiple"); | |||||
| } | |||||
| @Test | |||||
| public void testPassthrough() { | |||||
| buildRule.executeTarget("testPassthrough"); | |||||
| } | |||||
| } | |||||
| @@ -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.types.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.apache.tools.ant.AntAssert.assertContains; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Test that scripting selection works. Needs scripting support to work | |||||
| */ | |||||
| public class ScriptSelectorTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/selectors/scriptselector.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testNolanguage() { | |||||
| try { | |||||
| buildRule.executeTarget("testNolanguage"); | |||||
| fail("Absence of language attribute not detected"); | |||||
| } catch(BuildException ex) { | |||||
| assertContains("script language must be specified", ex.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testSelectionSetByDefault() { | |||||
| buildRule.executeTarget("testSelectionSetByDefault"); | |||||
| } | |||||
| @Test | |||||
| public void testSelectionSetWorks() { | |||||
| buildRule.executeTarget("testSelectionSetWorks"); | |||||
| } | |||||
| @Test | |||||
| public void testSelectionClearWorks() { | |||||
| buildRule.executeTarget("testSelectionClearWorks"); | |||||
| } | |||||
| @Test | |||||
| public void testFilenameAttribute() { | |||||
| buildRule.executeTarget("testFilenameAttribute"); | |||||
| } | |||||
| @Test | |||||
| public void testFileAttribute() { | |||||
| buildRule.executeTarget("testFileAttribute"); | |||||
| } | |||||
| @Test | |||||
| public void testBasedirAttribute() { | |||||
| buildRule.executeTarget("testBasedirAttribute"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.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.apache.tools.ant.AntAssert.assertContains; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Test that scripting selection works. Needs scripting support to work | |||||
| */ | |||||
| public class ScriptSelectorTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/selectors/scriptselector.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testNolanguage() { | |||||
| try { | |||||
| buildRule.executeTarget("testNolanguage"); | |||||
| fail("Absence of language attribute not detected"); | |||||
| } catch(BuildException ex) { | |||||
| assertContains("script language must be specified", ex.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testSelectionSetByDefault() { | |||||
| buildRule.executeTarget("testSelectionSetByDefault"); | |||||
| } | |||||
| @Test | |||||
| public void testSelectionSetWorks() { | |||||
| buildRule.executeTarget("testSelectionSetWorks"); | |||||
| } | |||||
| @Test | |||||
| public void testSelectionClearWorks() { | |||||
| buildRule.executeTarget("testSelectionClearWorks"); | |||||
| } | |||||
| @Test | |||||
| public void testFilenameAttribute() { | |||||
| buildRule.executeTarget("testFilenameAttribute"); | |||||
| } | |||||
| @Test | |||||
| public void testFileAttribute() { | |||||
| buildRule.executeTarget("testFileAttribute"); | |||||
| } | |||||
| @Test | |||||
| public void testBasedirAttribute() { | |||||
| buildRule.executeTarget("testBasedirAttribute"); | |||||
| } | |||||
| } | |||||
| @@ -1,186 +1,186 @@ | |||||
| /* | |||||
| * 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.optional.depend; | |||||
| import java.io.File; | |||||
| import java.util.Hashtable; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.DirectoryScanner; | |||||
| 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 static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| /** | |||||
| * Testcase for the Classfileset optional type. | |||||
| * | |||||
| */ | |||||
| public class ClassFileSetTest { | |||||
| public static final String RESULT_FILESET = "result"; | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| // share the setup for testing the depend task | |||||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/depend/depend.xml"); | |||||
| } | |||||
| /** | |||||
| * Test basic classfileset | |||||
| */ | |||||
| @Test | |||||
| public void testBasicSet() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testbasicset"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 4, files.size()); | |||||
| assertTrue("Result did not contain A.class", | |||||
| files.containsKey("A.class")); | |||||
| assertTrue("Result did not contain B.class", | |||||
| files.containsKey("B.class")); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| assertTrue("Result did not contain D.class", | |||||
| files.containsKey("D.class")); | |||||
| } | |||||
| /** | |||||
| * Test small classfileset | |||||
| */ | |||||
| @Test | |||||
| public void testSmallSet() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testsmallset"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 2, files.size()); | |||||
| assertTrue("Result did not contain B.class", | |||||
| files.containsKey("B.class")); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| } | |||||
| /** | |||||
| * Test combo classfileset | |||||
| */ | |||||
| @Test | |||||
| public void testComboSet() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testcomboset"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 1, files.size()); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| } | |||||
| /** | |||||
| * Test that you can pass a classfileset by reference to a fileset. | |||||
| */ | |||||
| @Test | |||||
| public void testByReference() { | |||||
| buildRule.executeTarget("testbyreference"); | |||||
| } | |||||
| /** | |||||
| * Test that classes included in a method "System.out.println(MyClass.class)" are included. | |||||
| */ | |||||
| @Test | |||||
| public void testMethodParam() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testmethodparam"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 5, files.size()); | |||||
| assertTrue("Result did not contain A.class", | |||||
| files.containsKey("A.class")); | |||||
| assertTrue("Result did not contain B.class", | |||||
| files.containsKey("B.class")); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| assertTrue("Result did not contain D.class", | |||||
| files.containsKey("D.class")); | |||||
| assertTrue("Result did not contain E.class", | |||||
| files.containsKey("E.class")); | |||||
| } | |||||
| /** | |||||
| * Test that classes included in a method "System.out.println(Outer.Inner.class)" are included. | |||||
| */ | |||||
| @Test | |||||
| public void testMethodParamInner() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testmethodparaminner"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 4, files.size()); | |||||
| assertTrue("Result did not contain test" + File.separator + "Outer$Inner.class", | |||||
| files.containsKey("test" + File.separator + "Outer$Inner.class")); | |||||
| assertTrue("Result did not contain test" + File.separator + "Outer.class", | |||||
| files.containsKey("test" + File.separator + "Outer.class")); | |||||
| assertTrue("Result did not contain test" + File.separator + "ContainsOnlyInner.class", | |||||
| files.containsKey("test" + File.separator + "ContainsOnlyInner.class")); | |||||
| assertTrue("Result did not contain test" + File.separator + "ContainsOnlyInner.class", | |||||
| files.containsKey("test" + File.separator + "MethodParam.class")); | |||||
| } | |||||
| @Test | |||||
| public void testResourceCollection() { | |||||
| buildRule.executeTarget("testresourcecollection"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.optional.depend; | |||||
| import java.io.File; | |||||
| import java.util.Hashtable; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.DirectoryScanner; | |||||
| 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 static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| /** | |||||
| * Testcase for the Classfileset optional type. | |||||
| * | |||||
| */ | |||||
| public class ClassFileSetTest { | |||||
| public static final String RESULT_FILESET = "result"; | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| // share the setup for testing the depend task | |||||
| buildRule.configureProject("src/etc/testcases/taskdefs/optional/depend/depend.xml"); | |||||
| } | |||||
| /** | |||||
| * Test basic classfileset | |||||
| */ | |||||
| @Test | |||||
| public void testBasicSet() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testbasicset"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 4, files.size()); | |||||
| assertTrue("Result did not contain A.class", | |||||
| files.containsKey("A.class")); | |||||
| assertTrue("Result did not contain B.class", | |||||
| files.containsKey("B.class")); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| assertTrue("Result did not contain D.class", | |||||
| files.containsKey("D.class")); | |||||
| } | |||||
| /** | |||||
| * Test small classfileset | |||||
| */ | |||||
| @Test | |||||
| public void testSmallSet() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testsmallset"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 2, files.size()); | |||||
| assertTrue("Result did not contain B.class", | |||||
| files.containsKey("B.class")); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| } | |||||
| /** | |||||
| * Test combo classfileset | |||||
| */ | |||||
| @Test | |||||
| public void testComboSet() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testcomboset"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 1, files.size()); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| } | |||||
| /** | |||||
| * Test that you can pass a classfileset by reference to a fileset. | |||||
| */ | |||||
| @Test | |||||
| public void testByReference() { | |||||
| buildRule.executeTarget("testbyreference"); | |||||
| } | |||||
| /** | |||||
| * Test that classes included in a method "System.out.println(MyClass.class)" are included. | |||||
| */ | |||||
| @Test | |||||
| public void testMethodParam() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testmethodparam"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 5, files.size()); | |||||
| assertTrue("Result did not contain A.class", | |||||
| files.containsKey("A.class")); | |||||
| assertTrue("Result did not contain B.class", | |||||
| files.containsKey("B.class")); | |||||
| assertTrue("Result did not contain C.class", | |||||
| files.containsKey("C.class")); | |||||
| assertTrue("Result did not contain D.class", | |||||
| files.containsKey("D.class")); | |||||
| assertTrue("Result did not contain E.class", | |||||
| files.containsKey("E.class")); | |||||
| } | |||||
| /** | |||||
| * Test that classes included in a method "System.out.println(Outer.Inner.class)" are included. | |||||
| */ | |||||
| @Test | |||||
| public void testMethodParamInner() { | |||||
| Project p = buildRule.getProject(); | |||||
| buildRule.executeTarget("testmethodparaminner"); | |||||
| FileSet resultFileSet = (FileSet)p.getReference(RESULT_FILESET); | |||||
| DirectoryScanner scanner = resultFileSet.getDirectoryScanner(p); | |||||
| String[] scannedFiles = scanner.getIncludedFiles(); | |||||
| Hashtable files = new Hashtable(); | |||||
| for (int i = 0; i < scannedFiles.length; ++i) { | |||||
| files.put(scannedFiles[i], scannedFiles[i]); | |||||
| } | |||||
| assertEquals("Classfileset did not pick up expected number of " | |||||
| + "class files", 4, files.size()); | |||||
| assertTrue("Result did not contain test" + File.separator + "Outer$Inner.class", | |||||
| files.containsKey("test" + File.separator + "Outer$Inner.class")); | |||||
| assertTrue("Result did not contain test" + File.separator + "Outer.class", | |||||
| files.containsKey("test" + File.separator + "Outer.class")); | |||||
| assertTrue("Result did not contain test" + File.separator + "ContainsOnlyInner.class", | |||||
| files.containsKey("test" + File.separator + "ContainsOnlyInner.class")); | |||||
| assertTrue("Result did not contain test" + File.separator + "ContainsOnlyInner.class", | |||||
| files.containsKey("test" + File.separator + "MethodParam.class")); | |||||
| } | |||||
| @Test | |||||
| public void testResourceCollection() { | |||||
| buildRule.executeTarget("testresourcecollection"); | |||||
| } | |||||
| } | |||||
| @@ -1,122 +1,122 @@ | |||||
| /* | |||||
| * 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.resources; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| /** | |||||
| * Test Java API of {@link FileResource}. | |||||
| */ | |||||
| public class FileResourceTest { | |||||
| private File root; | |||||
| @Before | |||||
| public void setUp() { | |||||
| root = new File(System.getProperty("root")); | |||||
| } | |||||
| @Test | |||||
| public void testAttributes() { | |||||
| FileResource f = new FileResource(); | |||||
| f.setBaseDir(root); | |||||
| f.setName("foo"); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testNonImmediateBasedir() { | |||||
| FileResource f = new FileResource(); | |||||
| f.setBaseDir(root); | |||||
| f.setName("foo/bar"); | |||||
| assertEquals(new File(root, "foo/bar"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo/bar", f.getName().replace(File.separatorChar, '/')); | |||||
| } | |||||
| @Test | |||||
| public void testFile() { | |||||
| FileResource f = new FileResource(new File(root, "foo")); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testBasedirAndName() { | |||||
| FileResource f = new FileResource(root, "foo"); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testNonImmediateBasedirAndName() { | |||||
| FileResource f = new FileResource(root, "foo/bar"); | |||||
| assertEquals(new File(root, "foo/bar"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo/bar", f.getName().replace(File.separatorChar, '/')); | |||||
| } | |||||
| @Test | |||||
| public void testProjectAndFilename() { | |||||
| Project p = new Project(); | |||||
| p.setBaseDir(root); | |||||
| FileResource f = new FileResource(p, "foo"); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testRelativeFactoryResource() { | |||||
| FileResource f = new FileResource(root, "foo"); | |||||
| FileResource relative = f.getResource("bar").as(FileResource.class); | |||||
| assertEquals(new File(root, "foo/bar"), relative.getFile()); | |||||
| assertEquals("foo/bar", relative.getName().replace(File.separatorChar, '/')); | |||||
| assertEquals(root, relative.getBaseDir()); | |||||
| } | |||||
| @Test | |||||
| public void testAbsoluteFactoryResource() { | |||||
| FileResource f = new FileResource(new File(root, "foo/a")); | |||||
| assertEquals(new File(root, "foo"), f.getBaseDir()); | |||||
| File bar = new File(root, "bar"); | |||||
| FileResource fromFactory = f.getResource(bar.getAbsolutePath()).as(FileResource.class); | |||||
| assertEquals(bar, fromFactory.getFile()); | |||||
| assertEquals(root, fromFactory.getBaseDir()); | |||||
| } | |||||
| @Test | |||||
| public void testParentSiblingFactoryResource() { | |||||
| FileResource f = new FileResource(new File(root, "foo/a")); | |||||
| assertEquals(new File(root, "foo"), f.getBaseDir()); | |||||
| FileResource parentSibling = f.getResource("../../bar").as(FileResource.class); | |||||
| assertEquals(root, parentSibling.getBaseDir()); | |||||
| assertEquals("bar", parentSibling.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.types.resources; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.junit.Before; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| /** | |||||
| * Test Java API of {@link FileResource}. | |||||
| */ | |||||
| public class FileResourceTest { | |||||
| private File root; | |||||
| @Before | |||||
| public void setUp() { | |||||
| root = new File(System.getProperty("root")); | |||||
| } | |||||
| @Test | |||||
| public void testAttributes() { | |||||
| FileResource f = new FileResource(); | |||||
| f.setBaseDir(root); | |||||
| f.setName("foo"); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testNonImmediateBasedir() { | |||||
| FileResource f = new FileResource(); | |||||
| f.setBaseDir(root); | |||||
| f.setName("foo/bar"); | |||||
| assertEquals(new File(root, "foo/bar"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo/bar", f.getName().replace(File.separatorChar, '/')); | |||||
| } | |||||
| @Test | |||||
| public void testFile() { | |||||
| FileResource f = new FileResource(new File(root, "foo")); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testBasedirAndName() { | |||||
| FileResource f = new FileResource(root, "foo"); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testNonImmediateBasedirAndName() { | |||||
| FileResource f = new FileResource(root, "foo/bar"); | |||||
| assertEquals(new File(root, "foo/bar"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo/bar", f.getName().replace(File.separatorChar, '/')); | |||||
| } | |||||
| @Test | |||||
| public void testProjectAndFilename() { | |||||
| Project p = new Project(); | |||||
| p.setBaseDir(root); | |||||
| FileResource f = new FileResource(p, "foo"); | |||||
| assertEquals(new File(root, "foo"), f.getFile()); | |||||
| assertEquals(root, f.getBaseDir()); | |||||
| assertEquals("foo", f.getName()); | |||||
| } | |||||
| @Test | |||||
| public void testRelativeFactoryResource() { | |||||
| FileResource f = new FileResource(root, "foo"); | |||||
| FileResource relative = f.getResource("bar").as(FileResource.class); | |||||
| assertEquals(new File(root, "foo/bar"), relative.getFile()); | |||||
| assertEquals("foo/bar", relative.getName().replace(File.separatorChar, '/')); | |||||
| assertEquals(root, relative.getBaseDir()); | |||||
| } | |||||
| @Test | |||||
| public void testAbsoluteFactoryResource() { | |||||
| FileResource f = new FileResource(new File(root, "foo/a")); | |||||
| assertEquals(new File(root, "foo"), f.getBaseDir()); | |||||
| File bar = new File(root, "bar"); | |||||
| FileResource fromFactory = f.getResource(bar.getAbsolutePath()).as(FileResource.class); | |||||
| assertEquals(bar, fromFactory.getFile()); | |||||
| assertEquals(root, fromFactory.getBaseDir()); | |||||
| } | |||||
| @Test | |||||
| public void testParentSiblingFactoryResource() { | |||||
| FileResource f = new FileResource(new File(root, "foo/a")); | |||||
| assertEquals(new File(root, "foo"), f.getBaseDir()); | |||||
| FileResource parentSibling = f.getResource("../../bar").as(FileResource.class); | |||||
| assertEquals(root, parentSibling.getBaseDir()); | |||||
| assertEquals("bar", parentSibling.getName()); | |||||
| } | |||||
| } | |||||
| @@ -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.types.resources; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertSame; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public class JavaResourceTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/resources/javaresource.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testLoadManifest() { | |||||
| buildRule.executeTarget("loadManifest"); | |||||
| assertNotNull(buildRule.getProject().getProperty("manifest")); | |||||
| // this actually relies on the first manifest being found on | |||||
| // the classpath (probably rt.jar's) being valid | |||||
| assertTrue(buildRule.getProject().getProperty("manifest") | |||||
| .startsWith("Manifest-Version:")); | |||||
| } | |||||
| @Test | |||||
| public void testIsURLProvider() { | |||||
| JavaResource r = new JavaResource(); | |||||
| assertSame(r, r.as(URLProvider.class)); | |||||
| } | |||||
| @Test | |||||
| public void testGetURLOfManifest() { | |||||
| JavaResource r = new JavaResource(); | |||||
| r.setName("META-INF/MANIFEST.MF"); | |||||
| assertNotNull(r.getURL()); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.resources; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertSame; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public class JavaResourceTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/resources/javaresource.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testLoadManifest() { | |||||
| buildRule.executeTarget("loadManifest"); | |||||
| assertNotNull(buildRule.getProject().getProperty("manifest")); | |||||
| // this actually relies on the first manifest being found on | |||||
| // the classpath (probably rt.jar's) being valid | |||||
| assertTrue(buildRule.getProject().getProperty("manifest") | |||||
| .startsWith("Manifest-Version:")); | |||||
| } | |||||
| @Test | |||||
| public void testIsURLProvider() { | |||||
| JavaResource r = new JavaResource(); | |||||
| assertSame(r, r.as(URLProvider.class)); | |||||
| } | |||||
| @Test | |||||
| public void testGetURLOfManifest() { | |||||
| JavaResource r = new JavaResource(); | |||||
| r.setName("META-INF/MANIFEST.MF"); | |||||
| assertNotNull(r.getURL()); | |||||
| } | |||||
| } | |||||
| @@ -1,186 +1,186 @@ | |||||
| /* | |||||
| * 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.resources; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | |||||
| import java.util.NoSuchElementException; | |||||
| import org.apache.tools.ant.types.Resource; | |||||
| import org.apache.tools.ant.types.ResourceCollection; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| public class LazyResourceCollectionTest { | |||||
| private class StringResourceCollection implements ResourceCollection { | |||||
| List resources = Arrays.<Resource>asList(); | |||||
| List createdIterators = new ArrayList(); | |||||
| public int size() { | |||||
| return resources.size(); | |||||
| } | |||||
| public Iterator<Resource> iterator() { | |||||
| StringResourceIterator it = new StringResourceIterator(); | |||||
| createdIterators.add(it); | |||||
| return it; | |||||
| } | |||||
| public boolean isFilesystemOnly() { | |||||
| return false; | |||||
| } | |||||
| } | |||||
| private class StringResourceIterator implements Iterator { | |||||
| int cursor = 0; | |||||
| public void remove() { | |||||
| throw new UnsupportedOperationException(); | |||||
| } | |||||
| public Object next() { | |||||
| if (cursor < 3) { | |||||
| cursor++; | |||||
| return new StringResource("r" + cursor); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| public boolean hasNext() { | |||||
| return cursor < 3; | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testLazyLoading() throws Exception { | |||||
| StringResourceCollection collectionTest = new StringResourceCollection(); | |||||
| LazyResourceCollectionWrapper lazyCollection = new LazyResourceCollectionWrapper(); | |||||
| lazyCollection.add(collectionTest); | |||||
| Iterator<Resource> it = lazyCollection.iterator(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| StringResourceIterator stringResourceIterator = (StringResourceIterator) collectionTest.createdIterators | |||||
| .get(0); | |||||
| assertEquals("A resource was loaded without iterating", 1, | |||||
| stringResourceIterator.cursor); | |||||
| StringResource r = (StringResource) it.next(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| assertEquals("r1", r.getValue()); | |||||
| assertEquals("Iterating once load more than 1 resource", 2, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it.next(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| assertEquals("r2", r.getValue()); | |||||
| assertEquals("Iterating twice load more than 2 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it.next(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| assertEquals("r3", r.getValue()); | |||||
| assertEquals("Iterating 3 times load more than 3 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| try { | |||||
| it.next(); | |||||
| fail("NoSuchElementException should have been raised"); | |||||
| } catch (NoSuchElementException e) { | |||||
| // ok | |||||
| } | |||||
| } | |||||
| private void assertOneCreatedIterator( | |||||
| StringResourceCollection testCollection) { | |||||
| assertEquals("More than one iterator has been created", 1, | |||||
| testCollection.createdIterators.size()); | |||||
| } | |||||
| @Test | |||||
| public void testCaching() throws Exception { | |||||
| StringResourceCollection collectionTest = new StringResourceCollection(); | |||||
| LazyResourceCollectionWrapper lazyCollection = new LazyResourceCollectionWrapper(); | |||||
| lazyCollection.add(collectionTest); | |||||
| assertTrue(lazyCollection.isCache()); | |||||
| Iterator<Resource> it1 = lazyCollection.iterator(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| Iterator<Resource> it2 = lazyCollection.iterator(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| StringResourceIterator stringResourceIterator = (StringResourceIterator) collectionTest.createdIterators | |||||
| .get(0); | |||||
| assertEquals("A resource was loaded without iterating", 1, | |||||
| stringResourceIterator.cursor); | |||||
| StringResource r = (StringResource) it1.next(); | |||||
| assertEquals("r1", r.getValue()); | |||||
| assertEquals("Iterating once load more than 1 resource", 2, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it2.next(); | |||||
| assertEquals("r1", r.getValue()); | |||||
| assertEquals( | |||||
| "The second iterator did not lookup in the cache for a resource", | |||||
| 2, stringResourceIterator.cursor); | |||||
| r = (StringResource) it2.next(); | |||||
| assertEquals("r2", r.getValue()); | |||||
| assertEquals("Iterating twice load more than 2 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it1.next(); | |||||
| assertEquals("r2", r.getValue()); | |||||
| assertEquals( | |||||
| "The first iterator did not lookup in the cache for a resource", | |||||
| 3, stringResourceIterator.cursor); | |||||
| r = (StringResource) it2.next(); | |||||
| assertEquals("r3", r.getValue()); | |||||
| assertEquals("Iterating 3 times load more than 3 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it1.next(); | |||||
| assertEquals("r3", r.getValue()); | |||||
| assertEquals( | |||||
| "The first iterator did not lookup in the cache for a resource", | |||||
| 3, stringResourceIterator.cursor); | |||||
| try { | |||||
| it1.next(); | |||||
| fail("NoSuchElementException should have been raised"); | |||||
| } catch (NoSuchElementException e) { | |||||
| // ok | |||||
| } | |||||
| try { | |||||
| it2.next(); | |||||
| fail("NoSuchElementException should have been raised"); | |||||
| } catch (NoSuchElementException e) { | |||||
| // ok | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.resources; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | |||||
| import java.util.NoSuchElementException; | |||||
| import org.apache.tools.ant.types.Resource; | |||||
| import org.apache.tools.ant.types.ResourceCollection; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| public class LazyResourceCollectionTest { | |||||
| private class StringResourceCollection implements ResourceCollection { | |||||
| List resources = Arrays.<Resource>asList(); | |||||
| List createdIterators = new ArrayList(); | |||||
| public int size() { | |||||
| return resources.size(); | |||||
| } | |||||
| public Iterator<Resource> iterator() { | |||||
| StringResourceIterator it = new StringResourceIterator(); | |||||
| createdIterators.add(it); | |||||
| return it; | |||||
| } | |||||
| public boolean isFilesystemOnly() { | |||||
| return false; | |||||
| } | |||||
| } | |||||
| private class StringResourceIterator implements Iterator { | |||||
| int cursor = 0; | |||||
| public void remove() { | |||||
| throw new UnsupportedOperationException(); | |||||
| } | |||||
| public Object next() { | |||||
| if (cursor < 3) { | |||||
| cursor++; | |||||
| return new StringResource("r" + cursor); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| public boolean hasNext() { | |||||
| return cursor < 3; | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testLazyLoading() throws Exception { | |||||
| StringResourceCollection collectionTest = new StringResourceCollection(); | |||||
| LazyResourceCollectionWrapper lazyCollection = new LazyResourceCollectionWrapper(); | |||||
| lazyCollection.add(collectionTest); | |||||
| Iterator<Resource> it = lazyCollection.iterator(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| StringResourceIterator stringResourceIterator = (StringResourceIterator) collectionTest.createdIterators | |||||
| .get(0); | |||||
| assertEquals("A resource was loaded without iterating", 1, | |||||
| stringResourceIterator.cursor); | |||||
| StringResource r = (StringResource) it.next(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| assertEquals("r1", r.getValue()); | |||||
| assertEquals("Iterating once load more than 1 resource", 2, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it.next(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| assertEquals("r2", r.getValue()); | |||||
| assertEquals("Iterating twice load more than 2 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it.next(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| assertEquals("r3", r.getValue()); | |||||
| assertEquals("Iterating 3 times load more than 3 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| try { | |||||
| it.next(); | |||||
| fail("NoSuchElementException should have been raised"); | |||||
| } catch (NoSuchElementException e) { | |||||
| // ok | |||||
| } | |||||
| } | |||||
| private void assertOneCreatedIterator( | |||||
| StringResourceCollection testCollection) { | |||||
| assertEquals("More than one iterator has been created", 1, | |||||
| testCollection.createdIterators.size()); | |||||
| } | |||||
| @Test | |||||
| public void testCaching() throws Exception { | |||||
| StringResourceCollection collectionTest = new StringResourceCollection(); | |||||
| LazyResourceCollectionWrapper lazyCollection = new LazyResourceCollectionWrapper(); | |||||
| lazyCollection.add(collectionTest); | |||||
| assertTrue(lazyCollection.isCache()); | |||||
| Iterator<Resource> it1 = lazyCollection.iterator(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| Iterator<Resource> it2 = lazyCollection.iterator(); | |||||
| assertOneCreatedIterator(collectionTest); | |||||
| StringResourceIterator stringResourceIterator = (StringResourceIterator) collectionTest.createdIterators | |||||
| .get(0); | |||||
| assertEquals("A resource was loaded without iterating", 1, | |||||
| stringResourceIterator.cursor); | |||||
| StringResource r = (StringResource) it1.next(); | |||||
| assertEquals("r1", r.getValue()); | |||||
| assertEquals("Iterating once load more than 1 resource", 2, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it2.next(); | |||||
| assertEquals("r1", r.getValue()); | |||||
| assertEquals( | |||||
| "The second iterator did not lookup in the cache for a resource", | |||||
| 2, stringResourceIterator.cursor); | |||||
| r = (StringResource) it2.next(); | |||||
| assertEquals("r2", r.getValue()); | |||||
| assertEquals("Iterating twice load more than 2 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it1.next(); | |||||
| assertEquals("r2", r.getValue()); | |||||
| assertEquals( | |||||
| "The first iterator did not lookup in the cache for a resource", | |||||
| 3, stringResourceIterator.cursor); | |||||
| r = (StringResource) it2.next(); | |||||
| assertEquals("r3", r.getValue()); | |||||
| assertEquals("Iterating 3 times load more than 3 resources", 3, | |||||
| stringResourceIterator.cursor); | |||||
| r = (StringResource) it1.next(); | |||||
| assertEquals("r3", r.getValue()); | |||||
| assertEquals( | |||||
| "The first iterator did not lookup in the cache for a resource", | |||||
| 3, stringResourceIterator.cursor); | |||||
| try { | |||||
| it1.next(); | |||||
| fail("NoSuchElementException should have been raised"); | |||||
| } catch (NoSuchElementException e) { | |||||
| // ok | |||||
| } | |||||
| try { | |||||
| it2.next(); | |||||
| fail("NoSuchElementException should have been raised"); | |||||
| } catch (NoSuchElementException e) { | |||||
| // ok | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,131 +1,131 @@ | |||||
| /* | |||||
| * 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.resources; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.types.AbstractFileSet; | |||||
| import org.apache.tools.ant.types.AbstractFileSetTest; | |||||
| import org.apache.tools.ant.types.Reference; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * This doesn't actually test much, mainly reference handling. | |||||
| */ | |||||
| public class MultiRootFileSetTest extends AbstractFileSetTest { | |||||
| protected AbstractFileSet getInstance() { | |||||
| return new MultiRootFileSet() { | |||||
| // overriding so set/getDir works as expected by the base test class | |||||
| private File dir; | |||||
| public void setDir(File dir) { | |||||
| if (isReference()) { | |||||
| throw tooManyAttributes(); | |||||
| } | |||||
| this.dir = dir; | |||||
| } | |||||
| public synchronized File getDir(Project p) { | |||||
| if (isReference()) { | |||||
| return getRef(p).getDir(p); | |||||
| } | |||||
| dieOnCircularReference(); | |||||
| return dir; | |||||
| } | |||||
| }; | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReferenceAdditionalAttributes() { | |||||
| MultiRootFileSet f = new MultiRootFileSet(); | |||||
| f.setProject(getProject()); | |||||
| f.setBaseDirs("a"); | |||||
| try { | |||||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||||
| fail("Can add reference to multirootfileset " | |||||
| + " with elements from setBasedirs"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| f = new MultiRootFileSet(); | |||||
| f.addConfiguredBaseDir(new FileResource(new File("."))); | |||||
| try { | |||||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||||
| fail("Can add reference to multirootfileset" | |||||
| + " with elements from addConfiguredBaseDir"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| f = new MultiRootFileSet(); | |||||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||||
| try { | |||||
| f.setBaseDirs("a"); | |||||
| fail("Can set basedirs in multirootfileset" | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| try { | |||||
| f.setCache(true); | |||||
| fail("Can set cache in multirootfileset" | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| try { | |||||
| f.setType(MultiRootFileSet.SetType.file); | |||||
| fail("Can set type in multirootfileset" | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| try { | |||||
| f.addConfiguredBaseDir(new FileResource(new File("."))); | |||||
| fail("Can add nested basedir in multirootfileset " | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using " | |||||
| + "refid", be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testDirCannotBeSet() { | |||||
| try { | |||||
| new MultiRootFileSet().setDir(new File(".")); | |||||
| fail("Can set dir in a multirootfileset"); | |||||
| } catch (BuildException e) { | |||||
| assertTrue(e.getMessage() | |||||
| .endsWith(" doesn't support the dir attribute")); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.resources; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.types.AbstractFileSet; | |||||
| import org.apache.tools.ant.types.AbstractFileSetTest; | |||||
| import org.apache.tools.ant.types.Reference; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * This doesn't actually test much, mainly reference handling. | |||||
| */ | |||||
| public class MultiRootFileSetTest extends AbstractFileSetTest { | |||||
| protected AbstractFileSet getInstance() { | |||||
| return new MultiRootFileSet() { | |||||
| // overriding so set/getDir works as expected by the base test class | |||||
| private File dir; | |||||
| public void setDir(File dir) { | |||||
| if (isReference()) { | |||||
| throw tooManyAttributes(); | |||||
| } | |||||
| this.dir = dir; | |||||
| } | |||||
| public synchronized File getDir(Project p) { | |||||
| if (isReference()) { | |||||
| return getRef(p).getDir(p); | |||||
| } | |||||
| dieOnCircularReference(); | |||||
| return dir; | |||||
| } | |||||
| }; | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementIfIsReferenceAdditionalAttributes() { | |||||
| MultiRootFileSet f = new MultiRootFileSet(); | |||||
| f.setProject(getProject()); | |||||
| f.setBaseDirs("a"); | |||||
| try { | |||||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||||
| fail("Can add reference to multirootfileset " | |||||
| + " with elements from setBasedirs"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| f = new MultiRootFileSet(); | |||||
| f.addConfiguredBaseDir(new FileResource(new File("."))); | |||||
| try { | |||||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||||
| fail("Can add reference to multirootfileset" | |||||
| + " with elements from addConfiguredBaseDir"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| f = new MultiRootFileSet(); | |||||
| f.setRefid(new Reference(getProject(), "dummyref")); | |||||
| try { | |||||
| f.setBaseDirs("a"); | |||||
| fail("Can set basedirs in multirootfileset" | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| try { | |||||
| f.setCache(true); | |||||
| fail("Can set cache in multirootfileset" | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| try { | |||||
| f.setType(MultiRootFileSet.SetType.file); | |||||
| fail("Can set type in multirootfileset" | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute " | |||||
| + "when using refid", be.getMessage()); | |||||
| } | |||||
| try { | |||||
| f.addConfiguredBaseDir(new FileResource(new File("."))); | |||||
| fail("Can add nested basedir in multirootfileset " | |||||
| + " that is a reference."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using " | |||||
| + "refid", be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testDirCannotBeSet() { | |||||
| try { | |||||
| new MultiRootFileSet().setDir(new File(".")); | |||||
| fail("Can set dir in a multirootfileset"); | |||||
| } catch (BuildException e) { | |||||
| assertTrue(e.getMessage() | |||||
| .endsWith(" doesn't support the dir attribute")); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,134 +1,134 @@ | |||||
| /* | |||||
| * 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.resources; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.types.FilterChain; | |||||
| import org.apache.tools.ant.types.Reference; | |||||
| 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; | |||||
| public class ResourceListTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() throws Exception { | |||||
| buildRule.configureProject("src/etc/testcases/types/resources/resourcelist.xml"); | |||||
| } | |||||
| @After | |||||
| public void tearDown() throws Exception { | |||||
| buildRule.executeTarget("tearDown"); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementWithReference() { | |||||
| ResourceList rl = new ResourceList(); | |||||
| rl.setEncoding("foo"); | |||||
| try { | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| fail("Can add reference to ResourceList with encoding attribute set."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| try { | |||||
| rl.setEncoding("foo"); | |||||
| fail("Can set encoding in ResourceList that is a reference"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.add(new FileResource(buildRule.getProject(), ".")); | |||||
| try { | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| fail("Can add reference to ResourceList with nested resource collection."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| try { | |||||
| rl.add(new FileResource(buildRule.getProject(), ".")); | |||||
| fail("Can add reference to ResourceList with nested resource collection."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.addFilterChain(new FilterChain()); | |||||
| try { | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| fail("Can add reference to ResourceList with nested filter chain."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| try { | |||||
| rl.addFilterChain(new FilterChain()); | |||||
| fail("Can add reference to ResourceList with nested filter chain."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testCircularReference() throws Exception { | |||||
| ResourceList rl1 = new ResourceList(); | |||||
| rl1.setProject(buildRule.getProject()); | |||||
| rl1.setRefid(new Reference(buildRule.getProject(), "foo")); | |||||
| ResourceList rl2 = new ResourceList(); | |||||
| rl2.setProject(buildRule.getProject()); | |||||
| buildRule.getProject().addReference("foo", rl2); | |||||
| Union u = new Union(); | |||||
| u.add(rl1); | |||||
| u.setProject(buildRule.getProject()); | |||||
| rl2.add(u); | |||||
| try { | |||||
| rl2.size(); | |||||
| fail("Can make ResourceList a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.resources; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.apache.tools.ant.types.FilterChain; | |||||
| import org.apache.tools.ant.types.Reference; | |||||
| 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; | |||||
| public class ResourceListTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() throws Exception { | |||||
| buildRule.configureProject("src/etc/testcases/types/resources/resourcelist.xml"); | |||||
| } | |||||
| @After | |||||
| public void tearDown() throws Exception { | |||||
| buildRule.executeTarget("tearDown"); | |||||
| } | |||||
| @Test | |||||
| public void testEmptyElementWithReference() { | |||||
| ResourceList rl = new ResourceList(); | |||||
| rl.setEncoding("foo"); | |||||
| try { | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| fail("Can add reference to ResourceList with encoding attribute set."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| try { | |||||
| rl.setEncoding("foo"); | |||||
| fail("Can set encoding in ResourceList that is a reference"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify more than one attribute when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.add(new FileResource(buildRule.getProject(), ".")); | |||||
| try { | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| fail("Can add reference to ResourceList with nested resource collection."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| try { | |||||
| rl.add(new FileResource(buildRule.getProject(), ".")); | |||||
| fail("Can add reference to ResourceList with nested resource collection."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.addFilterChain(new FilterChain()); | |||||
| try { | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| fail("Can add reference to ResourceList with nested filter chain."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| rl = new ResourceList(); | |||||
| rl.setRefid(new Reference(buildRule.getProject(), "dummyref")); | |||||
| try { | |||||
| rl.addFilterChain(new FilterChain()); | |||||
| fail("Can add reference to ResourceList with nested filter chain."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("You must not specify nested elements when using refid", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testCircularReference() throws Exception { | |||||
| ResourceList rl1 = new ResourceList(); | |||||
| rl1.setProject(buildRule.getProject()); | |||||
| rl1.setRefid(new Reference(buildRule.getProject(), "foo")); | |||||
| ResourceList rl2 = new ResourceList(); | |||||
| rl2.setProject(buildRule.getProject()); | |||||
| buildRule.getProject().addReference("foo", rl2); | |||||
| Union u = new Union(); | |||||
| u.add(rl1); | |||||
| u.setProject(buildRule.getProject()); | |||||
| rl2.add(u); | |||||
| try { | |||||
| rl2.size(); | |||||
| fail("Can make ResourceList a Reference to itself."); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("This data type contains a circular reference.", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,54 +1,54 @@ | |||||
| /* | |||||
| * 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.resources; | |||||
| 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.apache.tools.ant.FileUtilities.getFileContents; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public class TarResourceTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() throws Exception { | |||||
| buildRule.configureProject("src/etc/testcases/types/resources/tarentry.xml"); | |||||
| } | |||||
| @After | |||||
| public void tearDown() throws Exception { | |||||
| buildRule.executeTarget("tearDown"); | |||||
| } | |||||
| @Test | |||||
| public void testUncompressSource() throws java.io.IOException { | |||||
| buildRule.executeTarget("uncompressSource"); | |||||
| assertEquals(getFileContents(buildRule.getProject().resolveFile("../../asf-logo.gif")), | |||||
| getFileContents(new File(buildRule.getProject().getProperty("output"), "asf-logo.gif"))); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.resources; | |||||
| 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.apache.tools.ant.FileUtilities.getFileContents; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public class TarResourceTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() throws Exception { | |||||
| buildRule.configureProject("src/etc/testcases/types/resources/tarentry.xml"); | |||||
| } | |||||
| @After | |||||
| public void tearDown() throws Exception { | |||||
| buildRule.executeTarget("tearDown"); | |||||
| } | |||||
| @Test | |||||
| public void testUncompressSource() throws java.io.IOException { | |||||
| buildRule.executeTarget("uncompressSource"); | |||||
| assertEquals(getFileContents(buildRule.getProject().resolveFile("../../asf-logo.gif")), | |||||
| getFileContents(new File(buildRule.getProject().getProperty("output"), "asf-logo.gif"))); | |||||
| } | |||||
| } | |||||
| @@ -1,125 +1,125 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| /** | |||||
| * Base test case for Selectors. Provides a shared test as well as | |||||
| * a test bed for selecting on, and a helper method for determining | |||||
| * whether selections are correct. | |||||
| * | |||||
| */ | |||||
| public class BaseSelectorRule extends BuildFileRule { | |||||
| private File beddir; | |||||
| private File mirrordir; | |||||
| private final String[] filenames = {".","asf-logo.gif.md5","asf-logo.gif.bz2", | |||||
| "asf-logo.gif.gz","copy.filterset.filtered","zip/asf-logo.gif.zip", | |||||
| "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", | |||||
| "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", | |||||
| "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; | |||||
| private File[] files = new File[filenames.length]; | |||||
| private File[] mirrorfiles = new File[filenames.length]; | |||||
| @Override | |||||
| public void before() throws Throwable { | |||||
| super.before(); | |||||
| configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| executeTarget("setUp"); | |||||
| executeTarget("setupfiles"); | |||||
| executeTarget("mirrorfiles"); | |||||
| beddir = new File(super.getProject().getProperty("test.dir")); | |||||
| mirrordir = new File(super.getProject().getProperty("mirror.dir")); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| files[x] = new File(beddir,filenames[x]); | |||||
| mirrorfiles[x] = new File(mirrordir,filenames[x]); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public void after() { | |||||
| super.after(); | |||||
| executeTarget("tearDown"); | |||||
| } | |||||
| public File getBeddir() { | |||||
| return beddir; | |||||
| } | |||||
| public File[] getMirrorFiles() { | |||||
| return mirrorfiles; | |||||
| } | |||||
| public File[] getFiles() { | |||||
| return files; | |||||
| } | |||||
| public String[] getFilenames() { | |||||
| return filenames; | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the testbed. It returns | |||||
| * a string of "T"s amd "F"s | |||||
| */ | |||||
| public String selectionString(FileSelector selector) { | |||||
| return selectionString(beddir,files,selector); | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the mirror testbed. This | |||||
| * variation is used for dependency checks and to get around the | |||||
| * limitations in the touch task when running JDK 1.1. It returns | |||||
| * a string of "T"s amd "F"s. | |||||
| */ | |||||
| public String mirrorSelectionString(FileSelector selector) { | |||||
| return selectionString(mirrordir,mirrorfiles,selector); | |||||
| } | |||||
| /** | |||||
| * Worker method for the two convenience methods above. Applies a | |||||
| * selector on a set of files passed in and returns a string of | |||||
| * "T"s amd "F"s from applying the selector to each file. | |||||
| */ | |||||
| public String selectionString(File basedir, File[] files, FileSelector selector) { | |||||
| StringBuilder buf = new StringBuilder(); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| if (selector.isSelected(basedir,filenames[x],files[x])) { | |||||
| buf.append('T'); | |||||
| } | |||||
| else { | |||||
| buf.append('F'); | |||||
| } | |||||
| } | |||||
| return buf.toString(); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| /** | |||||
| * Base test case for Selectors. Provides a shared test as well as | |||||
| * a test bed for selecting on, and a helper method for determining | |||||
| * whether selections are correct. | |||||
| * | |||||
| */ | |||||
| public class BaseSelectorRule extends BuildFileRule { | |||||
| private File beddir; | |||||
| private File mirrordir; | |||||
| private final String[] filenames = {".","asf-logo.gif.md5","asf-logo.gif.bz2", | |||||
| "asf-logo.gif.gz","copy.filterset.filtered","zip/asf-logo.gif.zip", | |||||
| "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", | |||||
| "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", | |||||
| "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; | |||||
| private File[] files = new File[filenames.length]; | |||||
| private File[] mirrorfiles = new File[filenames.length]; | |||||
| @Override | |||||
| public void before() throws Throwable { | |||||
| super.before(); | |||||
| configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| executeTarget("setUp"); | |||||
| executeTarget("setupfiles"); | |||||
| executeTarget("mirrorfiles"); | |||||
| beddir = new File(super.getProject().getProperty("test.dir")); | |||||
| mirrordir = new File(super.getProject().getProperty("mirror.dir")); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| files[x] = new File(beddir,filenames[x]); | |||||
| mirrorfiles[x] = new File(mirrordir,filenames[x]); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public void after() { | |||||
| super.after(); | |||||
| executeTarget("tearDown"); | |||||
| } | |||||
| public File getBeddir() { | |||||
| return beddir; | |||||
| } | |||||
| public File[] getMirrorFiles() { | |||||
| return mirrorfiles; | |||||
| } | |||||
| public File[] getFiles() { | |||||
| return files; | |||||
| } | |||||
| public String[] getFilenames() { | |||||
| return filenames; | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the testbed. It returns | |||||
| * a string of "T"s amd "F"s | |||||
| */ | |||||
| public String selectionString(FileSelector selector) { | |||||
| return selectionString(beddir,files,selector); | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the mirror testbed. This | |||||
| * variation is used for dependency checks and to get around the | |||||
| * limitations in the touch task when running JDK 1.1. It returns | |||||
| * a string of "T"s amd "F"s. | |||||
| */ | |||||
| public String mirrorSelectionString(FileSelector selector) { | |||||
| return selectionString(mirrordir,mirrorfiles,selector); | |||||
| } | |||||
| /** | |||||
| * Worker method for the two convenience methods above. Applies a | |||||
| * selector on a set of files passed in and returns a string of | |||||
| * "T"s amd "F"s from applying the selector to each file. | |||||
| */ | |||||
| public String selectionString(File basedir, File[] files, FileSelector selector) { | |||||
| StringBuilder buf = new StringBuilder(); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| if (selector.isSelected(basedir,filenames[x],files[x])) { | |||||
| buf.append('T'); | |||||
| } | |||||
| else { | |||||
| buf.append('F'); | |||||
| } | |||||
| } | |||||
| return buf.toString(); | |||||
| } | |||||
| } | |||||
| @@ -1,295 +1,295 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| import org.apache.tools.ant.Project; | |||||
| /** | |||||
| * Base test case for Selectors. Provides a shared test as well as | |||||
| * a test bed for selecting on, and a helper method for determining | |||||
| * whether selections are correct. | |||||
| * | |||||
| * @deprecated as of 1.9.4. Use {@link org.apache.tools.ant.types.selectors.BaseSelectorRule} instead. | |||||
| */ | |||||
| @Deprecated | |||||
| public abstract class BaseSelectorTest extends BuildFileTest { | |||||
| private Project project; | |||||
| private TaskdefForMakingBed tbed = null; | |||||
| protected File basedir; | |||||
| protected File beddir; | |||||
| protected File mirrordir; | |||||
| protected String[] filenames = {".","asf-logo.gif.md5","asf-logo.gif.bz2", | |||||
| "asf-logo.gif.gz","copy.filterset.filtered","zip/asf-logo.gif.zip", | |||||
| "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", | |||||
| "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", | |||||
| "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; | |||||
| protected File[] files = new File[filenames.length]; | |||||
| protected File[] mirrorfiles = new File[filenames.length]; | |||||
| public BaseSelectorTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| public void setUp() { | |||||
| configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| executeTarget("setUp"); | |||||
| beddir = new File(super.getProject().getProperty("test.dir")); | |||||
| mirrordir = new File(super.getProject().getProperty("mirror.dir")); | |||||
| basedir = getProjectDir(); | |||||
| project = new Project(); | |||||
| project.init(); | |||||
| project.setBaseDir(basedir); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| files[x] = new File(beddir,filenames[x]); | |||||
| mirrorfiles[x] = new File(mirrordir,filenames[x]); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Override this in child classes to return a specific Selector | |||||
| */ | |||||
| public abstract BaseSelector getInstance(); | |||||
| /** | |||||
| * Return a preconfigured selector (with a set reference to | |||||
| * project instance). | |||||
| * @return the selector | |||||
| */ | |||||
| public BaseSelector getSelector() { | |||||
| BaseSelector selector = getInstance(); | |||||
| selector.setProject( getProject() ); | |||||
| return selector; | |||||
| } | |||||
| public Project getProject() { | |||||
| return project; | |||||
| } | |||||
| /** | |||||
| * This is a test that all Selectors derived from BaseSelector can | |||||
| * use. It calls the setError() method and checks to ensure that a | |||||
| * BuildException is thrown as a result. | |||||
| */ | |||||
| public void testRespondsToError() { | |||||
| BaseSelector s = getInstance(); | |||||
| if (s == null) { | |||||
| return; | |||||
| } | |||||
| s.setError("test error"); | |||||
| try { | |||||
| s.isSelected(beddir,filenames[0],files[0]); | |||||
| fail("Cannot cause BuildException when setError() is called"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("test error", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the testbed. It returns | |||||
| * a string of "T"s amd "F"s | |||||
| */ | |||||
| public String selectionString(FileSelector selector) { | |||||
| return selectionString(beddir,files,selector); | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the mirror testbed. This | |||||
| * variation is used for dependency checks and to get around the | |||||
| * limitations in the touch task when running JDK 1.1. It returns | |||||
| * a string of "T"s amd "F"s. | |||||
| */ | |||||
| public String mirrorSelectionString(FileSelector selector) { | |||||
| return selectionString(mirrordir,mirrorfiles,selector); | |||||
| } | |||||
| /** | |||||
| * Worker method for the two convenience methods above. Applies a | |||||
| * selector on a set of files passed in and returns a string of | |||||
| * "T"s amd "F"s from applying the selector to each file. | |||||
| */ | |||||
| public String selectionString(File basedir, File[] files, FileSelector selector) { | |||||
| StringBuffer buf = new StringBuffer(); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| if (selector.isSelected(basedir,filenames[x],files[x])) { | |||||
| buf.append('T'); | |||||
| } | |||||
| else { | |||||
| buf.append('F'); | |||||
| } | |||||
| } | |||||
| return buf.toString(); | |||||
| } | |||||
| /** | |||||
| * Does the selection test for a given selector and prints the | |||||
| * filenames of the differing files (selected but shouldn't, | |||||
| * not selected but should). | |||||
| * @param selector The selector to test | |||||
| * @param expected The expected result | |||||
| */ | |||||
| public void performTests(FileSelector selector, String expected) { | |||||
| String result = selectionString(selector); | |||||
| String diff = diff(expected, result); | |||||
| String resolved = resolve(diff); | |||||
| assertEquals("Differing files: " + resolved, result, expected); | |||||
| } | |||||
| /** | |||||
| * Checks which files are selected and shouldn't be or which | |||||
| * are not selected but should. | |||||
| * @param expected String containing 'F's and 'T's | |||||
| * @param result String containing 'F's and 'T's | |||||
| * @return Difference as String containing '-' (equal) and | |||||
| * 'X' (difference). | |||||
| */ | |||||
| public String diff(String expected, String result) { | |||||
| int length1 = expected.length(); | |||||
| int length2 = result.length(); | |||||
| int min = (length1 > length2) ? length2 : length1; | |||||
| StringBuffer sb = new StringBuffer(); | |||||
| for (int i=0; i<min; i++) { | |||||
| sb.append( | |||||
| (expected.charAt(i) == result.charAt(i)) | |||||
| ? "-" | |||||
| : "X" | |||||
| ); | |||||
| } | |||||
| return sb.toString(); | |||||
| } | |||||
| /** | |||||
| * Resolves a diff-String (@see diff()) against the (inherited) filenames- | |||||
| * and files arrays. | |||||
| * @param filelist Diff-String | |||||
| * @return String containing the filenames for all differing files, | |||||
| * separated with semicolons ';' | |||||
| */ | |||||
| public String resolve(String filelist) { | |||||
| StringBuffer sb = new StringBuffer(); | |||||
| int min = (filenames.length > filelist.length()) | |||||
| ? filelist.length() | |||||
| : filenames.length; | |||||
| for (int i=0; i<min; i++) { | |||||
| if ('X'==filelist.charAt(i)) { | |||||
| sb.append(filenames[i]); | |||||
| sb.append(";"); | |||||
| } | |||||
| } | |||||
| return sb.toString(); | |||||
| } | |||||
| /** | |||||
| * <p>Creates a testbed. We avoid the dreaded "test" word so that we | |||||
| * don't falsely identify this as a test to be run. The actual | |||||
| * setting up of the testbed is done in the | |||||
| * <code>src/etc/testcases/types/selectors.xml</code> build file.</p> | |||||
| * | |||||
| * <p>Note that the right way to call this is within a try block, | |||||
| * with a finally clause that calls cleanupBed(). You place tests of | |||||
| * the isSelected() method within the try block.</p> | |||||
| */ | |||||
| protected void makeBed() { | |||||
| tbed = new TaskdefForMakingBed("setupfiles"); | |||||
| tbed.setUp(); | |||||
| tbed.makeTestbed(); | |||||
| } | |||||
| /** | |||||
| * Cleans up the testbed by calling a target in the | |||||
| * <code>src/etc/testcases/types/selectors.xml</code> file. | |||||
| */ | |||||
| protected void cleanupBed() { | |||||
| if (tbed != null) { | |||||
| tbed.tearDown(); | |||||
| tbed = null; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * <p>Creates a mirror of the testbed for use in dependency checks.</p> | |||||
| * | |||||
| * <p>Note that the right way to call this is within a try block, | |||||
| * with a finally clause that calls cleanupMirror(). You place tests of | |||||
| * the isSelected() method within the try block.</p> | |||||
| */ | |||||
| protected void makeMirror() { | |||||
| tbed = new TaskdefForMakingBed("mirrorfiles"); | |||||
| tbed.setUp(); | |||||
| tbed.makeMirror(); | |||||
| } | |||||
| /** | |||||
| * Cleans up the mirror testbed by calling a target in the | |||||
| * <code>src/etc/testcases/types/selectors.xml</code> file. | |||||
| */ | |||||
| protected void cleanupMirror() { | |||||
| if (tbed != null) { | |||||
| tbed.deleteMirror(); | |||||
| tbed = null; | |||||
| } | |||||
| } | |||||
| private class TaskdefForMakingBed extends BuildFileTest { | |||||
| TaskdefForMakingBed(String name) { | |||||
| super(name); | |||||
| } | |||||
| public void setUp() { | |||||
| configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| } | |||||
| public void tearDown() { | |||||
| try { | |||||
| super.tearDown(); | |||||
| } catch (Exception exc) { | |||||
| // ignore | |||||
| } | |||||
| } | |||||
| public void makeTestbed() { | |||||
| executeTarget("setupfiles"); | |||||
| } | |||||
| public void makeMirror() { | |||||
| executeTarget("mirrorfiles"); | |||||
| } | |||||
| public void deleteMirror() { | |||||
| 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. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.types.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| import org.apache.tools.ant.Project; | |||||
| /** | |||||
| * Base test case for Selectors. Provides a shared test as well as | |||||
| * a test bed for selecting on, and a helper method for determining | |||||
| * whether selections are correct. | |||||
| * | |||||
| * @deprecated as of 1.9.4. Use {@link org.apache.tools.ant.types.selectors.BaseSelectorRule} instead. | |||||
| */ | |||||
| @Deprecated | |||||
| public abstract class BaseSelectorTest extends BuildFileTest { | |||||
| private Project project; | |||||
| private TaskdefForMakingBed tbed = null; | |||||
| protected File basedir; | |||||
| protected File beddir; | |||||
| protected File mirrordir; | |||||
| protected String[] filenames = {".","asf-logo.gif.md5","asf-logo.gif.bz2", | |||||
| "asf-logo.gif.gz","copy.filterset.filtered","zip/asf-logo.gif.zip", | |||||
| "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", | |||||
| "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", | |||||
| "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; | |||||
| protected File[] files = new File[filenames.length]; | |||||
| protected File[] mirrorfiles = new File[filenames.length]; | |||||
| public BaseSelectorTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| public void setUp() { | |||||
| configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| executeTarget("setUp"); | |||||
| beddir = new File(super.getProject().getProperty("test.dir")); | |||||
| mirrordir = new File(super.getProject().getProperty("mirror.dir")); | |||||
| basedir = getProjectDir(); | |||||
| project = new Project(); | |||||
| project.init(); | |||||
| project.setBaseDir(basedir); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| files[x] = new File(beddir,filenames[x]); | |||||
| mirrorfiles[x] = new File(mirrordir,filenames[x]); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Override this in child classes to return a specific Selector | |||||
| */ | |||||
| public abstract BaseSelector getInstance(); | |||||
| /** | |||||
| * Return a preconfigured selector (with a set reference to | |||||
| * project instance). | |||||
| * @return the selector | |||||
| */ | |||||
| public BaseSelector getSelector() { | |||||
| BaseSelector selector = getInstance(); | |||||
| selector.setProject( getProject() ); | |||||
| return selector; | |||||
| } | |||||
| public Project getProject() { | |||||
| return project; | |||||
| } | |||||
| /** | |||||
| * This is a test that all Selectors derived from BaseSelector can | |||||
| * use. It calls the setError() method and checks to ensure that a | |||||
| * BuildException is thrown as a result. | |||||
| */ | |||||
| public void testRespondsToError() { | |||||
| BaseSelector s = getInstance(); | |||||
| if (s == null) { | |||||
| return; | |||||
| } | |||||
| s.setError("test error"); | |||||
| try { | |||||
| s.isSelected(beddir,filenames[0],files[0]); | |||||
| fail("Cannot cause BuildException when setError() is called"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("test error", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the testbed. It returns | |||||
| * a string of "T"s amd "F"s | |||||
| */ | |||||
| public String selectionString(FileSelector selector) { | |||||
| return selectionString(beddir,files,selector); | |||||
| } | |||||
| /** | |||||
| * This is a helper method that takes a selector and calls its | |||||
| * isSelected() method on each file in the mirror testbed. This | |||||
| * variation is used for dependency checks and to get around the | |||||
| * limitations in the touch task when running JDK 1.1. It returns | |||||
| * a string of "T"s amd "F"s. | |||||
| */ | |||||
| public String mirrorSelectionString(FileSelector selector) { | |||||
| return selectionString(mirrordir,mirrorfiles,selector); | |||||
| } | |||||
| /** | |||||
| * Worker method for the two convenience methods above. Applies a | |||||
| * selector on a set of files passed in and returns a string of | |||||
| * "T"s amd "F"s from applying the selector to each file. | |||||
| */ | |||||
| public String selectionString(File basedir, File[] files, FileSelector selector) { | |||||
| StringBuffer buf = new StringBuffer(); | |||||
| for (int x = 0; x < files.length; x++) { | |||||
| if (selector.isSelected(basedir,filenames[x],files[x])) { | |||||
| buf.append('T'); | |||||
| } | |||||
| else { | |||||
| buf.append('F'); | |||||
| } | |||||
| } | |||||
| return buf.toString(); | |||||
| } | |||||
| /** | |||||
| * Does the selection test for a given selector and prints the | |||||
| * filenames of the differing files (selected but shouldn't, | |||||
| * not selected but should). | |||||
| * @param selector The selector to test | |||||
| * @param expected The expected result | |||||
| */ | |||||
| public void performTests(FileSelector selector, String expected) { | |||||
| String result = selectionString(selector); | |||||
| String diff = diff(expected, result); | |||||
| String resolved = resolve(diff); | |||||
| assertEquals("Differing files: " + resolved, result, expected); | |||||
| } | |||||
| /** | |||||
| * Checks which files are selected and shouldn't be or which | |||||
| * are not selected but should. | |||||
| * @param expected String containing 'F's and 'T's | |||||
| * @param result String containing 'F's and 'T's | |||||
| * @return Difference as String containing '-' (equal) and | |||||
| * 'X' (difference). | |||||
| */ | |||||
| public String diff(String expected, String result) { | |||||
| int length1 = expected.length(); | |||||
| int length2 = result.length(); | |||||
| int min = (length1 > length2) ? length2 : length1; | |||||
| StringBuffer sb = new StringBuffer(); | |||||
| for (int i=0; i<min; i++) { | |||||
| sb.append( | |||||
| (expected.charAt(i) == result.charAt(i)) | |||||
| ? "-" | |||||
| : "X" | |||||
| ); | |||||
| } | |||||
| return sb.toString(); | |||||
| } | |||||
| /** | |||||
| * Resolves a diff-String (@see diff()) against the (inherited) filenames- | |||||
| * and files arrays. | |||||
| * @param filelist Diff-String | |||||
| * @return String containing the filenames for all differing files, | |||||
| * separated with semicolons ';' | |||||
| */ | |||||
| public String resolve(String filelist) { | |||||
| StringBuffer sb = new StringBuffer(); | |||||
| int min = (filenames.length > filelist.length()) | |||||
| ? filelist.length() | |||||
| : filenames.length; | |||||
| for (int i=0; i<min; i++) { | |||||
| if ('X'==filelist.charAt(i)) { | |||||
| sb.append(filenames[i]); | |||||
| sb.append(";"); | |||||
| } | |||||
| } | |||||
| return sb.toString(); | |||||
| } | |||||
| /** | |||||
| * <p>Creates a testbed. We avoid the dreaded "test" word so that we | |||||
| * don't falsely identify this as a test to be run. The actual | |||||
| * setting up of the testbed is done in the | |||||
| * <code>src/etc/testcases/types/selectors.xml</code> build file.</p> | |||||
| * | |||||
| * <p>Note that the right way to call this is within a try block, | |||||
| * with a finally clause that calls cleanupBed(). You place tests of | |||||
| * the isSelected() method within the try block.</p> | |||||
| */ | |||||
| protected void makeBed() { | |||||
| tbed = new TaskdefForMakingBed("setupfiles"); | |||||
| tbed.setUp(); | |||||
| tbed.makeTestbed(); | |||||
| } | |||||
| /** | |||||
| * Cleans up the testbed by calling a target in the | |||||
| * <code>src/etc/testcases/types/selectors.xml</code> file. | |||||
| */ | |||||
| protected void cleanupBed() { | |||||
| if (tbed != null) { | |||||
| tbed.tearDown(); | |||||
| tbed = null; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * <p>Creates a mirror of the testbed for use in dependency checks.</p> | |||||
| * | |||||
| * <p>Note that the right way to call this is within a try block, | |||||
| * with a finally clause that calls cleanupMirror(). You place tests of | |||||
| * the isSelected() method within the try block.</p> | |||||
| */ | |||||
| protected void makeMirror() { | |||||
| tbed = new TaskdefForMakingBed("mirrorfiles"); | |||||
| tbed.setUp(); | |||||
| tbed.makeMirror(); | |||||
| } | |||||
| /** | |||||
| * Cleans up the mirror testbed by calling a target in the | |||||
| * <code>src/etc/testcases/types/selectors.xml</code> file. | |||||
| */ | |||||
| protected void cleanupMirror() { | |||||
| if (tbed != null) { | |||||
| tbed.deleteMirror(); | |||||
| tbed = null; | |||||
| } | |||||
| } | |||||
| private class TaskdefForMakingBed extends BuildFileTest { | |||||
| TaskdefForMakingBed(String name) { | |||||
| super(name); | |||||
| } | |||||
| public void setUp() { | |||||
| configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| } | |||||
| public void tearDown() { | |||||
| try { | |||||
| super.tearDown(); | |||||
| } catch (Exception exc) { | |||||
| // ignore | |||||
| } | |||||
| } | |||||
| public void makeTestbed() { | |||||
| executeTarget("setupfiles"); | |||||
| } | |||||
| public void makeMirror() { | |||||
| executeTarget("mirrorfiles"); | |||||
| } | |||||
| public void deleteMirror() { | |||||
| executeTarget("tearDown"); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,56 +1,56 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public class ContainsRegexpTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testContainsRegexp() { | |||||
| buildRule.executeTarget("containsregexp"); | |||||
| File dir = new File(buildRule.getOutputDir(), "regexpseltestdest"); | |||||
| File[] files = dir.listFiles(); | |||||
| int filecount = files.length; | |||||
| if (filecount != 1) { | |||||
| assertEquals("ContainsRegexp test should have copied 1 file", | |||||
| 1, files.length); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public class ContainsRegexpTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/selectors.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testContainsRegexp() { | |||||
| buildRule.executeTarget("containsregexp"); | |||||
| File dir = new File(buildRule.getOutputDir(), "regexpseltestdest"); | |||||
| File[] files = dir.listFiles(); | |||||
| int filecount = files.length; | |||||
| if (filecount != 1) { | |||||
| assertEquals("ContainsRegexp test should have copied 1 file", | |||||
| 1, files.length); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,114 +1,114 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Contains Selectors. | |||||
| * | |||||
| */ | |||||
| public class ContainsSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| ContainsSelector s = new ContainsSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("ContainsSelector did not check for required field 'text'"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The text attribute is required", be1.getMessage()); | |||||
| } | |||||
| s = new ContainsSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = {param}; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("ContainsSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("Invalid parameter garbage in", be2.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| ContainsSelector s; | |||||
| String results; | |||||
| s = new ContainsSelector(); | |||||
| s.setText("no such string in test files"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("Apache Ant"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("apache ant"); | |||||
| s.setCasesensitive(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("apache ant"); | |||||
| s.setCasesensitive(false); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("ApacheAnt"); | |||||
| s.setIgnorewhitespace(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("A p a c h e A n t"); | |||||
| s.setIgnorewhitespace(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Contains Selectors. | |||||
| * | |||||
| */ | |||||
| public class ContainsSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| ContainsSelector s = new ContainsSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("ContainsSelector did not check for required field 'text'"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The text attribute is required", be1.getMessage()); | |||||
| } | |||||
| s = new ContainsSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = {param}; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("ContainsSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("Invalid parameter garbage in", be2.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| ContainsSelector s; | |||||
| String results; | |||||
| s = new ContainsSelector(); | |||||
| s.setText("no such string in test files"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("Apache Ant"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("apache ant"); | |||||
| s.setCasesensitive(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("apache ant"); | |||||
| s.setCasesensitive(false); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("ApacheAnt"); | |||||
| s.setIgnorewhitespace(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new ContainsSelector(); | |||||
| s.setText("A p a c h e A n t"); | |||||
| s.setIgnorewhitespace(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| } | |||||
| } | |||||
| @@ -1,229 +1,229 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Assume; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Date Selectors. | |||||
| * | |||||
| */ | |||||
| public class DateSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| DateSelector s = new DateSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("You must provide a datetime or the number of " | |||||
| + "milliseconds.", be1.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("01/01/1969 01:01 AM"); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for Datetime being in the " | |||||
| + "allowable range"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("Date of 01/01/1969 01:01 AM results in negative " | |||||
| + "milliseconds value relative to epoch (January 1, " | |||||
| + "1970, 00:00:00 GMT).", be2.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("this is not a date"); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for Datetime being in a " | |||||
| + "valid format"); | |||||
| } catch (BuildException be3) { | |||||
| assertEquals("Date of this is not a date" | |||||
| + " Cannot be parsed correctly. It should be in" | |||||
| + " MM/DD/YYYY HH:MM AM_PM format.", be3.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = new Parameter[1]; | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be4) { | |||||
| assertEquals("Invalid parameter garbage in", be4.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("millis"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for valid millis parameter"); | |||||
| } catch (BuildException be5) { | |||||
| assertEquals("Invalid millisecond setting garbage out", | |||||
| be5.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("granularity"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for valid granularity parameter"); | |||||
| } catch (BuildException be6) { | |||||
| assertEquals("Invalid granularity setting garbage out", | |||||
| be6.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| DateSelector s; | |||||
| String results; | |||||
| DateSelector.TimeComparisons before = new | |||||
| DateSelector.TimeComparisons(); | |||||
| before.setValue("before"); | |||||
| DateSelector.TimeComparisons equal = new | |||||
| DateSelector.TimeComparisons(); | |||||
| equal.setValue("equal"); | |||||
| DateSelector.TimeComparisons after = new | |||||
| DateSelector.TimeComparisons(); | |||||
| after.setValue("after"); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("10/10/1999 1:45 PM"); | |||||
| s.setWhen(before); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("10/10/1999 1:45 PM"); | |||||
| s.setWhen(before); | |||||
| s.setCheckdirs(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("10/10/1999 1:45 PM"); | |||||
| s.setWhen(after); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("11/21/2001 4:54 AM"); | |||||
| s.setWhen(before); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFTFFFFFFFFT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("11/21/2001 4:55 AM"); | |||||
| long milliseconds = s.getMillis(); | |||||
| s.setWhen(equal); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTFFTFFFTTTT", results); | |||||
| s = new DateSelector(); | |||||
| s.setMillis(milliseconds); | |||||
| s.setWhen(equal); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTFFTFFFTTTT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("11/21/2001 4:56 AM"); | |||||
| s.setWhen(after); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFTFTTTFFFT", results); | |||||
| s = new DateSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| Parameter param2 = new Parameter(); | |||||
| param1.setName("datetime"); | |||||
| param1.setValue("11/21/2001 4:56 AM"); | |||||
| param2.setName("when"); | |||||
| param2.setValue("after"); | |||||
| Parameter[] params = {param1,param2}; | |||||
| s.setParameters(params); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFTFTTTFFFT", results); | |||||
| s = new DateSelector(); | |||||
| long testtime = selectorRule.getMirrorFiles()[5].lastModified(); | |||||
| s.setMillis(testtime); | |||||
| s.setWhen(after); | |||||
| s.setGranularity(2); | |||||
| // setup the modified timestamp to match what the test needs, although be aware that the 3rd and 4th | |||||
| // files don't exist so can't be changed, so don't try and loop over them | |||||
| for (int i = 1; i <=2; i++) { | |||||
| Assume.assumeTrue("Cannot setup file times for test", selectorRule.getMirrorFiles()[i].setLastModified(testtime - (3*60*60*100))); | |||||
| } | |||||
| results = selectorRule.mirrorSelectionString(s); | |||||
| assertEquals("TFFFFTTTTTTT", results); | |||||
| s = new DateSelector(); | |||||
| testtime = selectorRule.getMirrorFiles()[6].lastModified(); | |||||
| s.setMillis(testtime); | |||||
| s.setWhen(before); | |||||
| s.setGranularity(2); | |||||
| for (int i = 7; i <= 10; i++) { | |||||
| Assume.assumeTrue("Cannot setup file times for test", selectorRule.getMirrorFiles()[i].setLastModified(testtime + (3*60*60*100))); | |||||
| } | |||||
| results = selectorRule.mirrorSelectionString(s); | |||||
| assertEquals("TTTTTTTFFFFT", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Assume; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Date Selectors. | |||||
| * | |||||
| */ | |||||
| public class DateSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| DateSelector s = new DateSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("You must provide a datetime or the number of " | |||||
| + "milliseconds.", be1.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("01/01/1969 01:01 AM"); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for Datetime being in the " | |||||
| + "allowable range"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("Date of 01/01/1969 01:01 AM results in negative " | |||||
| + "milliseconds value relative to epoch (January 1, " | |||||
| + "1970, 00:00:00 GMT).", be2.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("this is not a date"); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for Datetime being in a " | |||||
| + "valid format"); | |||||
| } catch (BuildException be3) { | |||||
| assertEquals("Date of this is not a date" | |||||
| + " Cannot be parsed correctly. It should be in" | |||||
| + " MM/DD/YYYY HH:MM AM_PM format.", be3.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = new Parameter[1]; | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be4) { | |||||
| assertEquals("Invalid parameter garbage in", be4.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("millis"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for valid millis parameter"); | |||||
| } catch (BuildException be5) { | |||||
| assertEquals("Invalid millisecond setting garbage out", | |||||
| be5.getMessage()); | |||||
| } | |||||
| s = new DateSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("granularity"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DateSelector did not check for valid granularity parameter"); | |||||
| } catch (BuildException be6) { | |||||
| assertEquals("Invalid granularity setting garbage out", | |||||
| be6.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| DateSelector s; | |||||
| String results; | |||||
| DateSelector.TimeComparisons before = new | |||||
| DateSelector.TimeComparisons(); | |||||
| before.setValue("before"); | |||||
| DateSelector.TimeComparisons equal = new | |||||
| DateSelector.TimeComparisons(); | |||||
| equal.setValue("equal"); | |||||
| DateSelector.TimeComparisons after = new | |||||
| DateSelector.TimeComparisons(); | |||||
| after.setValue("after"); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("10/10/1999 1:45 PM"); | |||||
| s.setWhen(before); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("10/10/1999 1:45 PM"); | |||||
| s.setWhen(before); | |||||
| s.setCheckdirs(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("10/10/1999 1:45 PM"); | |||||
| s.setWhen(after); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("11/21/2001 4:54 AM"); | |||||
| s.setWhen(before); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFTFFFFFFFFT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("11/21/2001 4:55 AM"); | |||||
| long milliseconds = s.getMillis(); | |||||
| s.setWhen(equal); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTFFTFFFTTTT", results); | |||||
| s = new DateSelector(); | |||||
| s.setMillis(milliseconds); | |||||
| s.setWhen(equal); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTFFTFFFTTTT", results); | |||||
| s = new DateSelector(); | |||||
| s.setDatetime("11/21/2001 4:56 AM"); | |||||
| s.setWhen(after); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFTFTTTFFFT", results); | |||||
| s = new DateSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| Parameter param2 = new Parameter(); | |||||
| param1.setName("datetime"); | |||||
| param1.setValue("11/21/2001 4:56 AM"); | |||||
| param2.setName("when"); | |||||
| param2.setValue("after"); | |||||
| Parameter[] params = {param1,param2}; | |||||
| s.setParameters(params); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFTFTTTFFFT", results); | |||||
| s = new DateSelector(); | |||||
| long testtime = selectorRule.getMirrorFiles()[5].lastModified(); | |||||
| s.setMillis(testtime); | |||||
| s.setWhen(after); | |||||
| s.setGranularity(2); | |||||
| // setup the modified timestamp to match what the test needs, although be aware that the 3rd and 4th | |||||
| // files don't exist so can't be changed, so don't try and loop over them | |||||
| for (int i = 1; i <=2; i++) { | |||||
| Assume.assumeTrue("Cannot setup file times for test", selectorRule.getMirrorFiles()[i].setLastModified(testtime - (3*60*60*100))); | |||||
| } | |||||
| results = selectorRule.mirrorSelectionString(s); | |||||
| assertEquals("TFFFFTTTTTTT", results); | |||||
| s = new DateSelector(); | |||||
| testtime = selectorRule.getMirrorFiles()[6].lastModified(); | |||||
| s.setMillis(testtime); | |||||
| s.setWhen(before); | |||||
| s.setGranularity(2); | |||||
| for (int i = 7; i <= 10; i++) { | |||||
| Assume.assumeTrue("Cannot setup file times for test", selectorRule.getMirrorFiles()[i].setLastModified(testtime + (3*60*60*100))); | |||||
| } | |||||
| results = selectorRule.mirrorSelectionString(s); | |||||
| assertEquals("TTTTTTTFFFFT", results); | |||||
| } | |||||
| } | |||||
| @@ -1,185 +1,185 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Mapper; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Depend Selectors | |||||
| * | |||||
| */ | |||||
| public class DependSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| @Test | |||||
| public void testValidateSingleMapper() { | |||||
| try { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.createMapper(); | |||||
| s.createMapper(); | |||||
| fail("DependSelector allowed more than one nested mapper."); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("Cannot define more than one mapper", | |||||
| be1.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testValidateRequiredFields() { | |||||
| try { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0], selectorRule.getFiles()[0]); | |||||
| fail("DependSelector did not check for required fields"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The targetdir attribute is required.", | |||||
| be2.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testNoMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| } | |||||
| @Test | |||||
| public void testIdentityMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| Mapper.MapperType identity = new Mapper.MapperType(); | |||||
| identity.setValue("identity"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(identity); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| } | |||||
| @Test | |||||
| public void testMergeMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| Mapper.MapperType merge = new Mapper.MapperType(); | |||||
| merge.setValue("merge"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(merge); | |||||
| m.setTo("asf-logo.gif.gz"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFTTTFFF", results.substring(0,11)); | |||||
| } | |||||
| @Test | |||||
| public void testMergeMapper2() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| Mapper.MapperType merge = new Mapper.MapperType(); | |||||
| merge.setValue("merge"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(merge); | |||||
| m.setTo("asf-logo.gif.bz2"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("TTFTTTTTTTTT", results); | |||||
| } | |||||
| @Test | |||||
| public void testGlobMapperRelativePath() { | |||||
| DependSelector s = new DependSelector(); | |||||
| File subdir = new File("selectortest/tar/bz2"); | |||||
| s.setTargetdir(subdir); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFTFFFFFFTTF", results); | |||||
| } | |||||
| @Test | |||||
| public void testRestrictedGlobMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| File subdir = new File(selectorRule.getBeddir(), "tar/bz2"); | |||||
| s.setTargetdir(subdir); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFTTF", results); | |||||
| } | |||||
| @Test | |||||
| public void testSelectionNoMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(new File(selectorRule.getOutputDir(), "selectortest2")); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFTTFFFFFFF", results); | |||||
| } | |||||
| @Test | |||||
| public void testMirroredSelection() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(new File(selectorRule.getOutputDir(), "selectortest2/tar/bz2")); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| String results = selectorRule.mirrorSelectionString(s); | |||||
| assertEquals("FFFFFFFFFTTF", results); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFTTF", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Mapper; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Depend Selectors | |||||
| * | |||||
| */ | |||||
| public class DependSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| @Test | |||||
| public void testValidateSingleMapper() { | |||||
| try { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.createMapper(); | |||||
| s.createMapper(); | |||||
| fail("DependSelector allowed more than one nested mapper."); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("Cannot define more than one mapper", | |||||
| be1.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testValidateRequiredFields() { | |||||
| try { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0], selectorRule.getFiles()[0]); | |||||
| fail("DependSelector did not check for required fields"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The targetdir attribute is required.", | |||||
| be2.getMessage()); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testNoMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| } | |||||
| @Test | |||||
| public void testIdentityMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| Mapper.MapperType identity = new Mapper.MapperType(); | |||||
| identity.setValue("identity"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(identity); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| } | |||||
| @Test | |||||
| public void testMergeMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| Mapper.MapperType merge = new Mapper.MapperType(); | |||||
| merge.setValue("merge"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(merge); | |||||
| m.setTo("asf-logo.gif.gz"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFTTTFFF", results.substring(0,11)); | |||||
| } | |||||
| @Test | |||||
| public void testMergeMapper2() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(selectorRule.getBeddir()); | |||||
| Mapper.MapperType merge = new Mapper.MapperType(); | |||||
| merge.setValue("merge"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(merge); | |||||
| m.setTo("asf-logo.gif.bz2"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("TTFTTTTTTTTT", results); | |||||
| } | |||||
| @Test | |||||
| public void testGlobMapperRelativePath() { | |||||
| DependSelector s = new DependSelector(); | |||||
| File subdir = new File("selectortest/tar/bz2"); | |||||
| s.setTargetdir(subdir); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFTFFFFFFTTF", results); | |||||
| } | |||||
| @Test | |||||
| public void testRestrictedGlobMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| File subdir = new File(selectorRule.getBeddir(), "tar/bz2"); | |||||
| s.setTargetdir(subdir); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFTTF", results); | |||||
| } | |||||
| @Test | |||||
| public void testSelectionNoMapper() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(new File(selectorRule.getOutputDir(), "selectortest2")); | |||||
| String results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFTTFFFFFFF", results); | |||||
| } | |||||
| @Test | |||||
| public void testMirroredSelection() { | |||||
| DependSelector s = new DependSelector(); | |||||
| s.setTargetdir(new File(selectorRule.getOutputDir(), "selectortest2/tar/bz2")); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| String results = selectorRule.mirrorSelectionString(s); | |||||
| assertEquals("FFFFFFFFFTTF", results); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFTTF", results); | |||||
| } | |||||
| } | |||||
| @@ -1,147 +1,147 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Depth Selectors | |||||
| * | |||||
| */ | |||||
| public class DepthSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| DepthSelector s = new DepthSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("You must set at least one of the min or the " + | |||||
| "max levels.", be1.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| s.setMin(5); | |||||
| s.setMax(2); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector did not check for maximum being higher " | |||||
| + "than minimum"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The maximum depth is lower than the minimum.", | |||||
| be2.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = new Parameter[1]; | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be3) { | |||||
| assertEquals("Invalid parameter garbage in", be3.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("min"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector accepted bad minimum as parameter"); | |||||
| } catch (BuildException be4) { | |||||
| assertEquals("Invalid minimum value garbage out", | |||||
| be4.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("max"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector accepted bad maximum as parameter"); | |||||
| } catch (BuildException be5) { | |||||
| assertEquals("Invalid maximum value garbage out", | |||||
| be5.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| DepthSelector s; | |||||
| String results; | |||||
| s = new DepthSelector(); | |||||
| s.setMin(20); | |||||
| s.setMax(25); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMin(0); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMin(1); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFTTTTTTT", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMax(0); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTFFFFFFF", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMin(1); | |||||
| s.setMax(1); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFTTTFFFT", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Depth Selectors | |||||
| * | |||||
| */ | |||||
| public class DepthSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| DepthSelector s = new DepthSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("You must set at least one of the min or the " + | |||||
| "max levels.", be1.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| s.setMin(5); | |||||
| s.setMax(2); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector did not check for maximum being higher " | |||||
| + "than minimum"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The maximum depth is lower than the minimum.", | |||||
| be2.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = new Parameter[1]; | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be3) { | |||||
| assertEquals("Invalid parameter garbage in", be3.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("min"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector accepted bad minimum as parameter"); | |||||
| } catch (BuildException be4) { | |||||
| assertEquals("Invalid minimum value garbage out", | |||||
| be4.getMessage()); | |||||
| } | |||||
| s = new DepthSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("max"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("DepthSelector accepted bad maximum as parameter"); | |||||
| } catch (BuildException be5) { | |||||
| assertEquals("Invalid maximum value garbage out", | |||||
| be5.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| DepthSelector s; | |||||
| String results; | |||||
| s = new DepthSelector(); | |||||
| s.setMin(20); | |||||
| s.setMax(25); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMin(0); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMin(1); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFTTTTTTT", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMax(0); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTFFFFFFF", results); | |||||
| s = new DepthSelector(); | |||||
| s.setMin(1); | |||||
| s.setMax(1); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFTTTFFFT", results); | |||||
| } | |||||
| } | |||||
| @@ -1,115 +1,115 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Filename Selectors | |||||
| * | |||||
| */ | |||||
| public class FilenameSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| FilenameSelector s = new FilenameSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("FilenameSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The name or regex attribute is required", be1.getMessage()); | |||||
| } | |||||
| s = new FilenameSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = {param}; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("FilenameSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("Invalid parameter garbage in", be2.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| FilenameSelector s; | |||||
| String results; | |||||
| s = new FilenameSelector(); | |||||
| s.setName("no match possible"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = new FilenameSelector(); | |||||
| s.setName("*.gz"); | |||||
| results = selectorRule.selectionString(s); | |||||
| // This is turned off temporarily. There appears to be a bug | |||||
| // in SelectorUtils.matchPattern() where it is recursive on | |||||
| // Windows even if no ** is in pattern. | |||||
| //assertEquals("FFFTFFFFFFFF", results); // Unix | |||||
| // vs | |||||
| //assertEquals("FFFTFFFFTFFF", results); // Windows | |||||
| s = new FilenameSelector(); | |||||
| s.setName("**/*.gz"); | |||||
| s.setNegate(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTFTTTFFTTT", results); | |||||
| s = new FilenameSelector(); | |||||
| s.setName("**/*.GZ"); | |||||
| s.setCasesensitive(false); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFTFFFTTFFF", results); | |||||
| s = new FilenameSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| param1.setName("name"); | |||||
| param1.setValue("**/*.bz2"); | |||||
| Parameter[] params = {param1}; | |||||
| s.setParameters(params); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFTFFFFFFTTF", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Filename Selectors | |||||
| * | |||||
| */ | |||||
| public class FilenameSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| FilenameSelector s = new FilenameSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("FilenameSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The name or regex attribute is required", be1.getMessage()); | |||||
| } | |||||
| s = new FilenameSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = {param}; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("FilenameSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("Invalid parameter garbage in", be2.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| FilenameSelector s; | |||||
| String results; | |||||
| s = new FilenameSelector(); | |||||
| s.setName("no match possible"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = new FilenameSelector(); | |||||
| s.setName("*.gz"); | |||||
| results = selectorRule.selectionString(s); | |||||
| // This is turned off temporarily. There appears to be a bug | |||||
| // in SelectorUtils.matchPattern() where it is recursive on | |||||
| // Windows even if no ** is in pattern. | |||||
| //assertEquals("FFFTFFFFFFFF", results); // Unix | |||||
| // vs | |||||
| //assertEquals("FFFTFFFFTFFF", results); // Windows | |||||
| s = new FilenameSelector(); | |||||
| s.setName("**/*.gz"); | |||||
| s.setNegate(true); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTFTTTFFTTT", results); | |||||
| s = new FilenameSelector(); | |||||
| s.setName("**/*.GZ"); | |||||
| s.setCasesensitive(false); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFFTFFFTTFFF", results); | |||||
| s = new FilenameSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| param1.setName("name"); | |||||
| param1.setValue("**/*.bz2"); | |||||
| Parameter[] params = {param1}; | |||||
| s.setParameters(params); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFTFFFFFFTTF", results); | |||||
| } | |||||
| } | |||||
| @@ -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.types.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.types.selectors.modifiedselector.Algorithm; | |||||
| public class MockAlgorithm implements Algorithm { | |||||
| public boolean isValid() { | |||||
| return true; | |||||
| } | |||||
| public String getValue(File file) { | |||||
| return "TEST"; | |||||
| } | |||||
| public String toString() { | |||||
| return "MockAlgorithm@" + hashCode(); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.apache.tools.ant.types.selectors.modifiedselector.Algorithm; | |||||
| public class MockAlgorithm implements Algorithm { | |||||
| public boolean isValid() { | |||||
| return true; | |||||
| } | |||||
| public String getValue(File file) { | |||||
| return "TEST"; | |||||
| } | |||||
| public String toString() { | |||||
| return "MockAlgorithm@" + hashCode(); | |||||
| } | |||||
| } | |||||
| @@ -1,68 +1,68 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.util.Iterator; | |||||
| import org.apache.tools.ant.types.selectors.modifiedselector.Cache; | |||||
| public class MockCache implements Cache { | |||||
| public boolean debug = false; | |||||
| public boolean saved = false; | |||||
| public MockCache() { | |||||
| log("()"); | |||||
| } | |||||
| public boolean isValid() { | |||||
| log(".isValid()"); | |||||
| return true; | |||||
| } | |||||
| public void delete() { | |||||
| log(".delete()"); | |||||
| } | |||||
| public void load() { | |||||
| log(".load()"); | |||||
| } | |||||
| public void save() { | |||||
| log(".save()"); | |||||
| saved = true; | |||||
| } | |||||
| public Object get(Object key) { | |||||
| log(".get("+key+")"); | |||||
| return key; | |||||
| } | |||||
| public void put(Object key, Object value) { | |||||
| log(".put("+key+", "+value+")"); | |||||
| saved = false; | |||||
| } | |||||
| public Iterator<String> iterator() { | |||||
| log("iterator()"); | |||||
| return null; | |||||
| } | |||||
| public String toString() { | |||||
| return "MockCache@" + hashCode(); | |||||
| } | |||||
| private void log(String msg) { | |||||
| if (debug) System.out.println(this+msg); | |||||
| } | |||||
| }//class-MockCache | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.util.Iterator; | |||||
| import org.apache.tools.ant.types.selectors.modifiedselector.Cache; | |||||
| public class MockCache implements Cache { | |||||
| public boolean debug = false; | |||||
| public boolean saved = false; | |||||
| public MockCache() { | |||||
| log("()"); | |||||
| } | |||||
| public boolean isValid() { | |||||
| log(".isValid()"); | |||||
| return true; | |||||
| } | |||||
| public void delete() { | |||||
| log(".delete()"); | |||||
| } | |||||
| public void load() { | |||||
| log(".load()"); | |||||
| } | |||||
| public void save() { | |||||
| log(".save()"); | |||||
| saved = true; | |||||
| } | |||||
| public Object get(Object key) { | |||||
| log(".get("+key+")"); | |||||
| return key; | |||||
| } | |||||
| public void put(Object key, Object value) { | |||||
| log(".put("+key+", "+value+")"); | |||||
| saved = false; | |||||
| } | |||||
| public Iterator<String> iterator() { | |||||
| log("iterator()"); | |||||
| return null; | |||||
| } | |||||
| public String toString() { | |||||
| return "MockCache@" + hashCode(); | |||||
| } | |||||
| private void log(String msg) { | |||||
| if (debug) System.out.println(this+msg); | |||||
| } | |||||
| }//class-MockCache | |||||
| @@ -1,32 +1,32 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.util.Comparator; | |||||
| public class MockComparator implements Comparator { | |||||
| public int compare(Object o1, Object o2) { | |||||
| return 0; | |||||
| } | |||||
| public String toString() { | |||||
| return "MockComparator"; | |||||
| } | |||||
| }//class-MockCache | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.util.Comparator; | |||||
| public class MockComparator implements Comparator { | |||||
| public int compare(Object o1, Object o2) { | |||||
| return 0; | |||||
| } | |||||
| public String toString() { | |||||
| return "MockComparator"; | |||||
| } | |||||
| }//class-MockCache | |||||
| @@ -1,137 +1,137 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Mapper; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Present Selectors | |||||
| * | |||||
| */ | |||||
| public class PresentSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| PresentSelector s = new PresentSelector(); | |||||
| try { | |||||
| s.createMapper(); | |||||
| s.createMapper(); | |||||
| fail("PresentSelector allowed more than one nested mapper."); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("Cannot define more than one mapper", | |||||
| be1.getMessage()); | |||||
| } | |||||
| s = new PresentSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("PresentSelector did not check for required fields"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The targetdir attribute is required.", | |||||
| be2.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| PresentSelector s; | |||||
| String results; | |||||
| Mapper m; | |||||
| Mapper.MapperType identity = new Mapper.MapperType(); | |||||
| identity.setValue("identity"); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper.MapperType merge = new Mapper.MapperType(); | |||||
| merge.setValue("merge"); | |||||
| Mapper.MapperType flatten = new Mapper.MapperType(); | |||||
| flatten.setValue("flatten"); | |||||
| File beddir = selectorRule.getBeddir(); | |||||
| s = new PresentSelector(); | |||||
| s.setTargetdir(beddir); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new PresentSelector(); | |||||
| s.setTargetdir(beddir); | |||||
| m = s.createMapper(); | |||||
| m.setType(identity); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new PresentSelector(); | |||||
| File subdir = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/expected"); | |||||
| s.setTargetdir(subdir); | |||||
| m = s.createMapper(); | |||||
| m.setType(flatten); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTF", results); | |||||
| s = new PresentSelector(); | |||||
| s.setTargetdir(beddir); | |||||
| m = s.createMapper(); | |||||
| m.setType(merge); | |||||
| m.setTo("asf-logo.gif.gz"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new PresentSelector(); | |||||
| subdir = new File(beddir, "tar/bz2"); | |||||
| s.setTargetdir(subdir); | |||||
| m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFTFFFFFFFFF", results); | |||||
| s = new PresentSelector(); | |||||
| subdir = new File(selectorRule.getOutputDir(), "selectortest2"); | |||||
| s.setTargetdir(subdir); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTFFTTTTTTT", results); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTFFTTTTTTT", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Mapper; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Present Selectors | |||||
| * | |||||
| */ | |||||
| public class PresentSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| PresentSelector s = new PresentSelector(); | |||||
| try { | |||||
| s.createMapper(); | |||||
| s.createMapper(); | |||||
| fail("PresentSelector allowed more than one nested mapper."); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("Cannot define more than one mapper", | |||||
| be1.getMessage()); | |||||
| } | |||||
| s = new PresentSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(),selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("PresentSelector did not check for required fields"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The targetdir attribute is required.", | |||||
| be2.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| PresentSelector s; | |||||
| String results; | |||||
| Mapper m; | |||||
| Mapper.MapperType identity = new Mapper.MapperType(); | |||||
| identity.setValue("identity"); | |||||
| Mapper.MapperType glob = new Mapper.MapperType(); | |||||
| glob.setValue("glob"); | |||||
| Mapper.MapperType merge = new Mapper.MapperType(); | |||||
| merge.setValue("merge"); | |||||
| Mapper.MapperType flatten = new Mapper.MapperType(); | |||||
| flatten.setValue("flatten"); | |||||
| File beddir = selectorRule.getBeddir(); | |||||
| s = new PresentSelector(); | |||||
| s.setTargetdir(beddir); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new PresentSelector(); | |||||
| s.setTargetdir(beddir); | |||||
| m = s.createMapper(); | |||||
| m.setType(identity); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new PresentSelector(); | |||||
| File subdir = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/expected"); | |||||
| s.setTargetdir(subdir); | |||||
| m = s.createMapper(); | |||||
| m.setType(flatten); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTF", results); | |||||
| s = new PresentSelector(); | |||||
| s.setTargetdir(beddir); | |||||
| m = s.createMapper(); | |||||
| m.setType(merge); | |||||
| m.setTo("asf-logo.gif.gz"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new PresentSelector(); | |||||
| subdir = new File(beddir, "tar/bz2"); | |||||
| s.setTargetdir(subdir); | |||||
| m = s.createMapper(); | |||||
| m.setType(glob); | |||||
| m.setFrom("*.bz2"); | |||||
| m.setTo("*.tar.bz2"); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FFTFFFFFFFFF", results); | |||||
| s = new PresentSelector(); | |||||
| subdir = new File(selectorRule.getOutputDir(), "selectortest2"); | |||||
| s.setTargetdir(subdir); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTFFTTTTTTT", results); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTFFTTTTTTT", results); | |||||
| } | |||||
| } | |||||
| @@ -1,96 +1,96 @@ | |||||
| A DESCRIPTION OF THE SELECTOR TEST FRAMEWORK | |||||
| When writing tests for selectors, I found that I wanted to have some | |||||
| standard way of working with a set of files and testing whether one or | |||||
| another of them was selected. To that end, I created a base class called | |||||
| BaseSelectorTest that does most of the heavy lifting. Of course, you can | |||||
| test your selectors any way you want, but if you want to reuse this code, | |||||
| read on. | |||||
| What BaseSelectorTest does is use an ant build file | |||||
| "src/etc/testcases/types/selector.xml" to copy a tree of files out of | |||||
| "src/etc/testcases/taskdefs/expected" into a "selectortest" directories. | |||||
| Then it takes a list of 12 of the files and directories in this tree, and | |||||
| applies whatever selector you pass in to each one. It passes back to your | |||||
| test a 12 character long string indicating which of the 12 files and | |||||
| directories was selected, using 'T' for selected and 'F' for not selected. | |||||
| In the Test class for your selector, you override the getInstance() method | |||||
| to create your own type of selector, and set the elements of your selector | |||||
| a variety of ways to ensure that the string of T's and F's returned when | |||||
| the selector is applied to those 12 files is correct. | |||||
| So, for example, DepthSelectorTest.java extends BaseSelectorTest and has | |||||
| the following code: | |||||
| public BaseSelector getInstance() { | |||||
| return new DepthSelector(); | |||||
| } | |||||
| public void testSelectionBehaviour() { | |||||
| DepthSelector s; | |||||
| String results; | |||||
| try { | |||||
| makeBed(); | |||||
| s = (DepthSelector)getInstance(); | |||||
| s.setMin(20); | |||||
| s.setMax(25); | |||||
| results = selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = (DepthSelector)getInstance(); | |||||
| s.setMin(0); | |||||
| results = selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = (DepthSelector)getInstance(); | |||||
| s.setMin(1); | |||||
| results = selectionString(s); | |||||
| assertEquals("FFFFFTTTTTTT", results); | |||||
| The first test says that none of the 12 files or directories will match if | |||||
| the depth range for the selector is between 20 and 25 (that would be one | |||||
| deep directory tree!). The second says that all files and directories | |||||
| match if the minimum depth is set to 0 and the maximum isn't specified. The | |||||
| third test says that if the minumum depth is 1, the first 5 entries in the | |||||
| list of 12 will not be selected and the rest will. | |||||
| You can find the 12 files and directories that are tested for selection in | |||||
| the BaseSelectorTest class. I used a fixed list so that if someone added | |||||
| new files to the src/etc/testcases/types directory it wouldn't break my | |||||
| tests: | |||||
| protected String[] filenames = {".","asf-logo.gif.md5","asf- | |||||
| logo.gif.bz2", | |||||
| "asf-logo.gif.gz","copy.filterset.filtered","zip/asf- | |||||
| logo.gif.zip", | |||||
| "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", | |||||
| "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", | |||||
| "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; | |||||
| If you wish to use this set of files and directories to test your selector, | |||||
| you can reuse the BaseSelectorTest with no change to it. | |||||
| You may find you need to alter the build file so that you get some | |||||
| variation in the files that your selector can work with. Most of the core | |||||
| selectors have required that kind of modification. If you do that, make | |||||
| sure that it doesn't alter the output strings on the other selector test, | |||||
| or if it does that you update their expected return results. | |||||
| You may also want to alter the set of files you look at in a particular | |||||
| selector test. Since the filelist in BaseSelectorTest is protected, you | |||||
| should be able to override it as you need to. Or you can alter the fileset | |||||
| in BaseSelectorTest itself, provided you update the test strings in all the | |||||
| other unit tests. | |||||
| A DESCRIPTION OF THE SELECTOR TEST FRAMEWORK | |||||
| When writing tests for selectors, I found that I wanted to have some | |||||
| standard way of working with a set of files and testing whether one or | |||||
| another of them was selected. To that end, I created a base class called | |||||
| BaseSelectorTest that does most of the heavy lifting. Of course, you can | |||||
| test your selectors any way you want, but if you want to reuse this code, | |||||
| read on. | |||||
| What BaseSelectorTest does is use an ant build file | |||||
| "src/etc/testcases/types/selector.xml" to copy a tree of files out of | |||||
| "src/etc/testcases/taskdefs/expected" into a "selectortest" directories. | |||||
| Then it takes a list of 12 of the files and directories in this tree, and | |||||
| applies whatever selector you pass in to each one. It passes back to your | |||||
| test a 12 character long string indicating which of the 12 files and | |||||
| directories was selected, using 'T' for selected and 'F' for not selected. | |||||
| In the Test class for your selector, you override the getInstance() method | |||||
| to create your own type of selector, and set the elements of your selector | |||||
| a variety of ways to ensure that the string of T's and F's returned when | |||||
| the selector is applied to those 12 files is correct. | |||||
| So, for example, DepthSelectorTest.java extends BaseSelectorTest and has | |||||
| the following code: | |||||
| public BaseSelector getInstance() { | |||||
| return new DepthSelector(); | |||||
| } | |||||
| public void testSelectionBehaviour() { | |||||
| DepthSelector s; | |||||
| String results; | |||||
| try { | |||||
| makeBed(); | |||||
| s = (DepthSelector)getInstance(); | |||||
| s.setMin(20); | |||||
| s.setMax(25); | |||||
| results = selectionString(s); | |||||
| assertEquals("FFFFFFFFFFFF", results); | |||||
| s = (DepthSelector)getInstance(); | |||||
| s.setMin(0); | |||||
| results = selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = (DepthSelector)getInstance(); | |||||
| s.setMin(1); | |||||
| results = selectionString(s); | |||||
| assertEquals("FFFFFTTTTTTT", results); | |||||
| The first test says that none of the 12 files or directories will match if | |||||
| the depth range for the selector is between 20 and 25 (that would be one | |||||
| deep directory tree!). The second says that all files and directories | |||||
| match if the minimum depth is set to 0 and the maximum isn't specified. The | |||||
| third test says that if the minumum depth is 1, the first 5 entries in the | |||||
| list of 12 will not be selected and the rest will. | |||||
| You can find the 12 files and directories that are tested for selection in | |||||
| the BaseSelectorTest class. I used a fixed list so that if someone added | |||||
| new files to the src/etc/testcases/types directory it wouldn't break my | |||||
| tests: | |||||
| protected String[] filenames = {".","asf-logo.gif.md5","asf- | |||||
| logo.gif.bz2", | |||||
| "asf-logo.gif.gz","copy.filterset.filtered","zip/asf- | |||||
| logo.gif.zip", | |||||
| "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", | |||||
| "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", | |||||
| "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; | |||||
| If you wish to use this set of files and directories to test your selector, | |||||
| you can reuse the BaseSelectorTest with no change to it. | |||||
| You may find you need to alter the build file so that you get some | |||||
| variation in the files that your selector can work with. Most of the core | |||||
| selectors have required that kind of modification. If you do that, make | |||||
| sure that it doesn't alter the output strings on the other selector test, | |||||
| or if it does that you update their expected return results. | |||||
| You may also want to alter the set of files you look at in a particular | |||||
| selector test. Since the filelist in BaseSelectorTest is protected, you | |||||
| should be able to override it as you need to. Or you can alter the fileset | |||||
| in BaseSelectorTest itself, provided you update the test strings in all the | |||||
| other unit tests. | |||||
| @@ -1,54 +1,54 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Testcase for the <signedselector> selector. | |||||
| * | |||||
| */ | |||||
| public class SignedSelectorTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/selectors/signedselector.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testSelectSigned() { | |||||
| buildRule.executeTarget("selectsigned"); | |||||
| } | |||||
| @Test | |||||
| public void testNotSelected() { | |||||
| buildRule.executeTarget("notselected"); | |||||
| } | |||||
| @Test | |||||
| public void testName() { | |||||
| buildRule.executeTarget("name"); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| /** | |||||
| * Testcase for the <signedselector> selector. | |||||
| * | |||||
| */ | |||||
| public class SignedSelectorTest { | |||||
| @Rule | |||||
| public BuildFileRule buildRule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | |||||
| buildRule.configureProject("src/etc/testcases/types/selectors/signedselector.xml"); | |||||
| } | |||||
| @Test | |||||
| public void testSelectSigned() { | |||||
| buildRule.executeTarget("selectsigned"); | |||||
| } | |||||
| @Test | |||||
| public void testNotSelected() { | |||||
| buildRule.executeTarget("notselected"); | |||||
| } | |||||
| @Test | |||||
| public void testName() { | |||||
| buildRule.executeTarget("name"); | |||||
| } | |||||
| } | |||||
| @@ -1,237 +1,237 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.util.Locale; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Size Selectors | |||||
| * | |||||
| */ | |||||
| public class SizeSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| SizeSelector s = new SizeSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The value attribute is required, and must " | |||||
| + "be positive", be1.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| s.setValue(-10); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector did not check for value being in the " | |||||
| + "allowable range"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The value attribute is required, and must " | |||||
| + "be positive", be2.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = {param}; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be3) { | |||||
| assertEquals("Invalid parameter garbage in", be3.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("value"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector accepted bad value as parameter"); | |||||
| } catch (BuildException be4) { | |||||
| assertEquals("Invalid size setting garbage out", | |||||
| be4.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| Parameter param2 = new Parameter(); | |||||
| param1.setName("value"); | |||||
| param1.setValue("5"); | |||||
| param2.setName("units"); | |||||
| param2.setValue("garbage out"); | |||||
| params = new Parameter[2]; | |||||
| params[0] = param1; | |||||
| params[1] = param2; | |||||
| try { | |||||
| s.setParameters(params); | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector accepted bad units as parameter"); | |||||
| } catch (BuildException be5) { | |||||
| assertEquals("garbage out is not a legal value for this attribute", | |||||
| be5.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| SizeSelector s; | |||||
| String results; | |||||
| SizeSelector.ByteUnits kilo = new SizeSelector.ByteUnits(); | |||||
| kilo.setValue("K"); | |||||
| SizeSelector.ByteUnits kibi = new SizeSelector.ByteUnits(); | |||||
| kibi.setValue("Ki"); | |||||
| SizeSelector.ByteUnits tibi = new SizeSelector.ByteUnits(); | |||||
| tibi.setValue("Ti"); | |||||
| SizeSelector.SizeComparisons less = new SizeSelector.SizeComparisons(); | |||||
| less.setValue("less"); | |||||
| SizeSelector.SizeComparisons equal = new SizeSelector.SizeComparisons(); | |||||
| equal.setValue("equal"); | |||||
| SizeSelector.SizeComparisons more = new SizeSelector.SizeComparisons(); | |||||
| more.setValue("more"); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(10); | |||||
| s.setWhen(less); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(10); | |||||
| s.setWhen(more); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(32); | |||||
| s.setWhen(equal); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(7); | |||||
| s.setWhen(more); | |||||
| s.setUnits(kilo); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFTFFTTTTTTT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(7); | |||||
| s.setWhen(more); | |||||
| s.setUnits(kibi); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFTFFFTTFTTT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(99999); | |||||
| s.setWhen(more); | |||||
| s.setUnits(tibi); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new SizeSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| Parameter param2 = new Parameter(); | |||||
| Parameter param3 = new Parameter(); | |||||
| param1.setName("value"); | |||||
| param1.setValue("20"); | |||||
| param2.setName("units"); | |||||
| param2.setValue("Ki"); | |||||
| param3.setName("when"); | |||||
| param3.setValue("more"); | |||||
| Parameter[] params = {param1,param2,param3}; | |||||
| s.setParameters(params); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFTFFTT", results); | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingLowerCase() { | |||||
| testCaseInsensitiveParameterParsing("units"); | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingUpperCase() { | |||||
| testCaseInsensitiveParameterParsing("UNITS"); | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingLowerCaseTurkish() { | |||||
| Locale l = Locale.getDefault(); | |||||
| try { | |||||
| Locale.setDefault(new Locale("tr")); | |||||
| testCaseInsensitiveParameterParsing("units"); | |||||
| } finally { | |||||
| Locale.setDefault(l); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingUpperCaseTurkish() { | |||||
| Locale l = Locale.getDefault(); | |||||
| try { | |||||
| Locale.setDefault(new Locale("tr")); | |||||
| testCaseInsensitiveParameterParsing("UNITS"); | |||||
| } finally { | |||||
| Locale.setDefault(l); | |||||
| } | |||||
| } | |||||
| private void testCaseInsensitiveParameterParsing(String name) { | |||||
| SizeSelector s = new SizeSelector(); | |||||
| Parameter p = new Parameter(); | |||||
| p.setName(name); | |||||
| p.setValue("foo"); | |||||
| try { | |||||
| s.setParameters(new Parameter[] {p}); | |||||
| fail("should have caused an exception"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("foo is not a legal value for this attribute", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.util.Locale; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.types.Parameter; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Size Selectors | |||||
| * | |||||
| */ | |||||
| public class SizeSelectorTest { | |||||
| @Rule | |||||
| public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| SizeSelector s = new SizeSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The value attribute is required, and must " | |||||
| + "be positive", be1.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| s.setValue(-10); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector did not check for value being in the " | |||||
| + "allowable range"); | |||||
| } catch (BuildException be2) { | |||||
| assertEquals("The value attribute is required, and must " | |||||
| + "be positive", be2.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| Parameter param = new Parameter(); | |||||
| param.setName("garbage in"); | |||||
| param.setValue("garbage out"); | |||||
| Parameter[] params = {param}; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector did not check for valid parameter element"); | |||||
| } catch (BuildException be3) { | |||||
| assertEquals("Invalid parameter garbage in", be3.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| param = new Parameter(); | |||||
| param.setName("value"); | |||||
| param.setValue("garbage out"); | |||||
| params[0] = param; | |||||
| s.setParameters(params); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector accepted bad value as parameter"); | |||||
| } catch (BuildException be4) { | |||||
| assertEquals("Invalid size setting garbage out", | |||||
| be4.getMessage()); | |||||
| } | |||||
| s = new SizeSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| Parameter param2 = new Parameter(); | |||||
| param1.setName("value"); | |||||
| param1.setValue("5"); | |||||
| param2.setName("units"); | |||||
| param2.setValue("garbage out"); | |||||
| params = new Parameter[2]; | |||||
| params[0] = param1; | |||||
| params[1] = param2; | |||||
| try { | |||||
| s.setParameters(params); | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0],selectorRule.getFiles()[0]); | |||||
| fail("SizeSelector accepted bad units as parameter"); | |||||
| } catch (BuildException be5) { | |||||
| assertEquals("garbage out is not a legal value for this attribute", | |||||
| be5.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| SizeSelector s; | |||||
| String results; | |||||
| SizeSelector.ByteUnits kilo = new SizeSelector.ByteUnits(); | |||||
| kilo.setValue("K"); | |||||
| SizeSelector.ByteUnits kibi = new SizeSelector.ByteUnits(); | |||||
| kibi.setValue("Ki"); | |||||
| SizeSelector.ByteUnits tibi = new SizeSelector.ByteUnits(); | |||||
| tibi.setValue("Ti"); | |||||
| SizeSelector.SizeComparisons less = new SizeSelector.SizeComparisons(); | |||||
| less.setValue("less"); | |||||
| SizeSelector.SizeComparisons equal = new SizeSelector.SizeComparisons(); | |||||
| equal.setValue("equal"); | |||||
| SizeSelector.SizeComparisons more = new SizeSelector.SizeComparisons(); | |||||
| more.setValue("more"); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(10); | |||||
| s.setWhen(less); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(10); | |||||
| s.setWhen(more); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TTTTTTTTTTTT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(32); | |||||
| s.setWhen(equal); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFTFFFFFFT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(7); | |||||
| s.setWhen(more); | |||||
| s.setUnits(kilo); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFTFFTTTTTTT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(7); | |||||
| s.setWhen(more); | |||||
| s.setUnits(kibi); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFTFFFTTFTTT", results); | |||||
| s = new SizeSelector(); | |||||
| s.setValue(99999); | |||||
| s.setWhen(more); | |||||
| s.setUnits(tibi); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new SizeSelector(); | |||||
| Parameter param1 = new Parameter(); | |||||
| Parameter param2 = new Parameter(); | |||||
| Parameter param3 = new Parameter(); | |||||
| param1.setName("value"); | |||||
| param1.setValue("20"); | |||||
| param2.setName("units"); | |||||
| param2.setValue("Ki"); | |||||
| param3.setName("when"); | |||||
| param3.setValue("more"); | |||||
| Parameter[] params = {param1,param2,param3}; | |||||
| s.setParameters(params); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFTFFTT", results); | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingLowerCase() { | |||||
| testCaseInsensitiveParameterParsing("units"); | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingUpperCase() { | |||||
| testCaseInsensitiveParameterParsing("UNITS"); | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingLowerCaseTurkish() { | |||||
| Locale l = Locale.getDefault(); | |||||
| try { | |||||
| Locale.setDefault(new Locale("tr")); | |||||
| testCaseInsensitiveParameterParsing("units"); | |||||
| } finally { | |||||
| Locale.setDefault(l); | |||||
| } | |||||
| } | |||||
| @Test | |||||
| public void testParameterParsingUpperCaseTurkish() { | |||||
| Locale l = Locale.getDefault(); | |||||
| try { | |||||
| Locale.setDefault(new Locale("tr")); | |||||
| testCaseInsensitiveParameterParsing("UNITS"); | |||||
| } finally { | |||||
| Locale.setDefault(l); | |||||
| } | |||||
| } | |||||
| private void testCaseInsensitiveParameterParsing(String name) { | |||||
| SizeSelector s = new SizeSelector(); | |||||
| Parameter p = new Parameter(); | |||||
| p.setName(name); | |||||
| p.setValue("foo"); | |||||
| try { | |||||
| s.setParameters(new Parameter[] {p}); | |||||
| fail("should have caused an exception"); | |||||
| } catch (BuildException be) { | |||||
| assertEquals("foo is not a legal value for this attribute", | |||||
| be.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,64 +1,64 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import java.io.File; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public class TokenizedPatternTest { | |||||
| private static final String DOT_SVN_PATTERN = | |||||
| SelectorUtils.DEEP_TREE_MATCH + File.separator + ".svn" | |||||
| + File.separator + SelectorUtils.DEEP_TREE_MATCH; | |||||
| @Test | |||||
| public void testTokenization() { | |||||
| TokenizedPattern pat = new TokenizedPattern(DOT_SVN_PATTERN); | |||||
| assertEquals(3, pat.depth()); | |||||
| assertEquals(DOT_SVN_PATTERN, pat.getPattern()); | |||||
| assertTrue(pat.containsPattern(SelectorUtils.DEEP_TREE_MATCH)); | |||||
| assertTrue(pat.containsPattern(".svn")); | |||||
| } | |||||
| @Test | |||||
| public void testEndsWith() { | |||||
| assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) | |||||
| .endsWith(SelectorUtils.DEEP_TREE_MATCH)); | |||||
| } | |||||
| @Test | |||||
| public void testWithoutLastToken() { | |||||
| assertEquals(SelectorUtils.DEEP_TREE_MATCH + File.separatorChar | |||||
| + ".svn" + File.separator, | |||||
| new TokenizedPattern(DOT_SVN_PATTERN) | |||||
| .withoutLastToken().getPattern()); | |||||
| } | |||||
| @Test | |||||
| public void testMatchPath() { | |||||
| File f = new File(".svn"); | |||||
| TokenizedPath p = new TokenizedPath(f.getAbsolutePath()); | |||||
| assertTrue(new TokenizedPattern(DOT_SVN_PATTERN).matchPath(p, true)); | |||||
| assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) | |||||
| .withoutLastToken().matchPath(p, 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.types.selectors; | |||||
| import java.io.File; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public class TokenizedPatternTest { | |||||
| private static final String DOT_SVN_PATTERN = | |||||
| SelectorUtils.DEEP_TREE_MATCH + File.separator + ".svn" | |||||
| + File.separator + SelectorUtils.DEEP_TREE_MATCH; | |||||
| @Test | |||||
| public void testTokenization() { | |||||
| TokenizedPattern pat = new TokenizedPattern(DOT_SVN_PATTERN); | |||||
| assertEquals(3, pat.depth()); | |||||
| assertEquals(DOT_SVN_PATTERN, pat.getPattern()); | |||||
| assertTrue(pat.containsPattern(SelectorUtils.DEEP_TREE_MATCH)); | |||||
| assertTrue(pat.containsPattern(".svn")); | |||||
| } | |||||
| @Test | |||||
| public void testEndsWith() { | |||||
| assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) | |||||
| .endsWith(SelectorUtils.DEEP_TREE_MATCH)); | |||||
| } | |||||
| @Test | |||||
| public void testWithoutLastToken() { | |||||
| assertEquals(SelectorUtils.DEEP_TREE_MATCH + File.separatorChar | |||||
| + ".svn" + File.separator, | |||||
| new TokenizedPattern(DOT_SVN_PATTERN) | |||||
| .withoutLastToken().getPattern()); | |||||
| } | |||||
| @Test | |||||
| public void testMatchPath() { | |||||
| File f = new File(".svn"); | |||||
| TokenizedPath p = new TokenizedPath(f.getAbsolutePath()); | |||||
| assertTrue(new TokenizedPattern(DOT_SVN_PATTERN).matchPath(p, true)); | |||||
| assertTrue(new TokenizedPattern(DOT_SVN_PATTERN) | |||||
| .withoutLastToken().matchPath(p, true)); | |||||
| } | |||||
| } | |||||
| @@ -1,81 +1,81 @@ | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Type Selectors. | |||||
| * | |||||
| */ | |||||
| public class TypeSelectorTest { | |||||
| @Rule | |||||
| public BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| TypeSelector s = new TypeSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0] ,selectorRule.getFiles()[0]); | |||||
| fail("TypeSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The type attribute is required" | |||||
| , be1.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| TypeSelector s; | |||||
| String results; | |||||
| TypeSelector.FileType directory = new TypeSelector.FileType(); | |||||
| directory.setValue("dir"); | |||||
| TypeSelector.FileType file = new TypeSelector.FileType(); | |||||
| file.setValue("file"); | |||||
| s = new TypeSelector(); | |||||
| s.setType(directory); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new TypeSelector(); | |||||
| s.setType(file); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FTTTTTTTTTTF", results); | |||||
| } | |||||
| } | |||||
| /* | |||||
| * 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.selectors; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.fail; | |||||
| /** | |||||
| * Tests Type Selectors. | |||||
| * | |||||
| */ | |||||
| public class TypeSelectorTest { | |||||
| @Rule | |||||
| public BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
| /** | |||||
| * Test the code that validates the selector. | |||||
| */ | |||||
| @Test | |||||
| public void testValidate() { | |||||
| TypeSelector s = new TypeSelector(); | |||||
| try { | |||||
| s.isSelected(selectorRule.getProject().getBaseDir(), selectorRule.getFilenames()[0] ,selectorRule.getFiles()[0]); | |||||
| fail("TypeSelector did not check for required fields"); | |||||
| } catch (BuildException be1) { | |||||
| assertEquals("The type attribute is required" | |||||
| , be1.getMessage()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Tests to make sure that the selector is selecting files correctly. | |||||
| */ | |||||
| @Test | |||||
| public void testSelectionBehaviour() { | |||||
| TypeSelector s; | |||||
| String results; | |||||
| TypeSelector.FileType directory = new TypeSelector.FileType(); | |||||
| directory.setValue("dir"); | |||||
| TypeSelector.FileType file = new TypeSelector.FileType(); | |||||
| file.setValue("file"); | |||||
| s = new TypeSelector(); | |||||
| s.setType(directory); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("TFFFFFFFFFFT", results); | |||||
| s = new TypeSelector(); | |||||
| s.setType(file); | |||||
| results = selectorRule.selectionString(s); | |||||
| assertEquals("FTTTTTTTTTTF", results); | |||||
| } | |||||
| } | |||||