@@ -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"> | |||
<property name="src.dir" value="src"/> | |||
@@ -36,8 +52,7 @@ | |||
<jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | |||
</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"/> | |||
</target> | |||
@@ -46,8 +61,6 @@ | |||
<find print="test"/> | |||
</target> | |||
<target name="junit" description="Runs the unit tests" depends="jar"> | |||
<delete dir="${junit.out.dir.xml}" /> | |||
<mkdir dir="${junit.out.dir.xml}" /> | |||
@@ -72,8 +85,6 @@ | |||
<target name="test" | |||
depends="junit,junitreport" | |||
description="Runs unit tests and creates a report" | |||
/> | |||
description="Runs unit tests and creates a report"/> | |||
</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.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() { | |||
configureProject("build.xml"); | |||
rule.configureProject("build.xml"); | |||
} | |||
@Test | |||
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"> | |||
<property name="src.dir" value="src"/> | |||
@@ -36,8 +52,7 @@ | |||
<jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | |||
</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"/> | |||
</target> | |||
@@ -59,7 +74,6 @@ | |||
</find> | |||
</target> | |||
<target name="junit" description="Runs the unit tests" depends="jar"> | |||
<delete dir="${junit.out.dir.xml}" /> | |||
<mkdir dir="${junit.out.dir.xml}" /> | |||
@@ -96,8 +110,6 @@ | |||
<target name="test2" | |||
depends="junit,junitreport" | |||
description="Runs unit tests and creates a report" | |||
/> | |||
description="Runs unit tests and creates a report"/> | |||
</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.BuildException; | |||
import org.apache.tools.ant.types.FileSet; | |||
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; | |||
public class Find extends Task { | |||
private String file; | |||
private String location; | |||
private Vector filesets = new Vector(); | |||
private List<FileSet> filesets = new ArrayList<>(); | |||
public void setFile(String file) { | |||
this.file = file; | |||
@@ -26,29 +43,28 @@ public class Find extends Task { | |||
} | |||
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() { | |||
validate(); | |||
String foundLocation = null; | |||
for(Iterator itFSets = filesets.iterator(); itFSets.hasNext(); ) { | |||
FileSet fs = (FileSet)itFSets.next(); | |||
for (FileSet fs : filesets) { | |||
DirectoryScanner ds = fs.getDirectoryScanner(getProject()); | |||
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 found = new File(base, includedFiles[i]); | |||
File found = new File(base, includedFile); | |||
foundLocation = found.getAbsolutePath(); | |||
} | |||
} | |||
} | |||
if (foundLocation!=null) | |||
if (foundLocation != null) | |||
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() { | |||
configureProject("build.xml"); | |||
rule.configureProject("build.xml"); | |||
} | |||
@Test | |||
public void testMissingFile() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("file not set"); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("location not set"); | |||
Find find = new Find(); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("fileset not set"); | |||
Find find = new Find(); | |||
find.setFile("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() { | |||
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); | |||
} | |||
@Test | |||
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); | |||
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"> | |||
<property name="src.dir" value="src"/> | |||
@@ -36,8 +52,7 @@ | |||
<jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | |||
</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"/> | |||
</target> | |||
@@ -102,7 +117,6 @@ | |||
<target name="test2" | |||
depends="junit,junitreport" | |||
description="Runs unit tests and creates a report" | |||
/> | |||
description="Runs unit tests and creates a report"/> | |||
</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.BuildException; | |||
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 { | |||
private String file; | |||
private String location; | |||
private Vector paths = new Vector(); | |||
private List<Path> paths = new ArrayList<>(); | |||
public void setFile(String file) { | |||
this.file = file; | |||
@@ -26,26 +41,24 @@ public class Find extends Task { | |||
} | |||
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() { | |||
validate(); | |||
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]; | |||
} | |||
} | |||
} | |||
if (foundLocation!=null) | |||
if (foundLocation != null) | |||
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() { | |||
configureProject("build.xml"); | |||
rule.configureProject("build.xml"); | |||
} | |||
@Test | |||
public void testMissingFile() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("file not set"); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("location not set"); | |||
Find find = new Find(); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("path not set"); | |||
Find find = new Find(); | |||
find.setFile("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() { | |||
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); | |||
} | |||
@Test | |||
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); | |||
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"> | |||
<property name="src.dir" value="src"/> | |||
@@ -36,8 +52,7 @@ | |||
<jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | |||
</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"/> | |||
</target> | |||
@@ -118,7 +133,6 @@ | |||
</delete> | |||
</target> | |||
<target name="junit" description="Runs the unit tests" depends="jar"> | |||
<delete dir="${junit.out.dir.xml}" /> | |||
<mkdir dir="${junit.out.dir.xml}" /> | |||
@@ -155,8 +169,6 @@ | |||
<target name="test2" | |||
depends="junit,junitreport" | |||
description="Runs unit tests and creates a report" | |||
/> | |||
description="Runs unit tests and creates a report"/> | |||
</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.BuildException; | |||
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 { | |||
// ===== internal attributes ===== | |||
private Vector foundFiles = new Vector(); | |||
private List<String> foundFiles = new ArrayList<>(); | |||
// ===== attribute support ===== | |||
private String file; | |||
private String location; | |||
private Vector paths = new Vector(); | |||
private List<Path> paths = new ArrayList<>(); | |||
private String delimiter = null; | |||
public void setFile(String file) { | |||
@@ -39,42 +54,40 @@ public class Find extends Task { | |||
// ===== the tasks work ===== | |||
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() { | |||
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; | |||
if (foundFiles.size() > 0) { | |||
if (delimiter==null) { | |||
if (!foundFiles.isEmpty()) { | |||
if (delimiter == null) { | |||
// only the first | |||
rv = (String)foundFiles.elementAt(0); | |||
rv = foundFiles.get(0); | |||
} else { | |||
// 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(); | |||
} | |||
} | |||
if (rv!=null) | |||
if (rv != null) | |||
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() { | |||
configureProject("build.xml"); | |||
rule.configureProject("build.xml"); | |||
} | |||
@Test | |||
public void testMissingFile() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("file not set"); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("location not set"); | |||
Find find = new Find(); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("path not set"); | |||
Find find = new Find(); | |||
find.setFile("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() { | |||
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); | |||
} | |||
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); | |||
assertTrue("Wrong file found.", result.endsWith("ant.jar")); | |||
} | |||
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); | |||
assertTrue("Only one file found.", result.indexOf(";") > -1); | |||
assertTrue("Only one file found.", result.contains(";")); | |||
//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"> | |||
<property name="src.dir" value="src"/> | |||
@@ -29,15 +45,14 @@ | |||
<target name="compile" description="Compiles the Task"> | |||
<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 name="jar" description="JARs the Task" depends="compile"> | |||
<jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> | |||
</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"/> | |||
</target> | |||
@@ -118,7 +133,6 @@ | |||
</delete> | |||
</target> | |||
<target name="junit" description="Runs the unit tests" depends="jar"> | |||
<delete dir="${junit.out.dir.xml}" /> | |||
<mkdir dir="${junit.out.dir.xml}" /> | |||
@@ -155,8 +169,6 @@ | |||
<target name="test2" | |||
depends="junit,junitreport" | |||
description="Runs unit tests and creates a report" | |||
/> | |||
description="Runs unit tests and creates a report"/> | |||
</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> | |||
<head> | |||
@@ -7,9 +23,9 @@ | |||
<body> | |||
<h2><a name="find">Find</a></h2> | |||
<h2 id="find">Find</h2> | |||
<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> | |||
<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.Task; | |||
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 { | |||
// ===== internal attributes ===== | |||
private Vector foundFiles = new Vector(); | |||
private List<String> foundFiles = new ArrayList<>(); | |||
// ===== attribute support ===== | |||
private String file; | |||
private String location; | |||
private Vector paths = new Vector(); | |||
private List<Path> paths = new ArrayList<>(); | |||
private String delimiter = null; | |||
public void setFile(String file) { | |||
@@ -96,45 +56,43 @@ public class Find extends Task { | |||
// ===== the tasks work ===== | |||
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() { | |||
validate(); | |||
// 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) | |||
String rv = null; | |||
if (foundFiles.size() > 0) { | |||
if (delimiter==null) { | |||
if (!foundFiles.isEmpty()) { | |||
if (delimiter == null) { | |||
// only the first | |||
rv = (String)foundFiles.elementAt(0); | |||
rv = foundFiles.get(0); | |||
} else { | |||
// 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(); | |||
} | |||
} | |||
// create the property | |||
if (rv!=null) | |||
if (rv != null) | |||
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() { | |||
configureProject("build.xml"); | |||
rule.configureProject("build.xml"); | |||
} | |||
@Test | |||
public void testMissingFile() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("file not set"); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("location not set"); | |||
Find find = new Find(); | |||
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() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("path not set"); | |||
Find find = new Find(); | |||
find.setFile("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() { | |||
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); | |||
} | |||
@Test | |||
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); | |||
assertTrue("Wrong file found.", result.endsWith("ant.jar")); | |||
} | |||
@Test | |||
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); | |||
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"> | |||
<property name="src.dir" value="src"/> | |||
@@ -29,7 +45,7 @@ | |||
<target name="compile" description="Compiles the Task"> | |||
<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 name="jar" description="JARs the Task" depends="compile"> | |||
@@ -37,7 +53,7 @@ | |||
</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"/> | |||
</target> | |||
@@ -68,8 +84,7 @@ | |||
<target name="use" | |||
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"> | |||
@@ -96,8 +111,6 @@ | |||
<target name="test" | |||
depends="junit,junitreport" | |||
description="Runs unit tests and creates a report" | |||
/> | |||
description="Runs unit tests and creates a report"/> | |||
</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.BuildException; | |||
import java.util.Vector; | |||
import java.util.Iterator; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
/** | |||
* 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 | |||
* @since 2003-08-19 | |||
*/ | |||
@@ -36,18 +54,17 @@ public class HelloWorld extends Task { | |||
if (fail) throw new BuildException("Fail requested."); | |||
// handle attribute 'message' and nested text | |||
if (message!=null) log(message); | |||
if (message != null) log(message); | |||
// handle nested elements | |||
for (Iterator it=messages.iterator(); it.hasNext(); ) { | |||
Message msg = (Message)it.next(); | |||
for (Message msg : messages) { | |||
log(msg.getMsg()); | |||
} | |||
} | |||
/** Store nested 'message's. */ | |||
Vector messages = new Vector(); | |||
List<Message> messages = new ArrayList<>(); | |||
/** Factory method for creating nested 'message's. */ | |||
public Message createMessage() { | |||
@@ -67,4 +84,4 @@ public class HelloWorld extends Task { | |||
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() { | |||
// initialize Ant | |||
configureProject("build.xml"); | |||
rule.configureProject("build.xml"); | |||
} | |||
@Test | |||
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() { | |||
// execute target 'use.nestedText' and expect a message | |||
// 'attribute-text' in the log | |||
expectLog("use.message", "attribute-text"); | |||
rule.executeTarget("use.message"); | |||
assertEquals(rule.getLog(), "attribute-text"); | |||
} | |||
@Test | |||
public void testFail() { | |||
tried.expect(BuildException.class); | |||
tried.expectMessage("Fail requested."); | |||
// execute target 'use.fail' and expect a BuildException | |||
// with text 'Fail requested.' | |||
expectBuildException("use.fail", "Fail requested."); | |||
rule.executeTarget("use.fail"); | |||
} | |||
@Test | |||
public void testNestedText() { | |||
expectLog("use.nestedText", "nested-text"); | |||
rule.executeTarget("use.nestedText"); | |||
assertEquals("nested-text", rule.getLog()); | |||
} | |||
@Test | |||
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")); | |||
} | |||
} |