| @@ -1,4 +1,20 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <project name="FindTask" basedir="." default="test"> | <project name="FindTask" basedir="." default="test"> | ||||
| <property name="src.dir" value="src"/> | <property name="src.dir" value="src"/> | ||||
| @@ -36,8 +52,7 @@ | |||||
| <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | ||||
| </target> | </target> | ||||
| <target name="use.init" description="Taskdef´ the Find-Task" depends="jar"> | |||||
| <target name="use.init" description="Taskdef the Find-Task" depends="jar"> | |||||
| <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | ||||
| </target> | </target> | ||||
| @@ -46,8 +61,6 @@ | |||||
| <find print="test"/> | <find print="test"/> | ||||
| </target> | </target> | ||||
| <target name="junit" description="Runs the unit tests" depends="jar"> | <target name="junit" description="Runs the unit tests" depends="jar"> | ||||
| <delete dir="${junit.out.dir.xml}" /> | <delete dir="${junit.out.dir.xml}" /> | ||||
| <mkdir dir="${junit.out.dir.xml}" /> | <mkdir dir="${junit.out.dir.xml}" /> | ||||
| @@ -72,8 +85,6 @@ | |||||
| <target name="test" | <target name="test" | ||||
| depends="junit,junitreport" | depends="junit,junitreport" | ||||
| description="Runs unit tests and creates a report" | |||||
| /> | |||||
| description="Runs unit tests and creates a report"/> | |||||
| </project> | </project> | ||||
| @@ -1,3 +1,20 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| @@ -1,16 +1,40 @@ | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| import org.apache.tools.ant.BuildFileRule; | |||||
| import org.junit.Before; | |||||
| import org.junit.Rule; | |||||
| import org.junit.Test; | |||||
| public class FindTest extends BuildFileTest { | |||||
| import static org.junit.Assert.assertEquals; | |||||
| public FindTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| public class FindTest { | |||||
| @Rule | |||||
| public BuildFileRule rule = new BuildFileRule(); | |||||
| @Before | |||||
| public void setUp() { | public void setUp() { | ||||
| configureProject("build.xml"); | |||||
| rule.configureProject("build.xml"); | |||||
| } | } | ||||
| @Test | |||||
| public void testSimple() { | public void testSimple() { | ||||
| expectLog("use.simple", "test-value"); | |||||
| rule.executeTarget("use.simple"); | |||||
| assertEquals("test-value", rule.getLog()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,4 +1,20 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <project name="FindTask" basedir="." default="test"> | <project name="FindTask" basedir="." default="test"> | ||||
| <property name="src.dir" value="src"/> | <property name="src.dir" value="src"/> | ||||
| @@ -36,8 +52,7 @@ | |||||
| <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | ||||
| </target> | </target> | ||||
| <target name="use.init" description="Taskdef´ the Find-Task" depends="jar"> | |||||
| <target name="use.init" description="Taskdef the Find-Task" depends="jar"> | |||||
| <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | ||||
| </target> | </target> | ||||
| @@ -59,7 +74,6 @@ | |||||
| </find> | </find> | ||||
| </target> | </target> | ||||
| <target name="junit" description="Runs the unit tests" depends="jar"> | <target name="junit" description="Runs the unit tests" depends="jar"> | ||||
| <delete dir="${junit.out.dir.xml}" /> | <delete dir="${junit.out.dir.xml}" /> | ||||
| <mkdir dir="${junit.out.dir.xml}" /> | <mkdir dir="${junit.out.dir.xml}" /> | ||||
| @@ -96,8 +110,6 @@ | |||||
| <target name="test2" | <target name="test2" | ||||
| depends="junit,junitreport" | depends="junit,junitreport" | ||||
| description="Runs unit tests and creates a report" | |||||
| /> | |||||
| description="Runs unit tests and creates a report"/> | |||||
| </project> | </project> | ||||
| @@ -1,17 +1,34 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
| import org.apache.tools.ant.DirectoryScanner; | import org.apache.tools.ant.DirectoryScanner; | ||||
| import java.util.Vector; | |||||
| import java.util.Iterator; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| import java.io.File; | import java.io.File; | ||||
| public class Find extends Task { | public class Find extends Task { | ||||
| private String file; | private String file; | ||||
| private String location; | private String location; | ||||
| private Vector filesets = new Vector(); | |||||
| private List<FileSet> filesets = new ArrayList<>(); | |||||
| public void setFile(String file) { | public void setFile(String file) { | ||||
| this.file = file; | this.file = file; | ||||
| @@ -26,29 +43,28 @@ public class Find extends Task { | |||||
| } | } | ||||
| protected void validate() { | protected void validate() { | ||||
| if (file==null) throw new BuildException("file not set"); | |||||
| if (location==null) throw new BuildException("location not set"); | |||||
| if (filesets.size()<1) throw new BuildException("fileset not set"); | |||||
| if (file == null) throw new BuildException("file not set"); | |||||
| if (location == null) throw new BuildException("location not set"); | |||||
| if (filesets.size() < 1) throw new BuildException("fileset not set"); | |||||
| } | } | ||||
| public void execute2() { | public void execute2() { | ||||
| validate(); | validate(); | ||||
| String foundLocation = null; | String foundLocation = null; | ||||
| for(Iterator itFSets = filesets.iterator(); itFSets.hasNext(); ) { | |||||
| FileSet fs = (FileSet)itFSets.next(); | |||||
| for (FileSet fs : filesets) { | |||||
| DirectoryScanner ds = fs.getDirectoryScanner(getProject()); | DirectoryScanner ds = fs.getDirectoryScanner(getProject()); | ||||
| String[] includedFiles = ds.getIncludedFiles(); | String[] includedFiles = ds.getIncludedFiles(); | ||||
| for(int i=0; i<includedFiles.length; i++) { | |||||
| String filename = includedFiles[i].replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/")+1); | |||||
| if (foundLocation==null && file.equals(filename)) { | |||||
| for (String includedFile : includedFiles) { | |||||
| String filename = includedFile.replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/") + 1); | |||||
| if (foundLocation == null && file.equals(filename)) { | |||||
| File base = ds.getBasedir(); | File base = ds.getBasedir(); | ||||
| File found = new File(base, includedFiles[i]); | |||||
| File found = new File(base, includedFile); | |||||
| foundLocation = found.getAbsolutePath(); | foundLocation = found.getAbsolutePath(); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if (foundLocation!=null) | |||||
| if (foundLocation != null) | |||||
| getProject().setNewProperty(location, foundLocation); | getProject().setNewProperty(location, foundLocation); | ||||
| } | } | ||||
| @@ -1,66 +1,82 @@ | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| import org.apache.tools.ant.types.FileSet; | |||||
| import org.apache.tools.ant.taskdefs.Property; | |||||
| import java.io.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. | |||||
| * | |||||
| */ | |||||
| 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.rules.ExpectedException; | |||||
| public class FindTest extends BuildFileTest { | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public FindTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| public class FindTest { | |||||
| @Rule | |||||
| public BuildFileRule rule = new BuildFileRule(); | |||||
| @Rule | |||||
| public ExpectedException tried = ExpectedException.none(); | |||||
| @Before | |||||
| public void setUp() { | public void setUp() { | ||||
| configureProject("build.xml"); | |||||
| rule.configureProject("build.xml"); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingFile() { | public void testMissingFile() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("file not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-file'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "file not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingLocation() { | public void testMissingLocation() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("location not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-location'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "location not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingFileset() { | public void testMissingFileset() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("fileset not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| find.setLocation("location.ant-jar"); | find.setLocation("location.ant-jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-fileset'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "fileset not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testFileNotPresent() { | public void testFileNotPresent() { | ||||
| executeTarget("testFileNotPresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFileNotPresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNull("Property set to wrong value.", result); | assertNull("Property set to wrong value.", result); | ||||
| } | } | ||||
| @Test | |||||
| public void testFilePresent() { | public void testFilePresent() { | ||||
| executeTarget("testFilePresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFilePresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
| assertTrue("Wrong file found.", result.endsWith("ant.jar")); | assertTrue("Wrong file found.", result.endsWith("ant.jar")); | ||||
| } | } | ||||
| @@ -1,4 +1,20 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <project name="FindTask" basedir="." default="test"> | <project name="FindTask" basedir="." default="test"> | ||||
| <property name="src.dir" value="src"/> | <property name="src.dir" value="src"/> | ||||
| @@ -36,8 +52,7 @@ | |||||
| <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | ||||
| </target> | </target> | ||||
| <target name="use.init" description="Taskdef´ the Find-Task" depends="jar"> | |||||
| <target name="use.init" description="Taskdef the Find-Task" depends="jar"> | |||||
| <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | ||||
| </target> | </target> | ||||
| @@ -102,7 +117,6 @@ | |||||
| <target name="test2" | <target name="test2" | ||||
| depends="junit,junitreport" | depends="junit,junitreport" | ||||
| description="Runs unit tests and creates a report" | |||||
| /> | |||||
| description="Runs unit tests and creates a report"/> | |||||
| </project> | </project> | ||||
| @@ -1,17 +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. | |||||
| * | |||||
| */ | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
| import org.apache.tools.ant.DirectoryScanner; | |||||
| import java.util.Vector; | |||||
| import java.util.Iterator; | |||||
| import java.io.File; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| public class Find extends Task { | public class Find extends Task { | ||||
| private String file; | private String file; | ||||
| private String location; | private String location; | ||||
| private Vector paths = new Vector(); | |||||
| private List<Path> paths = new ArrayList<>(); | |||||
| public void setFile(String file) { | public void setFile(String file) { | ||||
| this.file = file; | this.file = file; | ||||
| @@ -26,26 +41,24 @@ public class Find extends Task { | |||||
| } | } | ||||
| protected void validate() { | protected void validate() { | ||||
| if (file==null) throw new BuildException("file not set"); | |||||
| if (location==null) throw new BuildException("location not set"); | |||||
| if (paths.size()<1) throw new BuildException("path not set"); | |||||
| if (file == null) throw new BuildException("file not set"); | |||||
| if (location == null) throw new BuildException("location not set"); | |||||
| if (paths.size() < 1) throw new BuildException("path not set"); | |||||
| } | } | ||||
| public void execute() { | public void execute() { | ||||
| validate(); | validate(); | ||||
| String foundLocation = null; | String foundLocation = null; | ||||
| for(Iterator itPaths = paths.iterator(); itPaths.hasNext(); ) { | |||||
| Path path = (Path)itPaths.next(); | |||||
| String[] includedFiles = path.list(); | |||||
| for(int i=0; i<includedFiles.length; i++) { | |||||
| String filename = includedFiles[i].replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/")+1); | |||||
| if (foundLocation==null && file.equals(filename)) { | |||||
| for (Path path : paths) { | |||||
| for (String includedFile : path.list()) { | |||||
| String filename = includedFile.replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/") + 1); | |||||
| if (foundLocation == null && file.equals(filename)) { | |||||
| foundLocation = includedFiles[i]; | foundLocation = includedFiles[i]; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if (foundLocation!=null) | |||||
| if (foundLocation != null) | |||||
| getProject().setNewProperty(location, foundLocation); | getProject().setNewProperty(location, foundLocation); | ||||
| } | } | ||||
| @@ -1,66 +1,82 @@ | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| import org.apache.tools.ant.types.FileSet; | |||||
| import org.apache.tools.ant.taskdefs.Property; | |||||
| import java.io.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. | |||||
| * | |||||
| */ | |||||
| 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.rules.ExpectedException; | |||||
| public class FindTest extends BuildFileTest { | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public FindTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| public class FindTest { | |||||
| @Rule | |||||
| public BuildFileRule rule = new BuildFileRule(); | |||||
| @Rule | |||||
| public ExpectedException tried = ExpectedException.none(); | |||||
| @Before | |||||
| public void setUp() { | public void setUp() { | ||||
| configureProject("build.xml"); | |||||
| rule.configureProject("build.xml"); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingFile() { | public void testMissingFile() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("file not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-file'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "file not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingLocation() { | public void testMissingLocation() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("location not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-location'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "location not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingPath() { | public void testMissingPath() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("path not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| find.setLocation("location.ant-jar"); | find.setLocation("location.ant-jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-fileset'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "path not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testFileNotPresent() { | public void testFileNotPresent() { | ||||
| executeTarget("testFileNotPresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFileNotPresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNull("Property set to wrong value.", result); | assertNull("Property set to wrong value.", result); | ||||
| } | } | ||||
| @Test | |||||
| public void testFilePresent() { | public void testFilePresent() { | ||||
| executeTarget("testFilePresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFilePresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
| assertTrue("Wrong file found.", result.endsWith("ant.jar")); | assertTrue("Wrong file found.", result.endsWith("ant.jar")); | ||||
| } | } | ||||
| @@ -1,4 +1,20 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <project name="FindTask" basedir="." default="test"> | <project name="FindTask" basedir="." default="test"> | ||||
| <property name="src.dir" value="src"/> | <property name="src.dir" value="src"/> | ||||
| @@ -36,8 +52,7 @@ | |||||
| <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | ||||
| </target> | </target> | ||||
| <target name="use.init" description="Taskdef´ the Find-Task" depends="jar"> | |||||
| <target name="use.init" description="Taskdef the Find-Task" depends="jar"> | |||||
| <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | ||||
| </target> | </target> | ||||
| @@ -118,7 +133,6 @@ | |||||
| </delete> | </delete> | ||||
| </target> | </target> | ||||
| <target name="junit" description="Runs the unit tests" depends="jar"> | <target name="junit" description="Runs the unit tests" depends="jar"> | ||||
| <delete dir="${junit.out.dir.xml}" /> | <delete dir="${junit.out.dir.xml}" /> | ||||
| <mkdir dir="${junit.out.dir.xml}" /> | <mkdir dir="${junit.out.dir.xml}" /> | ||||
| @@ -155,8 +169,6 @@ | |||||
| <target name="test2" | <target name="test2" | ||||
| depends="junit,junitreport" | depends="junit,junitreport" | ||||
| description="Runs unit tests and creates a report" | |||||
| /> | |||||
| description="Runs unit tests and creates a report"/> | |||||
| </project> | </project> | ||||
| @@ -1,23 +1,38 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
| import org.apache.tools.ant.DirectoryScanner; | |||||
| import java.util.Vector; | |||||
| import java.util.Iterator; | |||||
| import java.io.File; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| public class Find extends Task { | public class Find extends Task { | ||||
| // ===== internal attributes ===== | // ===== internal attributes ===== | ||||
| private Vector foundFiles = new Vector(); | |||||
| private List<String> foundFiles = new ArrayList<>(); | |||||
| // ===== attribute support ===== | // ===== attribute support ===== | ||||
| private String file; | private String file; | ||||
| private String location; | private String location; | ||||
| private Vector paths = new Vector(); | |||||
| private List<Path> paths = new ArrayList<>(); | |||||
| private String delimiter = null; | private String delimiter = null; | ||||
| public void setFile(String file) { | public void setFile(String file) { | ||||
| @@ -39,42 +54,40 @@ public class Find extends Task { | |||||
| // ===== the tasks work ===== | // ===== the tasks work ===== | ||||
| protected void validate() { | protected void validate() { | ||||
| if (file==null) throw new BuildException("file not set"); | |||||
| if (location==null) throw new BuildException("location not set"); | |||||
| if (paths.size()<1) throw new BuildException("path not set"); | |||||
| if (file == null) throw new BuildException("file not set"); | |||||
| if (location == null) throw new BuildException("location not set"); | |||||
| if (paths.isEmpty()) throw new BuildException("path not set"); | |||||
| } | } | ||||
| public void execute() { | public void execute() { | ||||
| validate(); | validate(); | ||||
| for(Iterator itPaths = paths.iterator(); itPaths.hasNext(); ) { | |||||
| Path path = (Path)itPaths.next(); | |||||
| String[] includedFiles = path.list(); | |||||
| for(int i=0; i<includedFiles.length; i++) { | |||||
| String filename = includedFiles[i].replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/")+1); | |||||
| if (file.equals(filename) && !foundFiles.contains(includedFiles[i])) { | |||||
| foundFiles.add(includedFiles[i]); | |||||
| for (Path path : paths) { | |||||
| for (String includedFile : path.list()) { | |||||
| String filename = includedFile.replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/") + 1); | |||||
| if (file.equals(filename) && !foundFiles.contains(includedFile)) { | |||||
| foundFiles.add(includedFile); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| String rv = null; | String rv = null; | ||||
| if (foundFiles.size() > 0) { | |||||
| if (delimiter==null) { | |||||
| if (!foundFiles.isEmpty()) { | |||||
| if (delimiter == null) { | |||||
| // only the first | // only the first | ||||
| rv = (String)foundFiles.elementAt(0); | |||||
| rv = foundFiles.get(0); | |||||
| } else { | } else { | ||||
| // create list | // create list | ||||
| StringBuffer list = new StringBuffer(); | |||||
| for(Iterator it=foundFiles.iterator(); it.hasNext(); ) { | |||||
| list.append(it.next()); | |||||
| if (it.hasNext()) list.append(delimiter); | |||||
| StringBuilder list = new StringBuilder(); | |||||
| for (String file : foundFiles) { | |||||
| if (list.length() > 0) list.append(delimiter); | |||||
| list.append(file); | |||||
| } | } | ||||
| rv = list.toString(); | rv = list.toString(); | ||||
| } | } | ||||
| } | } | ||||
| if (rv!=null) | |||||
| if (rv != null) | |||||
| getProject().setNewProperty(location, rv); | getProject().setNewProperty(location, rv); | ||||
| } | } | ||||
| @@ -1,78 +1,92 @@ | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| import org.apache.tools.ant.types.FileSet; | |||||
| import org.apache.tools.ant.taskdefs.Property; | |||||
| import java.io.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. | |||||
| * | |||||
| */ | |||||
| 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.rules.ExpectedException; | |||||
| public class FindTest extends BuildFileTest { | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public FindTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| public class FindTest { | |||||
| @Rule | |||||
| public BuildFileRule rule = new BuildFileRule(); | |||||
| @Rule | |||||
| public ExpectedException tried = ExpectedException.none(); | |||||
| @Before | |||||
| public void setUp() { | public void setUp() { | ||||
| configureProject("build.xml"); | |||||
| rule.configureProject("build.xml"); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingFile() { | public void testMissingFile() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("file not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-file'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "file not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingLocation() { | public void testMissingLocation() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("location not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-location'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "location not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingPath() { | public void testMissingPath() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("path not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| find.setLocation("location.ant-jar"); | find.setLocation("location.ant-jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-fileset'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "path not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testFileNotPresent() { | public void testFileNotPresent() { | ||||
| executeTarget("testFileNotPresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFileNotPresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNull("Property set to wrong value.", result); | assertNull("Property set to wrong value.", result); | ||||
| } | } | ||||
| public void testFilePresent() { | public void testFilePresent() { | ||||
| executeTarget("testFilePresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFilePresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
| assertTrue("Wrong file found.", result.endsWith("ant.jar")); | assertTrue("Wrong file found.", result.endsWith("ant.jar")); | ||||
| } | } | ||||
| public void testMultipleFiles() { | public void testMultipleFiles() { | ||||
| executeTarget("testMultipleFiles"); | |||||
| String result = getProject().getProperty("location.test"); | |||||
| rule.executeTarget("testMultipleFiles"); | |||||
| String result = rule.getProject().getProperty("location.test"); | |||||
| assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
| assertTrue("Only one file found.", result.indexOf(";") > -1); | |||||
| assertTrue("Only one file found.", result.contains(";")); | |||||
| //assertTrue("Wrong file found.", result.endsWith("ant.jar")); | //assertTrue("Wrong file found.", result.endsWith("ant.jar")); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,4 +1,20 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <project name="FindTask" basedir="." default="test"> | <project name="FindTask" basedir="." default="test"> | ||||
| <property name="src.dir" value="src"/> | <property name="src.dir" value="src"/> | ||||
| @@ -29,15 +45,14 @@ | |||||
| <target name="compile" description="Compiles the Task"> | <target name="compile" description="Compiles the Task"> | ||||
| <mkdir dir="${classes.dir}"/> | <mkdir dir="${classes.dir}"/> | ||||
| <javac srcdir="${src.dir}" destdir="${classes.dir}" classpath="${ant.test.lib}"/> | |||||
| <javac includeantruntime="true" srcdir="${src.dir}" destdir="${classes.dir}" classpath="${ant.test.lib}"/> | |||||
| </target> | </target> | ||||
| <target name="jar" description="JARs the Task" depends="compile"> | <target name="jar" description="JARs the Task" depends="compile"> | ||||
| <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | ||||
| </target> | </target> | ||||
| <target name="use.init" description="Taskdef´ the Find-Task" depends="jar"> | |||||
| <target name="use.init" description="Taskdef the Find-Task" depends="jar"> | |||||
| <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | <taskdef name="find" classname="Find" classpath="${ant.project.name}.jar"/> | ||||
| </target> | </target> | ||||
| @@ -118,7 +133,6 @@ | |||||
| </delete> | </delete> | ||||
| </target> | </target> | ||||
| <target name="junit" description="Runs the unit tests" depends="jar"> | <target name="junit" description="Runs the unit tests" depends="jar"> | ||||
| <delete dir="${junit.out.dir.xml}" /> | <delete dir="${junit.out.dir.xml}" /> | ||||
| <mkdir dir="${junit.out.dir.xml}" /> | <mkdir dir="${junit.out.dir.xml}" /> | ||||
| @@ -155,8 +169,6 @@ | |||||
| <target name="test2" | <target name="test2" | ||||
| depends="junit,junitreport" | depends="junit,junitreport" | ||||
| description="Runs unit tests and creates a report" | |||||
| /> | |||||
| description="Runs unit tests and creates a report"/> | |||||
| </project> | </project> | ||||
| @@ -1,3 +1,19 @@ | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <html> | <html> | ||||
| <head> | <head> | ||||
| @@ -7,9 +23,9 @@ | |||||
| <body> | <body> | ||||
| <h2><a name="find">Find</a></h2> | |||||
| <h2 id="find">Find</h2> | |||||
| <h3>Description</h3> | <h3>Description</h3> | ||||
| <p>Searchs in a given path for a file and returns the absolute to it as property. | |||||
| <p>Searches in a given path for a file and returns the absolute to it as property. | |||||
| If delimiter is set this task returns all found locations.</p> | If delimiter is set this task returns all found locations.</p> | ||||
| <h3>Parameters</h3> | <h3>Parameters</h3> | ||||
| @@ -1,80 +1,40 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.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 | |||||
| * | * | ||||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | |||||
| * modification, are permitted provided that the following conditions | |||||
| * are met: | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | * | ||||
| * 1. Redistributions of source code must retain the above copyright | |||||
| * notice, this list of conditions and the following disclaimer. | |||||
| * | |||||
| * 2. Redistributions in binary form must reproduce the above copyright | |||||
| * notice, this list of conditions and the following disclaimer in | |||||
| * the documentation and/or other materials provided with the | |||||
| * distribution. | |||||
| * | |||||
| * 3. The end-user documentation included with the redistribution, if | |||||
| * any, must include the following acknowlegement: | |||||
| * "This product includes software developed by the | |||||
| * Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowlegement may appear in the software itself, | |||||
| * if and wherever such third-party acknowlegements normally appear. | |||||
| * | |||||
| * 4. The names "Ant" and "Apache Software | |||||
| * Foundation" must not be used to endorse or promote products derived | |||||
| * from this software without prior written permission. For written | |||||
| * permission, please contact apache@apache.org. | |||||
| * | |||||
| * 5. Products derived from this software may not be called "Apache" | |||||
| * nor may "Apache" appear in their names without prior written | |||||
| * permission of the Apache Group. | |||||
| * | |||||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| * SUCH DAMAGE. | |||||
| * ==================================================================== | |||||
| * | |||||
| * This software consists of voluntary contributions made by many | |||||
| * individuals on behalf of the Apache Software Foundation. For more | |||||
| * information on the Apache Software Foundation, please see | |||||
| * <http://www.apache.org/>. | |||||
| */ | */ | ||||
| //package org.apache.tools.ant.taskdefs; | |||||
| package org.apache.tools.ant.taskdefs; | |||||
| import org.apache.tools.ant.Task; | |||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.Task; | |||||
| import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
| import org.apache.tools.ant.DirectoryScanner; | |||||
| import java.util.Vector; | |||||
| import java.util.Iterator; | |||||
| import java.io.File; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| public class Find extends Task { | public class Find extends Task { | ||||
| // ===== internal attributes ===== | // ===== internal attributes ===== | ||||
| private Vector foundFiles = new Vector(); | |||||
| private List<String> foundFiles = new ArrayList<>(); | |||||
| // ===== attribute support ===== | // ===== attribute support ===== | ||||
| private String file; | private String file; | ||||
| private String location; | private String location; | ||||
| private Vector paths = new Vector(); | |||||
| private List<Path> paths = new ArrayList<>(); | |||||
| private String delimiter = null; | private String delimiter = null; | ||||
| public void setFile(String file) { | public void setFile(String file) { | ||||
| @@ -96,45 +56,43 @@ public class Find extends Task { | |||||
| // ===== the tasks work ===== | // ===== the tasks work ===== | ||||
| protected void validate() { | protected void validate() { | ||||
| if (file==null) throw new BuildException("file not set"); | |||||
| if (location==null) throw new BuildException("location not set"); | |||||
| if (paths.size()<1) throw new BuildException("path not set"); | |||||
| if (file == null) throw new BuildException("file not set"); | |||||
| if (location == null) throw new BuildException("location not set"); | |||||
| if (paths.isEmpty()) throw new BuildException("path not set"); | |||||
| } | } | ||||
| public void execute() { | public void execute() { | ||||
| validate(); | validate(); | ||||
| // find all files | // find all files | ||||
| for(Iterator itPaths = paths.iterator(); itPaths.hasNext(); ) { | |||||
| Path path = (Path)itPaths.next(); | |||||
| String[] includedFiles = path.list(); | |||||
| for(int i=0; i<includedFiles.length; i++) { | |||||
| String filename = includedFiles[i].replace('\\','/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/")+1); | |||||
| if (file.equals(filename) && !foundFiles.contains(includedFiles[i])) { | |||||
| foundFiles.add(includedFiles[i]); | |||||
| for (Path path : paths) { | |||||
| for (String includedFile : path.list()) { | |||||
| String filename = includedFile.replace('\\', '/'); | |||||
| filename = filename.substring(filename.lastIndexOf("/") + 1); | |||||
| if (file.equals(filename) && !foundFiles.contains(includedFile)) { | |||||
| foundFiles.add(includedFile); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| // create the return value (list/single) | // create the return value (list/single) | ||||
| String rv = null; | String rv = null; | ||||
| if (foundFiles.size() > 0) { | |||||
| if (delimiter==null) { | |||||
| if (!foundFiles.isEmpty()) { | |||||
| if (delimiter == null) { | |||||
| // only the first | // only the first | ||||
| rv = (String)foundFiles.elementAt(0); | |||||
| rv = foundFiles.get(0); | |||||
| } else { | } else { | ||||
| // create list | // create list | ||||
| StringBuffer list = new StringBuffer(); | |||||
| for(Iterator it=foundFiles.iterator(); it.hasNext(); ) { | |||||
| list.append(it.next()); | |||||
| if (it.hasNext()) list.append(delimiter); | |||||
| StringBuilder list = new StringBuilder(); | |||||
| for (String file : foundFiles) { | |||||
| if (list.length() > 0) list.append(delimiter); | |||||
| list.append(file); | |||||
| } | } | ||||
| rv = list.toString(); | rv = list.toString(); | ||||
| } | } | ||||
| } | } | ||||
| // create the property | // create the property | ||||
| if (rv!=null) | |||||
| if (rv != null) | |||||
| getProject().setNewProperty(location, rv); | getProject().setNewProperty(location, rv); | ||||
| } | } | ||||
| @@ -1,134 +1,95 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.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 | |||||
| * | * | ||||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | |||||
| * modification, are permitted provided that the following conditions | |||||
| * are met: | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | * | ||||
| * 1. Redistributions of source code must retain the above copyright | |||||
| * notice, this list of conditions and the following disclaimer. | |||||
| * | |||||
| * 2. Redistributions in binary form must reproduce the above copyright | |||||
| * notice, this list of conditions and the following disclaimer in | |||||
| * the documentation and/or other materials provided with the | |||||
| * distribution. | |||||
| * | |||||
| * 3. The end-user documentation included with the redistribution, if | |||||
| * any, must include the following acknowlegement: | |||||
| * "This product includes software developed by the | |||||
| * Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowlegement may appear in the software itself, | |||||
| * if and wherever such third-party acknowlegements normally appear. | |||||
| * | |||||
| * 4. The names "Ant" and "Apache Software | |||||
| * Foundation" must not be used to endorse or promote products derived | |||||
| * from this software without prior written permission. For written | |||||
| * permission, please contact apache@apache.org. | |||||
| * | |||||
| * 5. Products derived from this software may not be called "Apache" | |||||
| * nor may "Apache" appear in their names without prior written | |||||
| * permission of the Apache Group. | |||||
| * | |||||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| * SUCH DAMAGE. | |||||
| * ==================================================================== | |||||
| * | |||||
| * This software consists of voluntary contributions made by many | |||||
| * individuals on behalf of the Apache Software Foundation. For more | |||||
| * information on the Apache Software Foundation, please see | |||||
| * <http://www.apache.org/>. | |||||
| */ | */ | ||||
| package org.apache.tools.ant.taskdefs; | |||||
| //package org.apache.tools.ant.taskdefs; | |||||
| 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.rules.ExpectedException; | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| import org.apache.tools.ant.types.FileSet; | |||||
| import org.apache.tools.ant.taskdefs.Property; | |||||
| import java.io.File; | |||||
| import static org.junit.Assert.assertNotNull; | |||||
| import static org.junit.Assert.assertNull; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public class FindTest extends BuildFileTest { | |||||
| public class FindTest { | |||||
| public FindTest(String name) { | |||||
| super(name); | |||||
| } | |||||
| @Rule | |||||
| public BuildFileRule rule = new BuildFileRule(); | |||||
| @Rule | |||||
| public ExpectedException tried = ExpectedException.none(); | |||||
| @Before | |||||
| public void setUp() { | public void setUp() { | ||||
| configureProject("build.xml"); | |||||
| rule.configureProject("build.xml"); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingFile() { | public void testMissingFile() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("file not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-file'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "file not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingLocation() { | public void testMissingLocation() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("location not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-location'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "location not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testMissingPath() { | public void testMissingPath() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("path not set"); | |||||
| Find find = new Find(); | Find find = new Find(); | ||||
| find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
| find.setLocation("location.ant-jar"); | find.setLocation("location.ant-jar"); | ||||
| try { | |||||
| find.execute(); | |||||
| fail("No 'no-fileset'-exception thrown."); | |||||
| } catch (Exception e) { | |||||
| // exception expected | |||||
| String expected = "path not set"; | |||||
| assertEquals("Wrong exception message.", expected, e.getMessage()); | |||||
| } | |||||
| find.execute(); | |||||
| } | } | ||||
| @Test | |||||
| public void testFileNotPresent() { | public void testFileNotPresent() { | ||||
| executeTarget("testFileNotPresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFileNotPresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNull("Property set to wrong value.", result); | assertNull("Property set to wrong value.", result); | ||||
| } | } | ||||
| @Test | |||||
| public void testFilePresent() { | public void testFilePresent() { | ||||
| executeTarget("testFilePresent"); | |||||
| String result = getProject().getProperty("location.ant-jar"); | |||||
| rule.executeTarget("testFilePresent"); | |||||
| String result = rule.getProject().getProperty("location.ant-jar"); | |||||
| assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
| assertTrue("Wrong file found.", result.endsWith("ant.jar")); | assertTrue("Wrong file found.", result.endsWith("ant.jar")); | ||||
| } | } | ||||
| @Test | |||||
| public void testMultipleFiles() { | public void testMultipleFiles() { | ||||
| executeTarget("testMultipleFiles"); | |||||
| String result = getProject().getProperty("location.test"); | |||||
| rule.executeTarget("testMultipleFiles"); | |||||
| String result = rule.getProject().getProperty("location.test"); | |||||
| assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
| assertTrue("Only one file found.", result.indexOf(";") > -1); | |||||
| assertTrue("Only one file found.", result.contains(";")); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,4 +1,20 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!-- | |||||
| Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| contributor license agreements. See the NOTICE file distributed with | |||||
| this work for additional information regarding copyright ownership. | |||||
| The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| (the "License"); you may not use this file except in compliance with | |||||
| the License. You may obtain a copy of the License at | |||||
| http://www.apache.org/licenses/LICENSE-2.0 | |||||
| Unless required by applicable law or agreed to in writing, software | |||||
| distributed under the License is distributed on an "AS IS" BASIS, | |||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| See the License for the specific language governing permissions and | |||||
| limitations under the License. | |||||
| --> | |||||
| <project name="MyTask" basedir="." default="test"> | <project name="MyTask" basedir="." default="test"> | ||||
| <property name="src.dir" value="src"/> | <property name="src.dir" value="src"/> | ||||
| @@ -29,7 +45,7 @@ | |||||
| <target name="compile" description="Compiles the Task"> | <target name="compile" description="Compiles the Task"> | ||||
| <mkdir dir="${classes.dir}"/> | <mkdir dir="${classes.dir}"/> | ||||
| <javac srcdir="${src.dir}" destdir="${classes.dir}" classpath="${ant.test.lib}"/> | |||||
| <javac includeantruntime="true" srcdir="${src.dir}" destdir="${classes.dir}" classpath="${ant.test.lib}"/> | |||||
| </target> | </target> | ||||
| <target name="jar" description="JARs the Task" depends="compile"> | <target name="jar" description="JARs the Task" depends="compile"> | ||||
| @@ -37,7 +53,7 @@ | |||||
| </target> | </target> | ||||
| <target name="use.init" description="Taskdef´ the HelloWorld-Task" depends="jar"> | |||||
| <target name="use.init" description="Taskdef the HelloWorld-Task" depends="jar"> | |||||
| <taskdef name="helloworld" classname="HelloWorld" classpath="${ant.project.name}.jar"/> | <taskdef name="helloworld" classname="HelloWorld" classpath="${ant.project.name}.jar"/> | ||||
| </target> | </target> | ||||
| @@ -68,8 +84,7 @@ | |||||
| <target name="use" | <target name="use" | ||||
| description="Try all (w/out use.fail)" | description="Try all (w/out use.fail)" | ||||
| depends="use.without,use.message,use.nestedText,use.nestedElement" | |||||
| /> | |||||
| depends="use.without,use.message,use.nestedText,use.nestedElement"/> | |||||
| <target name="junit" description="Runs the unit tests" depends="jar"> | <target name="junit" description="Runs the unit tests" depends="jar"> | ||||
| @@ -96,8 +111,6 @@ | |||||
| <target name="test" | <target name="test" | ||||
| depends="junit,junitreport" | depends="junit,junitreport" | ||||
| description="Runs unit tests and creates a report" | |||||
| /> | |||||
| description="Runs unit tests and creates a report"/> | |||||
| </project> | </project> | ||||
| @@ -1,11 +1,29 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import java.util.Vector; | |||||
| import java.util.Iterator; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * The task of the tutorial. | * The task of the tutorial. | ||||
| * Prints a message or let the build fail. | |||||
| * Prints a message or lets the build fail. | |||||
| * @author Jan Matérne | * @author Jan Matérne | ||||
| * @since 2003-08-19 | * @since 2003-08-19 | ||||
| */ | */ | ||||
| @@ -36,18 +54,17 @@ public class HelloWorld extends Task { | |||||
| if (fail) throw new BuildException("Fail requested."); | if (fail) throw new BuildException("Fail requested."); | ||||
| // handle attribute 'message' and nested text | // handle attribute 'message' and nested text | ||||
| if (message!=null) log(message); | |||||
| if (message != null) log(message); | |||||
| // handle nested elements | // handle nested elements | ||||
| for (Iterator it=messages.iterator(); it.hasNext(); ) { | |||||
| Message msg = (Message)it.next(); | |||||
| for (Message msg : messages) { | |||||
| log(msg.getMsg()); | log(msg.getMsg()); | ||||
| } | } | ||||
| } | } | ||||
| /** Store nested 'message's. */ | /** Store nested 'message's. */ | ||||
| Vector messages = new Vector(); | |||||
| List<Message> messages = new ArrayList<>(); | |||||
| /** Factory method for creating nested 'message's. */ | /** Factory method for creating nested 'message's. */ | ||||
| public Message createMessage() { | public Message createMessage() { | ||||
| @@ -67,4 +84,4 @@ public class HelloWorld extends Task { | |||||
| public String getMsg() { return msg; } | public String getMsg() { return msg; } | ||||
| } | } | ||||
| } | |||||
| } | |||||
| @@ -1,40 +1,77 @@ | |||||
| import org.apache.tools.ant.BuildFileTest; | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| import 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.rules.ExpectedException; | |||||
| public class HelloWorldTest extends BuildFileTest { | |||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.assertTrue; | |||||
| public HelloWorldTest(String s) { | |||||
| super(s); | |||||
| } | |||||
| public class HelloWorldTest { | |||||
| @Rule | |||||
| public BuildFileRule rule = new BuildFileRule(); | |||||
| @Rule | |||||
| public ExpectedException tried = ExpectedException.none(); | |||||
| @Before | |||||
| public void setUp() { | public void setUp() { | ||||
| // initialize Ant | // initialize Ant | ||||
| configureProject("build.xml"); | |||||
| rule.configureProject("build.xml"); | |||||
| } | } | ||||
| @Test | |||||
| public void testWithout() { | public void testWithout() { | ||||
| executeTarget("use.without"); | |||||
| assertEquals("Message was logged but should not.", getLog(), ""); | |||||
| rule.executeTarget("use.without"); | |||||
| assertEquals("Message was logged but should not.", "", rule.getLog()); | |||||
| } | } | ||||
| @Test | |||||
| public void testMessage() { | public void testMessage() { | ||||
| // execute target 'use.nestedText' and expect a message | // execute target 'use.nestedText' and expect a message | ||||
| // 'attribute-text' in the log | // 'attribute-text' in the log | ||||
| expectLog("use.message", "attribute-text"); | |||||
| rule.executeTarget("use.message"); | |||||
| assertEquals(rule.getLog(), "attribute-text"); | |||||
| } | } | ||||
| @Test | |||||
| public void testFail() { | public void testFail() { | ||||
| tried.expect(BuildException.class); | |||||
| tried.expectMessage("Fail requested."); | |||||
| // execute target 'use.fail' and expect a BuildException | // execute target 'use.fail' and expect a BuildException | ||||
| // with text 'Fail requested.' | // with text 'Fail requested.' | ||||
| expectBuildException("use.fail", "Fail requested."); | |||||
| rule.executeTarget("use.fail"); | |||||
| } | } | ||||
| @Test | |||||
| public void testNestedText() { | public void testNestedText() { | ||||
| expectLog("use.nestedText", "nested-text"); | |||||
| rule.executeTarget("use.nestedText"); | |||||
| assertEquals("nested-text", rule.getLog()); | |||||
| } | } | ||||
| @Test | |||||
| public void testNestedElement() { | public void testNestedElement() { | ||||
| executeTarget("use.nestedElement"); | |||||
| assertLogContaining("Nested Element 1"); | |||||
| assertLogContaining("Nested Element 2"); | |||||
| rule.executeTarget("use.nestedElement"); | |||||
| assertTrue(rule.getLog().contains("Nested Element 1")); | |||||
| assertTrue(rule.getLog().contains("Nested Element 2")); | |||||
| } | } | ||||
| } | } | ||||