Skip to content

Commit ea54810

Browse files
marchofGodin
authored andcommitted
GitHub jacoco#300: Allow standard Maven build with any JDK.
Test cases which require source level > 1.5 get separate source folders. These source folders are only considered if the corresponding "bytecode.version" property is specified for integration tests. The standard JaCoCo build targets Java 1.5 and will not execute any of these tests (regardless of the JDK version used for building).
1 parent ccbf42b commit ea54810

12 files changed

+86
-33
lines changed

Diff for: .appveyor.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ install:
1111

1212
build_script:
1313
# Maven 3.3.9 requires Java >= 7, but generation of Javadocs requires Java <= 6 (https://github.com/jacoco/jacoco/issues/110)
14-
- mvn -V -B -e verify -Pno-java8-validation -Djdk.version=1.6 --toolchains=.travis\appveyor-toolchains.xml
14+
- mvn -V -B -e verify -Djdk.version=1.6 --toolchains=.travis\appveyor-toolchains.xml
1515

1616
artifacts:
1717
- path: jacoco\target\*.zip

Diff for: org.jacoco.core.test/.classpath

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<attribute name="maven.pomderived" value="true"/>
1111
</attributes>
1212
</classpathentry>
13-
<classpathentry excluding="org/jacoco/core/test/validation/java8/*.java" including="**/*.java" kind="src" output="target/classes" path="src">
13+
<classpathentry kind="src" output="target/classes" path="src">
1414
<attributes>
1515
<attribute name="optional" value="true"/>
1616
<attribute name="maven.pomderived" value="true"/>

Diff for: org.jacoco.core.test/pom.xml

+53-10
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,67 @@
4040

4141
<profiles>
4242
<profile>
43-
<id>no-java8-validation</id>
43+
<id>java8-validation</id>
4444
<activation>
45-
<jdk>(,1.8)</jdk>
45+
<property>
46+
<name>bytecode.version</name>
47+
<value>1.8</value>
48+
</property>
4649
</activation>
4750
<build>
4851
<plugins>
4952
<plugin>
50-
<groupId>org.apache.maven.plugins</groupId>
51-
<artifactId>maven-compiler-plugin</artifactId>
52-
<configuration>
53-
<excludes>
54-
<exclude>org/jacoco/core/test/validation/java8/*.java</exclude>
55-
</excludes>
56-
</configuration>
53+
<groupId>org.codehaus.mojo</groupId>
54+
<artifactId>build-helper-maven-plugin</artifactId>
55+
<executions>
56+
<execution>
57+
<id>add-source</id>
58+
<phase>generate-sources</phase>
59+
<goals>
60+
<goal>add-source</goal>
61+
</goals>
62+
<configuration>
63+
<sources>
64+
<source>src-java8</source>
65+
</sources>
66+
</configuration>
67+
</execution>
68+
</executions>
69+
</plugin>
70+
</plugins>
71+
</build>
72+
</profile>
73+
<profile>
74+
<id>java9-validation</id>
75+
<activation>
76+
<property>
77+
<name>bytecode.version</name>
78+
<value>1.9</value>
79+
</property>
80+
</activation>
81+
<build>
82+
<plugins>
83+
<plugin>
84+
<groupId>org.codehaus.mojo</groupId>
85+
<artifactId>build-helper-maven-plugin</artifactId>
86+
<executions>
87+
<execution>
88+
<id>add-source</id>
89+
<phase>generate-sources</phase>
90+
<goals>
91+
<goal>add-source</goal>
92+
</goals>
93+
<configuration>
94+
<sources>
95+
<source>src-java8</source>
96+
</sources>
97+
</configuration>
98+
</execution>
99+
</executions>
57100
</plugin>
58101
</plugins>
59102
</build>
60103
</profile>
61104
</profiles>
62-
105+
63106
</project>

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/java8/InterfaceDefaultMethodsTest.java renamed to org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/InterfaceDefaultMethodsTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
* Marc R. Hoffmann - initial API and implementation
1010
*
1111
*******************************************************************************/
12-
package org.jacoco.core.test.validation.java8;
12+
package org.jacoco.core.test.validation;
1313

1414
import org.jacoco.core.analysis.ICounter;
15-
import org.jacoco.core.test.validation.ValidationTestBase;
15+
import org.jacoco.core.test.validation.targets.InterfaceDefaultMethodsTarget;
1616
import org.junit.Test;
1717

1818
/**
@@ -21,7 +21,7 @@
2121
public class InterfaceDefaultMethodsTest extends ValidationTestBase {
2222

2323
public InterfaceDefaultMethodsTest() {
24-
super(InterfaceDefaultMethodsTarget.class);
24+
super("src-java8", InterfaceDefaultMethodsTarget.class);
2525
}
2626

2727
@Override

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/java8/LambdaExpressionsTest.java renamed to org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaExpressionsTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
* Marc R. Hoffmann - initial API and implementation
1010
*
1111
*******************************************************************************/
12-
package org.jacoco.core.test.validation.java8;
12+
package org.jacoco.core.test.validation;
1313

1414
import org.jacoco.core.analysis.ICounter;
15-
import org.jacoco.core.test.validation.ValidationTestBase;
15+
import org.jacoco.core.test.validation.targets.LambdaExpressionsTarget;
1616
import org.junit.Test;
1717

