ProjectTestpublic class ProjectTest extends TestCase Very limited test class for Project. Waiting to be extended. |
Fields Summary |
---|
private Project | p | private String | root | private MockBuildListener | mbl |
Constructors Summary |
---|
public ProjectTest(String name)
super(name);
|
Methods Summary |
---|
private void | assertEqualsIgnoreDriveCase(java.lang.String s1, java.lang.String s2)convenience method
the drive letter is in lower case under cygwin
calling this method allows tests where FileUtils.normalize
is called via resolveFile to pass under cygwin
if ((Os.isFamily("dos") || Os.isFamily("netware"))
&& s1.length() >= 1 && s2.length() >= 1) {
StringBuffer sb1 = new StringBuffer(s1);
StringBuffer sb2 = new StringBuffer(s2);
sb1.setCharAt(0, Character.toUpperCase(s1.charAt(0)));
sb2.setCharAt(0, Character.toUpperCase(s2.charAt(0)));
assertEquals(sb1.toString(), sb2.toString());
} else {
assertEquals(s1, s2);
}
| private void | assertTaskDefFails(java.lang.Class taskClass, java.lang.String message)
final String dummyName = "testTaskDefinitionDummy";
try {
mbl.addBuildEvent(message, Project.MSG_ERR);
p.addTaskDefinition(dummyName, taskClass);
fail("expected BuildException(\""+message+"\", Project.MSG_ERR) when adding task " + taskClass);
}
catch(BuildException e) {
assertEquals(message, e.getMessage());
mbl.assertEmpty();
assertTrue(!p.getTaskDefinitions().containsKey(dummyName));
}
| private java.lang.String | localize(java.lang.String path)adapt file separators to local conventions
path = root + path.substring(1);
return path.replace('\\", File.separatorChar).replace('/", File.separatorChar);
| public void | setUp()
p = new Project();
p.init();
root = new File(File.separator).getAbsolutePath().toUpperCase();
mbl = new MockBuildListener(p);
| public void | testAddTaskDefinition()
p.addBuildListener(mbl);
p.addTaskDefinition("Ok", DummyTaskOk.class);
assertEquals(DummyTaskOk.class, p.getTaskDefinitions().get("Ok"));
p.addTaskDefinition("OkNonTask", DummyTaskOkNonTask.class);
assertEquals(DummyTaskOkNonTask.class, p.getTaskDefinitions().get("OkNonTask"));
mbl.assertEmpty();
assertTaskDefFails(DummyTaskPrivate.class, DummyTaskPrivate.class + " is not public");
assertTaskDefFails(DummyTaskProtected.class,
DummyTaskProtected.class + " is not public");
assertTaskDefFails(DummyTaskPackage.class, DummyTaskPackage.class + " is not public");
assertTaskDefFails(DummyTaskAbstract.class, DummyTaskAbstract.class + " is abstract");
assertTaskDefFails(DummyTaskInterface.class, DummyTaskInterface.class + " is abstract");
assertTaskDefFails(DummyTaskWithoutDefaultConstructor.class, "No public no-arg constructor in " + DummyTaskWithoutDefaultConstructor.class);
assertTaskDefFails(DummyTaskWithoutPublicConstructor.class, "No public no-arg constructor in " + DummyTaskWithoutPublicConstructor.class);
assertTaskDefFails(DummyTaskWithoutExecute.class, "No public execute() in " + DummyTaskWithoutExecute.class);
assertTaskDefFails(DummyTaskWithNonPublicExecute.class, "No public execute() in " + DummyTaskWithNonPublicExecute.class);
mbl.addBuildEvent("return type of execute() should be void but was \"int\" in " + DummyTaskWithNonVoidExecute.class, Project.MSG_WARN);
p.addTaskDefinition("NonVoidExecute", DummyTaskWithNonVoidExecute.class);
mbl.assertEmpty();
assertEquals(DummyTaskWithNonVoidExecute.class, p.getTaskDefinitions().get("NonVoidExecute"));
| public void | testDataTypes()
assertNull("dummy is not a known data type",
p.createDataType("dummy"));
Object o = p.createDataType("fileset");
assertNotNull("fileset is a known type", o);
assertTrue("fileset creates FileSet", o instanceof FileSet);
assertTrue("PatternSet",
p.createDataType("patternset") instanceof PatternSet);
assertTrue("Path", p.createDataType("path") instanceof Path);
| public void | testDuplicateTargets()
// fail, because buildfile contains two targets with the same name
try {
BFT bft = new BFT("", "core/duplicate-target.xml");
} catch (BuildException ex) {
assertEquals("specific message",
"Duplicate target 'twice'",
ex.getMessage());
return;
}
fail("Should throw BuildException about duplicate target");
| public void | testDuplicateTargetsImport()
// overriding target from imported buildfile is allowed
BFT bft = new BFT("", "core/duplicate-target2.xml");
bft.expectLog("once", "once from buildfile");
| public void | testInputHandler()
InputHandler ih = p.getInputHandler();
assertNotNull(ih);
assertTrue(ih instanceof DefaultInputHandler);
InputHandler pfih = new PropertyFileInputHandler();
p.setInputHandler(pfih);
assertSame(pfih, p.getInputHandler());
| public void | testResolveFile()This test has been a starting point for moving the code to FileUtils.
if (Os.isFamily("netware") || Os.isFamily("dos")) {
assertEqualsIgnoreDriveCase(localize(File.separator),
p.resolveFile("/", null).getPath());
assertEqualsIgnoreDriveCase(localize(File.separator),
p.resolveFile("\\", null).getPath());
/*
* throw in drive letters
*/
String driveSpec = "C:";
String driveSpecLower = "c:";
assertEqualsIgnoreDriveCase(driveSpecLower + "\\",
p.resolveFile(driveSpec + "/", null).getPath());
assertEqualsIgnoreDriveCase(driveSpecLower + "\\",
p.resolveFile(driveSpec + "\\", null).getPath());
assertEqualsIgnoreDriveCase(driveSpecLower + "\\",
p.resolveFile(driveSpecLower + "/", null).getPath());
assertEqualsIgnoreDriveCase(driveSpecLower + "\\",
p.resolveFile(driveSpecLower + "\\", null).getPath());
/*
* promised to eliminate consecutive slashes after drive letter.
*/
assertEqualsIgnoreDriveCase(driveSpec + "\\",
p.resolveFile(driveSpec + "/////", null).getPath());
assertEqualsIgnoreDriveCase(driveSpec + "\\",
p.resolveFile(driveSpec + "\\\\\\\\\\\\", null).getPath());
} else {
/*
* Start with simple absolute file names.
*/
assertEquals(File.separator,
p.resolveFile("/", null).getPath());
assertEquals(File.separator,
p.resolveFile("\\", null).getPath());
/*
* drive letters are not used, just to be considered as normal
* part of a name
*/
String driveSpec = "C:";
String udir = System.getProperty("user.dir") + File.separatorChar;
assertEquals(udir + driveSpec,
p.resolveFile(driveSpec + "/", null).getPath());
assertEquals(udir + driveSpec,
p.resolveFile(driveSpec + "\\", null).getPath());
String driveSpecLower = "c:";
assertEquals(udir + driveSpecLower,
p.resolveFile(driveSpecLower + "/", null).getPath());
assertEquals(udir + driveSpecLower,
p.resolveFile(driveSpecLower + "\\", null).getPath());
}
/*
* Now test some relative file name magic.
*/
assertEquals(localize("/1/2/3/4"),
p.resolveFile("4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile("./4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile(".\\4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile("./.\\4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile("../3/4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile("..\\3\\4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile("../../5/.././2/./3/6/../4", new File(localize("/1/2/3"))).getPath());
assertEquals(localize("/1/2/3/4"),
p.resolveFile("..\\../5/..\\./2/./3/6\\../4", new File(localize("/1/2/3"))).getPath());
| public void | testTaskDefinitionContains()
assertTrue(p.getTaskDefinitions().contains(org.apache.tools.ant.taskdefs.Echo.class));
| public void | testTaskDefinitionContainsKey()
assertTrue(p.getTaskDefinitions().containsKey("echo"));
|
|