GitHub #301: Absolute path for destfile option in Ant tasks
For the Ant tasks coverage and agent the destfile attribute is
now passed as an absolute path also in the default case.
diff --git a/org.jacoco.ant/src/org/jacoco/ant/AbstractCoverageTask.java b/org.jacoco.ant/src/org/jacoco/ant/AbstractCoverageTask.java
index 5c52a54..bd81f1c 100644
--- a/org.jacoco.ant/src/org/jacoco/ant/AbstractCoverageTask.java
+++ b/org.jacoco.ant/src/org/jacoco/ant/AbstractCoverageTask.java
@@ -18,6 +18,7 @@
import org.apache.tools.ant.Task;
import org.jacoco.agent.AgentJar;
import org.jacoco.core.runtime.AgentOptions;
+import org.jacoco.core.runtime.AgentOptions.OutputMode;
/**
* Base class for all coverage tasks that require agent options
@@ -26,6 +27,8 @@
private final AgentOptions agentOptions;
+ private File destfile;
+
private boolean enabled;
/**
@@ -34,6 +37,7 @@
protected AbstractCoverageTask() {
super();
agentOptions = new AgentOptions();
+ destfile = new File(AgentOptions.DEFAULT_DESTFILE);
enabled = true;
}
@@ -55,23 +59,14 @@
}
/**
- * Gets the currently configured agent options for this task
- *
- * @return Configured agent options
- */
- public AgentOptions getAgentOptions() {
- return agentOptions;
- }
-
- /**
- * Sets the location to write coverage execution data. Default is current
- * working directory
+ * Sets the location to write coverage execution data to. Default is
+ * <code>jacoco.exec</code>.
*
* @param file
- * Location to write coverage execution data
+ * Location to write coverage execution data to
*/
public void setDestfile(final File file) {
- agentOptions.setDestfile(file.getAbsolutePath());
+ destfile = file;
}
/**
@@ -211,7 +206,14 @@
* @return JVM Argument to pass to new VM
*/
protected String getLaunchingArgument() {
- return getAgentOptions().getVMArgument(getAgentFile());
+ return prepareAgentOptions().getVMArgument(getAgentFile());
+ }
+
+ private AgentOptions prepareAgentOptions() {
+ if (OutputMode.file.equals(agentOptions.getOutput())) {
+ agentOptions.setDestfile(destfile.getAbsolutePath());
+ }
+ return agentOptions;
}
private File getAgentFile() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/runtime/AgentOptionsTest.java b/org.jacoco.core.test/src/org/jacoco/core/runtime/AgentOptionsTest.java
index 628876f..078d069 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/runtime/AgentOptionsTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/runtime/AgentOptionsTest.java
@@ -37,7 +37,7 @@
@Test
public void testDefaults() {
AgentOptions options = new AgentOptions();
- assertEquals("jacoco.exec", options.getDestfile());
+ assertEquals(AgentOptions.DEFAULT_DESTFILE, options.getDestfile());
assertTrue(options.getAppend());
assertEquals("*", options.getIncludes());
assertEquals("", options.getExcludes());
@@ -47,8 +47,8 @@
assertNull(options.getSessionId());
assertTrue(options.getDumpOnExit());
assertEquals(AgentOptions.OutputMode.file, options.getOutput());
- assertNull(options.getAddress());
- assertEquals(6300, options.getPort());
+ assertEquals(AgentOptions.DEFAULT_ADDRESS, options.getAddress());
+ assertEquals(AgentOptions.DEFAULT_PORT, options.getPort());
assertNull(options.getClassDumpDir());
assertFalse(options.getJmx());
diff --git a/org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java b/org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java
index 3083668..04f91c4 100644
--- a/org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java
+++ b/org.jacoco.core/src/org/jacoco/core/runtime/AgentOptions.java
@@ -39,6 +39,11 @@
public static final String DESTFILE = "destfile";
/**
+ * Default value for the "destfile" agent option.
+ */
+ public static final String DEFAULT_DESTFILE = "jacoco.exec";
+
+ /**
* Specifies whether execution data should be appended to the output file.
* Default is <code>true</code>.
*/
@@ -247,7 +252,7 @@
* @return output file location
*/
public String getDestfile() {
- return getOption(DESTFILE, "jacoco.exec");
+ return getOption(DESTFILE, DEFAULT_DESTFILE);
}
/**
diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html
index 404783e..458f858 100644
--- a/org.jacoco.doc/docroot/doc/changes.html
+++ b/org.jacoco.doc/docroot/doc/changes.html
@@ -28,6 +28,14 @@
(GitHub <a href="https://github.com/jacoco/jacoco/issues/289">#289</a>).</li>
</ul>
+<h3>Fixed Bugs</h3>
+<ul>
+ <li>For the Ant tasks <code>coverage</code> and <code>agent</code> the
+ <code>destfile</code> attribute is now passed as an absolute path also in
+ the default case
+ (GitHub <a href="https://github.com/jacoco/jacoco/issues/301">#301</a>).</li>
+</ul>
+
<h2>Release 0.7.4 (2015/02/26)</h2>
<h3>Fixed Bugs</h3>