1818
/**
@@ -21,7 +21,7 @@
2121
public class LambdaExpressionsTest extends ValidationTestBase {
2222

2323
public LambdaExpressionsTest() {
24-
super(LambdaExpressionsTarget.class);
24+
super("src-java8", LambdaExpressionsTarget.class);
2525
}
2626

2727
@Override

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/java8/LambdaInInterfaceTest.java renamed to org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/LambdaInInterfaceTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
* Marc R. Hoffmann - initial API and implementation
1010
*
1111
*******************************************************************************/
12-
package org.jacoco.core.test.validation.java8;
12+
package org.jacoco.core.test.validation;
1313

1414
import org.jacoco.core.analysis.ICounter;
15-
import org.jacoco.core.test.validation.ValidationTestBase;
15+
import org.jacoco.core.test.validation.targets.LambdaInInterfaceTarget;
1616
import org.junit.Test;
1717

1818
/**
@@ -21,7 +21,7 @@
2121
public class LambdaInInterfaceTest extends ValidationTestBase {
2222

2323
public LambdaInInterfaceTest() {
24-
super(LambdaInInterfaceTarget.class);
24+
super("src-java8", LambdaInInterfaceTarget.class);
2525
}
2626

2727
@Override

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/java8/InterfaceDefaultMethodsTarget.java renamed to org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/InterfaceDefaultMethodsTarget.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Marc R. Hoffmann - initial API and implementation
1010
*
1111
*******************************************************************************/
12-
package org.jacoco.core.test.validation.java8;
12+
package org.jacoco.core.test.validation.targets;
1313

1414
import static org.jacoco.core.test.validation.targets.Stubs.i1;
1515

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/java8/LambdaExpressionsTarget.java renamed to org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaExpressionsTarget.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Marc R. Hoffmann - initial API and implementation
1010
*
1111
*******************************************************************************/
12-
package org.jacoco.core.test.validation.java8;
12+
package org.jacoco.core.test.validation.targets;
1313

1414
import static org.jacoco.core.test.validation.targets.Stubs.exec;
1515
import static org.jacoco.core.test.validation.targets.Stubs.noexec;

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/java8/LambdaInInterfaceTarget.java renamed to org.jacoco.core.test/src-java8/org/jacoco/core/test/validation/targets/LambdaInInterfaceTarget.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Marc R. Hoffmann - initial API and implementation
1010
*
1111
*******************************************************************************/
12-
package org.jacoco.core.test.validation.java8;
12+
package org.jacoco.core.test.validation.targets;
1313

1414
import static org.jacoco.core.test.validation.targets.Stubs.nop;
1515

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/Source.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
package org.jacoco.core.test.validation;
1313

1414
import java.io.BufferedReader;
15+
import java.io.File;
1516
import java.io.FileReader;
1617
import java.io.IOException;
1718
import java.io.Reader;
@@ -31,16 +32,18 @@
3132
public class Source {
3233

3334
/**
34-
* Reads the source for the given type from the <code>./src/</code> folder
35-
* relative to the working directory.
35+
* Reads the source for the given type from the given source folder relative
36+
* to the working directory.
3637
*
38+
* @param srcFolder
39+
* source folder
3740
* @param type
3841
* type to load the source file for
39-
* @throws IOException
40-
* @throws
4142
*/
42-
public static Source getSourceFor(final Class<?> type) throws IOException {
43-
String file = "src/" + type.getName().replace('.', '/') + ".java";
43+
public static Source getSourceFor(final String srcFolder,
44+
final Class<?> type) throws IOException {
45+
File folder = new File(srcFolder);
46+
File file = new File(folder, type.getName().replace('.', '/') + ".java");
4447
return new Source(new FileReader(file));
4548
}
4649

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/SourceTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void testDuplicateTag() throws IOException {
7878

7979
@Test
8080
public void testGetSourceFor() throws IOException {
81-
final Source s = Source.getSourceFor(SourceTest.class);
81+
final Source s = Source.getSourceFor("src", SourceTest.class);
8282
// Here we are. $line-testGetSourceFor$
8383
final String l = s.getLine(s.getLineNumber("testGetSourceFor"));
8484
assertTrue(l, l.contains("Here we are."));

Diff for: org.jacoco.core.test/src/org/jacoco/core/test/validation/ValidationTestBase.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public abstract class ValidationTestBase {
4747
STATUS_NAME[ICounter.PARTLY_COVERED] = "PARTLY_COVERED";
4848
}
4949

50+
protected final String srcFolder;
51+
5052
protected final Class<?> target;
5153

5254
protected IClassCoverage classCoverage;
@@ -57,18 +59,23 @@ public abstract class ValidationTestBase {
5759

5860
protected TargetLoader loader;
5961

60-
protected ValidationTestBase(final Class<?> target) {
62+
protected ValidationTestBase(final String srcFolder, final Class<?> target) {
63+
this.srcFolder = srcFolder;
6164
this.target = target;
6265
}
6366

67+
protected ValidationTestBase(final Class<?> target) {
68+
this("src", target);
69+
}
70+
6471
@Before
6572
public void setup() throws Exception {
6673
loader = new TargetLoader();
6774
final ClassReader reader = new ClassReader(
6875
TargetLoader.getClassData(target));
6976
final ExecutionDataStore store = execute(reader);
7077
analyze(reader, store);
71-
source = Source.getSourceFor(target);
78+
source = Source.getSourceFor(srcFolder, target);
7279
}
7380

7481
private ExecutionDataStore execute(final ClassReader reader)

0 commit comments

Comments
 (0)