diff --git a/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/AgentTest.java b/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/AgentTest.java
index 8cc19a754d..d02b1e537d 100644
--- a/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/AgentTest.java
+++ b/org.jacoco.agent.rt.test/src/org/jacoco/agent/rt/internal/AgentTest.java
@@ -19,8 +19,8 @@
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
-import java.io.IOException;
import java.lang.management.ManagementFactory;
+import java.util.NoSuchElementException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanServer;
@@ -105,16 +105,15 @@ public void startup_should_create_random_session_id_when_undefined()
assertNull(loggedException);
}
- @Test
- public void startup_should_log_exception() throws Exception {
- final Exception expected = new Exception();
+ @Test(expected = NoSuchElementException.class)
+ public void startup_should_rethrow_exception() throws Exception {
Agent agent = new Agent(options, this) {
@Override
IAgentOutput createAgentOutput() {
return new IAgentOutput() {
public void startup(AgentOptions options, RuntimeData data)
throws Exception {
- throw expected;
+ throw new NoSuchElementException();
}
public void shutdown() {
@@ -127,8 +126,6 @@ public void writeExecutionData(boolean reset) {
};
agent.startup();
-
- assertSame(expected, loggedException);
}
@Test
@@ -240,7 +237,7 @@ public void getVersion_should_return_current_version() {
}
@Test
- public void getSessionId_should_return_session_id() throws IOException {
+ public void getSessionId_should_return_session_id() throws Exception {
Agent agent = createAgent();
agent.startup();
@@ -249,7 +246,7 @@ public void getSessionId_should_return_session_id() throws IOException {
}
@Test
- public void setSessionId_should_modify_session_id() throws IOException {
+ public void setSessionId_should_modify_session_id() throws Exception {
Agent agent = createAgent();
agent.startup();
@@ -273,7 +270,7 @@ public void reset_should_reset_probes() {
@Test
public void getExecutionData_should_return_probes_and_session_id()
- throws IOException {
+ throws Exception {
Agent agent = createAgent();
agent.startup();
agent.getData().getExecutionData(Long.valueOf(0x12345678), "Foo", 1)
@@ -291,7 +288,7 @@ public void getExecutionData_should_return_probes_and_session_id()
@Test
public void getExecutionData_should_reset_probes_when_enabled()
- throws IOException {
+ throws Exception {
Agent agent = createAgent();
agent.startup();
final boolean[] probes = agent.getData()
@@ -306,7 +303,7 @@ public void getExecutionData_should_reset_probes_when_enabled()
@Test
public void getExecutionData_should_not_reset_probes_when_disabled()
- throws IOException {
+ throws Exception {
Agent agent = createAgent();
agent.startup();
final boolean[] probes = agent.getData()
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
index fb5cf5fbe7..5fe0fac238 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java
@@ -43,8 +43,11 @@ public class Agent implements IAgent {
* @param options
* options to configure the instance
* @return global instance
+ * @throws Exception
+ * in case something cannot be initialized
*/
- public static synchronized Agent getInstance(final AgentOptions options) {
+ public static synchronized Agent getInstance(final AgentOptions options)
+ throws Exception {
if (singleton == null) {
final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR);
agent.startup();
@@ -67,7 +70,8 @@ public void run() {
* @throws IllegalStateException
* if no Agent has been started yet
*/
- public static synchronized Agent getInstance() throws IllegalStateException {
+ public static synchronized Agent getInstance()
+ throws IllegalStateException {
if (singleton == null) {
throw new IllegalStateException("JaCoCo agent not started.");
}
@@ -110,21 +114,19 @@ public RuntimeData getData() {
/**
* Initializes this agent.
*
+ * @throws Exception
+ * in case something cannot be initialized
*/
- public void startup() {
- try {
- String sessionId = options.getSessionId();
- if (sessionId == null) {
- sessionId = createSessionId();
- }
- data.setSessionId(sessionId);
- output = createAgentOutput();
- output.startup(options, data);
- if (options.getJmx()) {
- jmxRegistration = new JmxRegistration(this);
- }
- } catch (final Exception e) {
- logger.logExeption(e);
+ public void startup() throws Exception {
+ String sessionId = options.getSessionId();
+ if (sessionId == null) {
+ sessionId = createSessionId();
+ }
+ data.setSessionId(sessionId);
+ output = createAgentOutput();
+ output.startup(options, data);
+ if (options.getJmx()) {
+ jmxRegistration = new JmxRegistration(this);
}
}
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java
index cadf606c11..9d582df64e 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java
@@ -28,7 +28,11 @@ public final class Offline {
static {
final Properties config = ConfigLoader.load(CONFIG_RESOURCE,
System.getProperties());
- DATA = Agent.getInstance(new AgentOptions(config)).getData();
+ try {
+ DATA = Agent.getInstance(new AgentOptions(config)).getData();
+ } catch (final Exception e) {
+ throw new RuntimeException("Failed to initialize JaCoCo.", e);
+ }
}
private Offline() {
@@ -48,8 +52,9 @@ private Offline() {
*/
public static boolean[] getProbes(final long classid,
final String classname, final int probecount) {
- return DATA.getExecutionData(Long.valueOf(classid), classname,
- probecount).getProbes();
+ return DATA
+ .getExecutionData(Long.valueOf(classid), classname, probecount)
+ .getProbes();
}
}
diff --git a/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml b/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml
index dbe2306c9e..65625c8471 100644
--- a/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml
+++ b/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml
@@ -123,5 +123,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+