| @@ -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); | |||
| } | |||
| } | |||