aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java16
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java5
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java5
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java6
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java8
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java4
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java4
-rw-r--r--org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java11
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/InstrumentingLoader.java39
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/TargetLoader.java25
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java11
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleTestBase.java66
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java5
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java5
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java5
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java5
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java70
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java6
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java12
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java8
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java27
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java2
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java8
-rw-r--r--org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java17
30 files changed, 128 insertions, 278 deletions
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
index 1b76d98d..59ec6390 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/BadCycleInterfaceTest.java
@@ -18,7 +18,7 @@ import org.junit.Test;
/**
* Test of "bad cycles" with interfaces.
*/
-public class BadCycleInterfaceTest extends BadCycleTestBase {
+public class BadCycleInterfaceTest extends ValidationTestBase {
public BadCycleInterfaceTest() throws Exception {
super("src-java8", BadCycleInterface.class);
@@ -26,18 +26,16 @@ public class BadCycleInterfaceTest extends BadCycleTestBase {
@Test
public void test() throws Exception {
- loader.loadClass(BadCycleInterface.Child.class.getName())
- .getMethod("childStaticMethod").invoke(null);
-
- analyze(BadCycleInterface.Child.class);
-
if (System.getProperty("java.version").startsWith("9-ea")) {
// JDK-9042842
- assertLine("2", ICounter.NOT_COVERED);
+ assertLine("baseclinit", ICounter.EMPTY);
+ assertLine("childdefault", ICounter.NOT_COVERED);
} else {
- assertLine("2", ICounter.FULLY_COVERED);
+ assertLine("baseclinit", ICounter.FULLY_COVERED);
+ assertLine("childdefault", ICounter.FULLY_COVERED);
}
- assertLine("4", ICounter.FULLY_COVERED);
+ assertLine("childclinit", ICounter.FULLY_COVERED);
+ assertLine("childstatic", ICounter.FULLY_COVERED);
}
}
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
index 66c3843d..c93eda8c 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java
@@ -24,11 +24,6 @@ public class InterfaceDefaultMethodsTest extends ValidationTestBase {
super("src-java8", InterfaceDefaultMethodsTarget.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- loader.add(InterfaceDefaultMethodsTarget.Impl.class).newInstance();
- }
-
@Test
public void testCoverageResult() {
assertLine("clinit", ICounter.FULLY_COVERED);
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
index 24553d70..6d1d1ce9 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceOnlyDefaultMethodsTest.java
@@ -24,11 +24,6 @@ public class InterfaceOnlyDefaultMethodsTest extends ValidationTestBase {
super("src-java8", InterfaceOnlyDefaultMethodsTarget.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- loader.add(InterfaceOnlyDefaultMethodsTarget.Impl.class).newInstance();
- }
-
@Test
public void testCoverageResult() {
assertLine("m1", ICounter.FULLY_COVERED);
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java
index 22dce21d..12b4c6ea 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java
@@ -24,12 +24,6 @@ public class LambdaExpressionsTest extends ValidationTestBase {
super("src-java8", LambdaExpressionsTarget.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- final Object instance = targetClass.newInstance();
- ((Runnable) instance).run();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java
index c2b1519f..73ff3349 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/BadCycleInterface.java
@@ -16,7 +16,7 @@ public class BadCycleInterface {
public interface Base {
static final Object BASE_CONST = new Child() {
{
- Stubs.nop("base clinit"); // $line-1$
+ Stubs.nop("base clinit"); // $line-baseclinit$
}
}.childDefaultMethod();
@@ -27,17 +27,17 @@ public class BadCycleInterface {
public interface Child extends Base {
static final Object CHILD_CONST = new Object() {
{
- Stubs.nop("child clinit"); // $line-3$
+ Stubs.nop("child clinit"); // $line-childclinit$
}
};
default Object childDefaultMethod() {
- Stubs.nop("child default method"); // $line-2$
+ Stubs.nop("child default method"); // $line-childdefault$
return null;
}
static void childStaticMethod() {
- Stubs.nop("child static method"); // $line-4$
+ Stubs.nop("child static method"); // $line-childstatic$
}
}
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java
index 4bd91b39..76964ebe 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java
@@ -34,5 +34,9 @@ public interface InterfaceDefaultMethodsTarget {
m1();
}
}
+
+ public static void main(String[] args) {
+ new Impl();
+ }
}
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java
index a27409e9..b2d09f66 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceOnlyDefaultMethodsTarget.java
@@ -33,4 +33,8 @@ public interface InterfaceOnlyDefaultMethodsTarget {
}
}
+ public static void main(String[] args) {
+ new Impl();
+ }
+
}
diff --git a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java
index e5e33c89..e1b9b2dd 100644
--- a/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java
+++ b/org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java
@@ -18,11 +18,10 @@ import static org.jacoco.core.test.validation.targets.Stubs.nop;
/**
* This test target contains different lambda expressions.
*/
-public class LambdaExpressionsTarget implements Runnable {
+public class LambdaExpressionsTarget {
+
+ public static void main(String[] args) {
- @Override
- public void run() {
-
exec(() -> {
nop(); // $line-executedlambdabody$
});
@@ -30,11 +29,7 @@ public class LambdaExpressionsTarget implements Runnable {
noexec(() -> {
nop(); // $line-notexecutedlambdabody$
});
-
- }
- public static void main(String[] args) {
- new LambdaExpressionsTarget().run();
}
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/InstrumentingLoader.java b/org.jacoco.core.test/src/org/jacoco/core/test/InstrumentingLoader.java
index 99bbaedb..c3002177 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/InstrumentingLoader.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/InstrumentingLoader.java
@@ -12,7 +12,6 @@
package org.jacoco.core.test;
import java.io.IOException;
-import java.io.InputStream;
import org.jacoco.core.data.ExecutionDataStore;
import org.jacoco.core.data.SessionInfoStore;
@@ -21,31 +20,47 @@ import org.jacoco.core.runtime.IRuntime;
import org.jacoco.core.runtime.RuntimeData;
import org.jacoco.core.runtime.SystemPropertiesRuntime;
+/**
+ * Class loader which loads classes from another class loader and instruments
+ * them.
+ */
public final class InstrumentingLoader extends ClassLoader {
- private final RuntimeData data;
private final IRuntime runtime;
+ private final String scope;
+ private final ClassLoader delegate;
+
+ private final RuntimeData data;
+ private final Instrumenter instrumenter;
- public InstrumentingLoader() throws Exception {
- data = new RuntimeData();
- runtime = new SystemPropertiesRuntime();
+ public InstrumentingLoader(IRuntime runtime, String scope,
+ ClassLoader delegate) throws Exception {
+ this.runtime = runtime;
+ this.scope = scope;
+ this.delegate = delegate;
+ this.data = new RuntimeData();
runtime.startup(data);
+ this.instrumenter = new Instrumenter(runtime);
+ }
+
+ public InstrumentingLoader(Class<?> target) throws Exception {
+ this(new SystemPropertiesRuntime(), target.getPackage().getName(),
+ target.getClassLoader());
}
@Override
protected synchronized Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {
- if (name.startsWith("org.jacoco.core.test.validation.targets.")) {
+ if (name.startsWith(scope)) {
final byte[] bytes;
try {
- bytes = getClassBytes(name);
+ bytes = TargetLoader.getClassDataAsBytes(delegate, name);
} catch (IOException e) {
throw new ClassNotFoundException("Unable to load", e);
}
final byte[] instrumented;
try {
- instrumented = new Instrumenter(runtime).instrument(bytes,
- name);
+ instrumented = instrumenter.instrument(bytes, name);
} catch (IOException e) {
throw new ClassNotFoundException("Unable to instrument", e);
}
@@ -59,12 +74,6 @@ public final class InstrumentingLoader extends ClassLoader {
return super.loadClass(name, resolve);
}
- public byte[] getClassBytes(String name) throws IOException {
- final String resource = "/" + name.replace('.', '/') + ".class";
- final InputStream in = getClass().getResourceAsStream(resource);
- return TargetLoader.getClassDataAsBytes(in);
- }
-
public ExecutionDataStore collect() {
final ExecutionDataStore store = new ExecutionDataStore();
data.collect(store, new SessionInfoStore(), false);
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/TargetLoader.java b/org.jacoco.core.test/src/org/jacoco/core/test/TargetLoader.java
index de54015f..67ace906 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/TargetLoader.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/TargetLoader.java
@@ -18,7 +18,7 @@ import java.util.HashMap;
import java.util.Map;
/**
- * Loads a single class from a byte array.
+ * Loads given classes from a byte arrays.
*/
public class TargetLoader extends ClassLoader {
@@ -38,10 +38,6 @@ public class TargetLoader extends ClassLoader {
return add(name.getName(), bytes);
}
- public Class<?> add(final Class<?> source) throws IOException {
- return add(source.getName(), getClassDataAsBytes(source));
- }
-
private Class<?> load(final String sourcename) {
try {
return loadClass(sourcename);
@@ -52,17 +48,24 @@ public class TargetLoader extends ClassLoader {
}
public static InputStream getClassData(Class<?> clazz) {
- final String resource = "/" + clazz.getName().replace('.', '/')
- + ".class";
- return clazz.getResourceAsStream(resource);
+ return getClassData(clazz.getClassLoader(), clazz.getName());
+ }
+
+ public static InputStream getClassData(ClassLoader loader, String name) {
+ final String resource = name.replace('.', '/') + ".class";
+ return loader.getResourceAsStream(resource);
+ }
+
+ public static byte[] getClassDataAsBytes(ClassLoader loader, String name)
+ throws IOException {
+ return readBytes(getClassData(loader, name));
}
public static byte[] getClassDataAsBytes(Class<?> clazz) throws IOException {
- return getClassDataAsBytes(getClassData(clazz));
+ return readBytes(getClassData(clazz));
}
- public static byte[] getClassDataAsBytes(InputStream in) throws
- IOException {
+ private static byte[] readBytes(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[0x100];
int len;
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java
index 47820e68..cbf3c35b 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleClassTest.java
@@ -18,7 +18,7 @@ import org.junit.Test;
/**
* Test of "bad cycles" with classes.
*/
-public class BadCycleClassTest extends BadCycleTestBase {
+public class BadCycleClassTest extends ValidationTestBase {
public BadCycleClassTest() throws Exception {
super(BadCycleClass.class);
@@ -26,12 +26,9 @@ public class BadCycleClassTest extends BadCycleTestBase {
@Test
public void test() throws Exception {
- loader.loadClass(BadCycleClass.Child.class.getName()).newInstance();
-
- analyze(BadCycleClass.Child.class);
- assertLine("1", ICounter.FULLY_COVERED);
- assertLine("2", ICounter.FULLY_COVERED);
- assertLine("3", ICounter.FULLY_COVERED);
+ assertLine("childinit", ICounter.FULLY_COVERED);
+ assertLine("childsomeMethod", ICounter.FULLY_COVERED);
+ assertLine("childclinit", ICounter.FULLY_COVERED);
}
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleTestBase.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleTestBase.java
deleted file mode 100644
index dd7b4992..00000000
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BadCycleTestBase.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2016 Mountainminds GmbH & Co. KG and Contributors
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Evgeny Mandrikov - initial API and implementation
- *
- *******************************************************************************/
-package org.jacoco.core.test.validation;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import org.jacoco.core.analysis.Analyzer;
-import org.jacoco.core.analysis.CoverageBuilder;
-import org.jacoco.core.analysis.IClassCoverage;
-import org.jacoco.core.analysis.ISourceFileCoverage;
-import org.jacoco.core.data.ExecutionDataStore;
-import org.jacoco.core.test.InstrumentingLoader;
-
-class BadCycleTestBase extends ValidationTestBase {
-
- protected final InstrumentingLoader loader = new InstrumentingLoader();
-
- BadCycleTestBase(final Class<?> target) throws Exception {
- super(target);
- }
-
- BadCycleTestBase(final String srcFolder, final Class<?> target)
- throws Exception {
- super(srcFolder, target);
- }
-
- @Override
- public final void setup() throws Exception {
- // nop
- }
-
- @Override
- protected final void run(Class<?> targetClass) throws Exception {
- // nop
- }
-
- final void analyze(Class<?> cls) throws IOException {
- final byte[] bytes = loader.getClassBytes(cls.getName());
- final ExecutionDataStore store = loader.collect();
-
- final CoverageBuilder builder = new CoverageBuilder();
- final Analyzer analyzer = new Analyzer(store, builder);
- analyzer.analyzeClass(bytes, "TestTarget");
- final Collection<IClassCoverage> classes = builder.getClasses();
- assertEquals(1, classes.size(), 0.0);
- classCoverage = classes.iterator().next();
- final Collection<ISourceFileCoverage> files = builder.getSourceFiles();
- assertEquals(1, files.size(), 0.0);
- sourceCoverage = files.iterator().next();
-
- source = Source.getSourceFor(srcFolder, target);
- }
-
-}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java
index cb193ec3..fa21da85 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/BooleanExpressionsTest.java
@@ -24,12 +24,6 @@ public class BooleanExpressionsTest extends ValidationTestBase {
super(Target02.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- final Object instance = targetClass.newInstance();
- ((Runnable) instance).run();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java
index ba9a7ef4..cdbe4e07 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassInitializerTest.java
@@ -24,12 +24,6 @@ public class ClassInitializerTest extends ValidationTestBase {
super(Target05.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- // Force class initialization
- targetClass.getField("CONST1").get(null);
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java
index cc5e9dd7..284ed9dd 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ControlStructuresTest.java
@@ -24,12 +24,6 @@ public class ControlStructuresTest extends ValidationTestBase {
super(Target01.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- final Object instance = targetClass.newInstance();
- ((Runnable) instance).run();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java
index 17c74cab..596ba56e 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExceptionsTest.java
@@ -24,12 +24,6 @@ public class ExceptionsTest extends ValidationTestBase {
super(Target03.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- final Object instance = targetClass.newInstance();
- ((Runnable) instance).run();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java
index bb7b43ad..2da79536 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java
@@ -24,12 +24,6 @@ public class ExplicitInitialFrameTest extends ValidationTestBase {
super(Target11.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- final Object instance = targetClass.newInstance();
- ((Runnable) instance).run();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java
index d9c2333c..afd0440f 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/FieldInitializationInTwoConstructorsTest.java
@@ -25,11 +25,6 @@ public class FieldInitializationInTwoConstructorsTest extends
super(Target09.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- targetClass.newInstance();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java
index 4b04db1f..8f80a947 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitDefaultConstructorTest.java
@@ -24,11 +24,6 @@ public class ImplicitDefaultConstructorTest extends ValidationTestBase {
super(Target06.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- targetClass.newInstance();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java
index d8a2188f..922266bd 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ImplicitFieldInitializationTest.java
@@ -24,11 +24,6 @@ public class ImplicitFieldInitializationTest extends ValidationTestBase {
super(Target08.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- targetClass.newInstance();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java
index fe9a6c7e..e38bc32a 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/PrivateEmptyDefaultConstructorTest.java
@@ -24,12 +24,6 @@ public class PrivateEmptyDefaultConstructorTest extends ValidationTestBase {
super(Target07.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- // Force class initialization
- targetClass.getField("CONST").get(null);
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java
index 4714b6b8..c99a99b3 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ProbesBeforeSuperConstructorTest.java
@@ -24,11 +24,6 @@ public class ProbesBeforeSuperConstructorTest extends ValidationTestBase {
super(Target10.class);
}
- @Override
- protected void run(final Class<?> targetClass) throws Exception {
- targetClass.newInstance();
- }
-
@Test
public void testCoverageResult() {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java
index 5216a057..67c4634d 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java
@@ -12,23 +12,19 @@
package org.jacoco.core.test.validation;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
import java.io.IOException;
-import java.util.Collection;
import org.jacoco.core.analysis.Analyzer;
import org.jacoco.core.analysis.CoverageBuilder;
-import org.jacoco.core.analysis.IClassCoverage;
import org.jacoco.core.analysis.ICounter;
import org.jacoco.core.analysis.ILine;
import org.jacoco.core.analysis.ISourceFileCoverage;
+import org.jacoco.core.data.ExecutionData;
import org.jacoco.core.data.ExecutionDataStore;
-import org.jacoco.core.data.SessionInfoStore;
-import org.jacoco.core.instr.Instrumenter;
import org.jacoco.core.internal.analysis.CounterImpl;
-import org.jacoco.core.runtime.IRuntime;
-import org.jacoco.core.runtime.RuntimeData;
-import org.jacoco.core.runtime.SystemPropertiesRuntime;
+import org.jacoco.core.test.InstrumentingLoader;
import org.jacoco.core.test.TargetLoader;
import org.junit.Before;
@@ -51,14 +47,10 @@ public abstract class ValidationTestBase {
protected final Class<?> target;
- protected IClassCoverage classCoverage;
-
protected ISourceFileCoverage sourceCoverage;
protected Source source;
- protected TargetLoader loader;
-
protected ValidationTestBase(final String srcFolder, final Class<?> target) {
this.srcFolder = srcFolder;
this.target = target;
@@ -70,40 +62,44 @@ public abstract class ValidationTestBase {
@Before
public void setup() throws Exception {
- loader = new TargetLoader();
- final byte[] bytes = TargetLoader.getClassDataAsBytes(target);
- final ExecutionDataStore store = execute(bytes);
- analyze(bytes, store);
+ final ExecutionDataStore store = execute();
+ analyze(store);
source = Source.getSourceFor(srcFolder, target);
}
- private ExecutionDataStore execute(final byte[] bytes) throws Exception {
- RuntimeData data = new RuntimeData();
- IRuntime runtime = new SystemPropertiesRuntime();
- runtime.startup(data);
-
- final byte[] instrumented = new Instrumenter(runtime).instrument(bytes,
- "TestTarget");
- run(loader.add(target, instrumented));
- final ExecutionDataStore store = new ExecutionDataStore();
- data.collect(store, new SessionInfoStore(), false);
- runtime.shutdown();
- return store;
+ private ExecutionDataStore execute() throws Exception {
+ InstrumentingLoader loader = new InstrumentingLoader(target);
+ run(loader.loadClass(target.getName()));
+ return loader.collect();
}
- protected abstract void run(final Class<?> targetClass) throws Exception;
+ protected void run(final Class<?> targetClass) throws Exception {
+ targetClass.getMethod("main", String[].class).invoke(null,
+ (Object) new String[0]);
+ }
- private void analyze(final byte[] bytes, final ExecutionDataStore store)
- throws IOException {
+ private void analyze(final ExecutionDataStore store) throws IOException {
final CoverageBuilder builder = new CoverageBuilder();
final Analyzer analyzer = new Analyzer(store, builder);
- analyzer.analyzeClass(bytes, "TestTarget");
- final Collection<IClassCoverage> classes = builder.getClasses();
- assertEquals(1, classes.size(), 0.0);
- classCoverage = classes.iterator().next();
- final Collection<ISourceFileCoverage> files = builder.getSourceFiles();
- assertEquals(1, files.size(), 0.0);
- sourceCoverage = files.iterator().next();
+ for (ExecutionData data : store.getContents()) {
+ analyze(analyzer, data);
+ }
+
+ String srcName = target.getName().replace('.', '/') + ".java";
+ for (ISourceFileCoverage file : builder.getSourceFiles()) {
+ if (srcName.equals(file.getPackageName() + "/" + file.getName())) {
+ sourceCoverage = file;
+ return;
+ }
+ }
+ fail("No source node found for " + srcName);
+ }
+
+ private void analyze(final Analyzer analyzer, final ExecutionData data)
+ throws IOException {
+ final byte[] bytes = TargetLoader.getClassDataAsBytes(
+ target.getClassLoader(), data.getName());
+ analyzer.analyzeClass(bytes, data.getName());
}
protected void assertLine(final String tag, final int status) {
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java
index 44e40cd1..c524a211 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/BadCycleClass.java
@@ -24,15 +24,15 @@ public class BadCycleClass {
public static class Child extends Base {
static {
- Stubs.nop("child clinit"); // $line-3$
+ Stubs.nop("child clinit"); // $line-childclinit$
}
public Child() {
- Stubs.nop("child init"); // $line-1$
+ Stubs.nop("child init"); // $line-childinit$
}
void someMethod() {
- Stubs.nop("child someMethod"); // $line-2$
+ Stubs.nop("child someMethod"); // $line-childsomeMethod$
}
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java
index ca5cd3b2..d5723ce3 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target01.java
@@ -21,9 +21,9 @@ import java.util.Collections;
/**
* This target exercises a set of common Java control structures.
*/
-public class Target01 implements Runnable {
+public class Target01 {
- public void run() {
+ public static void main(String[] args) {
// 1. Unconditional execution
nop(); // $line-unconditional$
@@ -194,7 +194,7 @@ public class Target01 implements Runnable {
}
- private void runReturn() {
+ private static void runReturn() {
// 20. Return statement
if (t()) {
@@ -204,13 +204,9 @@ public class Target01 implements Runnable {
}
- private void runImplicitReturn() {
+ private static void runImplicitReturn() {
// 21. Implicit return
} // $line-implicitreturn$
- public static void main(String[] args) {
- new Target01().run();
- }
-
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java
index ef012ff6..08f0ba0b 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target02.java
@@ -20,9 +20,9 @@ import static org.jacoco.core.test.validation.targets.Stubs.t;
/**
* This target exercises boolean expressions.
*/
-public class Target02 implements Runnable {
+public class Target02 {
- public void run() {
+ public static void main(String[] args) {
// 1. Boolean comparison result (one case)
nop(i2() > 3); // $line-booleancmp1$
@@ -117,8 +117,4 @@ public class Target02 implements Runnable {
}
- public static void main(String[] args) {
- new Target02().run();
- }
-
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java
index 26b3b13b..efa1354c 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target03.java
@@ -20,9 +20,10 @@ import org.jacoco.core.test.validation.targets.Stubs.StubException;
/**
* This target produces exception based control flow examples.
*/
-public class Target03 implements Runnable {
+public class Target03 {
+
+ public static void main(String[] args) {
- public void run() {
try {
implicitException();
} catch (StubException e) {
@@ -46,18 +47,18 @@ public class Target03 implements Runnable {
}
}
- private void implicitException() {
+ private static void implicitException() {
nop(); // $line-implicitException.before$
ex(); // $line-implicitException.exception$
nop(); // $line-implicitException.after$
}
- private void explicitException() {
+ private static void explicitException() {
nop(); // $line-explicitException.before$
throw new StubException(); // $line-explicitException.throw$
}
- private void noExceptionTryCatch() {
+ private static void noExceptionTryCatch() {
nop(); // $line-noExceptionTryCatch.beforeBlock$
try {
nop(); // $line-noExceptionTryCatch.tryBlock$
@@ -66,7 +67,7 @@ public class Target03 implements Runnable {
}
}
- private void implicitExceptionTryCatch() {
+ private static void implicitExceptionTryCatch() {
nop(); // $line-implicitExceptionTryCatch.beforeBlock$
try {
nop(); // $line-implicitExceptionTryCatch.before$
@@ -77,7 +78,7 @@ public class Target03 implements Runnable {
}
}
- private void implicitExceptionTryCatchAfterCondition() {
+ private static void implicitExceptionTryCatchAfterCondition() {
if (f()) { // $line-implicitExceptionTryCatchAfterCondition.condition$
return;
}
@@ -88,7 +89,7 @@ public class Target03 implements Runnable {
}
}
- private void explicitExceptionTryCatch() {
+ private static void explicitExceptionTryCatch() {
nop(); // $line-explicitExceptionTryCatch.beforeBlock$
try {
nop(); // $line-explicitExceptionTryCatch.before$
@@ -98,7 +99,7 @@ public class Target03 implements Runnable {
}
}
- private void noExceptionFinally() {
+ private static void noExceptionFinally() {
nop(); // $line-noExceptionFinally.beforeBlock$
try {
nop(); // $line-noExceptionFinally.tryBlock$
@@ -107,7 +108,7 @@ public class Target03 implements Runnable {
}
}
- private void implicitExceptionFinally() {
+ private static void implicitExceptionFinally() {
nop(); // $line-implicitExceptionFinally.beforeBlock$
try {
nop(); // $line-implicitExceptionFinally.before$
@@ -118,7 +119,7 @@ public class Target03 implements Runnable {
}
}
- private void explicitExceptionFinally() {
+ private static void explicitExceptionFinally() {
nop(); // $line-explicitExceptionFinally.beforeBlock$
try {
nop(); // $line-explicitExceptionFinally.before$
@@ -128,8 +129,4 @@ public class Target03 implements Runnable {
}
}
- public static void main(String[] args) {
- new Target03().run();
- }
-
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java
index 15afb506..93dcaa3e 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target07.java
@@ -19,8 +19,6 @@ public class Target07 { // $line-classdef$
private Target07() {
} // $line-constructor$
- public static final int CONST = 42;
-
public static void main(String[] args) {
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java
index a6a59c42..5f597cb0 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java
@@ -18,16 +18,14 @@ import static org.jacoco.core.test.validation.targets.Stubs.nop;
* This test target needs an explicit initial frame as the first instruction
* already is a jump target.
*/
-public class Target11 implements Runnable {
+public class Target11 {
+
+ public static void main(String[] args) {
- public void run() {
do {
nop(); // $line-dowhilebody$
} while (f());
- }
- public static void main(String[] args) {
- new Target11().run();
}
}
diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java
index f5ea03e0..0c445cd6 100644
--- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java
+++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target12.java
@@ -16,20 +16,16 @@ import static org.jacoco.core.test.validation.targets.Stubs.nop;
/**
* This target uses synchronized blocks which compile to try/catch statements.
*/
-public class Target12 implements Runnable {
+public class Target12 {
- public void run() {
- simple();
- nested();
- }
-
- void simple() {
- synchronized (this) {
+ static void simple() {
+ Object lock1 = new Object();
+ synchronized (lock1) {
nop();
}
}
- void nested() {
+ static void nested() {
Object lock1 = new Object();
synchronized (lock1) {
nop();
@@ -43,7 +39,8 @@ public class Target12 implements Runnable {
}
public static void main(String[] args) {
- new Target12().run();
+ simple();
+ nested();
}
}