Browse Source

Add testcase for <ant>'s logfile placement, fix NPE in <ant>.

If <ant> should ignore the dir attribute, we only have to change the
locations of test3.log and test4.log.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272171 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 23 years ago
parent
commit
4488376868
3 changed files with 52 additions and 6 deletions
  1. +16
    -0
      src/etc/testcases/taskdefs/ant.xml
  2. +4
    -3
      src/main/org/apache/tools/ant/taskdefs/Ant.java
  3. +32
    -3
      src/testcases/org/apache/tools/ant/taskdefs/AntTest.java

+ 16
- 0
src/etc/testcases/taskdefs/ant.xml View File

@@ -2,6 +2,13 @@

<project name="ant-test" basedir="." default="test1">

<target name="cleanup">
<delete file="test1.log" />
<delete file="test2.log" />
<delete file="ant/test3.log" />
<delete file="ant/test4.log" />
</target>

<target name="all" depends="test1,test2,test3,test4"/>

<target name="test1">
@@ -67,4 +74,13 @@
</ant>
</target>

<target name="testLogfilePlacement">
<ant antfile="ant.xml" target="dummy" output="test1.log"
inheritall="false" />
<ant antfile="ant.xml" target="dummy" output="test2.log" />
<ant antfile="ant.xml" target="dummy" output="test3.log"
inheritall="false" dir="ant" />
<ant antfile="ant.xml" target="dummy" output="test4.log"
dir="ant" />
</target>
</project>

+ 4
- 3
src/main/org/apache/tools/ant/taskdefs/Ant.java View File

@@ -105,7 +105,6 @@ public class Ant extends Task {
/** the output */
private String output = null;
private String outfile = null;
/** should we inherit properties from the parent ? */
private boolean inheritAll = true;
@@ -175,9 +174,11 @@ public class Ant extends Task {
}

if (output != null) {
File outfile = null;
if (dir != null) {
File file = FileUtils.newFileUtils().resolveFile(dir, output);
outfile = file.getAbsolutePath();
outfile = FileUtils.newFileUtils().resolveFile(dir, output);
} else {
outfile = getProject().resolveFile(output);
}
try {
PrintStream out = new PrintStream(new FileOutputStream(outfile));


+ 32
- 3
src/testcases/org/apache/tools/ant/taskdefs/AntTest.java View File

@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2001 The Apache Software Foundation. All rights
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -78,6 +78,10 @@ public class AntTest extends BuildFileTest {
configureProject("src/etc/testcases/taskdefs/ant.xml");
}
public void tearDown() {
executeTarget("cleanup");
}

public void test1() {
expectBuildException("test1", "recursive call");
}
@@ -213,6 +217,26 @@ public class AntTest extends BuildFileTest {
project.removeBuildListener(rc);
}

public void testLogfilePlacement() {
File[] logFiles = new File[] {
getProject().resolveFile("test1.log"),
getProject().resolveFile("test2.log"),
getProject().resolveFile("ant/test3.log"),
getProject().resolveFile("ant/test3.log")
};
for (int i=0; i<logFiles.length; i++) {
assertTrue(logFiles[i].getName()+" doesn\'t exist",
!logFiles[i].exists());
}
executeTarget("testLogfilePlacement");

for (int i=0; i<logFiles.length; i++) {
assertTrue(logFiles[i].getName()+" exists",
logFiles[i].exists());
}
}

private class BasedirChecker implements BuildListener {
private String[] expectedBasedirs;
private int calls = 0;
@@ -232,8 +256,13 @@ public class AntTest extends BuildFileTest {
public void targetStarted(BuildEvent event) {
if (error == null) {
try {
assertEquals(expectedBasedirs[calls++],
event.getProject().getBaseDir().getAbsolutePath());
if (calls == expectedBasedirs.length) {
assertEquals("cleanup",
event.getTarget().getName());
} else {
assertEquals(expectedBasedirs[calls++],
event.getProject().getBaseDir().getAbsolutePath());
}
} catch (AssertionFailedError e) {
error = e;
}


Loading…
Cancel
Save