Ticket #16567: 16567.4.patch

File 16567.4.patch, 10.6 KB (added by taylor.smock, 6 months ago)

Output jacoco.exec files (if:set needed to be fixed). jacoco.exec files appear to have information (secondary testing would be nice, since my version of eclipse is refusing to load them). The reports appear to work properly, but the jacoco.exec file is not loading in Eclipse (this hasn't changed from the previous version, AFAICT). Since the jacoco.exec files are used in report generation, the data is there.

  • .classpath

     
    3232                        <attribute name="test" value="true"/>
    3333                </attributes>
    3434        </classpathentry>
     35        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
     36                <attributes>
     37                        <attribute name="test" value="true"/>
     38                </attributes>
     39        </classpathentry>
    3540        <classpathentry kind="lib" path="test/lib/jfcunit.jar">
    3641                <attributes>
    3742                        <attribute name="test" value="true"/>
  • build.xml

     
    503503        <attribute name="excludes" default="${default-junit@{testITsuffix}-excludes}"/>
    504504        <sequential>
    505505            <echo message="Running @{testfamily}@{testITsuffix} tests with JUnit"/>
    506             <jacoco:coverage destfile="${test.dir}/jacoco@{testITsuffix}.exec" enabled="@{coverage}" includes="${jacoco.includes}"
    507                 inclbootstrapclasses="${jacoco.inclbootstrapclasses}" inclnolocationclasses="${jacoco.inclnolocationclasses}">
    508                 <junit printsummary="${junit.printsummary}" fork="true" forkmode="once" failureproperty="test.@{testfamily}@{testITsuffix}.failed">
    509                     <jvmarg value="-Dfile.encoding=UTF-8"/>
    510                     <jvmarg value="-javaagent:${test.dir}/lib/jmockit.jar"/>
    511                     <jvmarg value="--add-modules" if:set="isJava9" unless:set="isJava11" />
    512                     <jvmarg value="java.activation,java.se.ee" if:set="isJava9" unless:set="isJava11" />
    513                     <jvmarg value="--add-exports" if:set="isJava9" unless:set="noJavaFX" />
    514                     <jvmarg value="javafx.graphics/com.sun.javafx.application=ALL-UNNAMED" if:set="isJava9" unless:set="noJavaFX" />
    515                     <jvmarg value="--add-exports" if:set="isJava9" unless:set="isJava11" />
    516                     <jvmarg value="jdk.deploy/com.sun.deploy.config=ALL-UNNAMED" if:set="isJava9" unless:set="isJava11" />
    517                     <jvmarg value="--add-opens" if:set="isJava9" />
    518                     <jvmarg value="java.base/java.io=ALL-UNNAMED" if:set="isJava9" />
    519                     <jvmarg value="--add-opens" if:set="isJava9" />
    520                     <jvmarg value="java.base/java.lang=ALL-UNNAMED" if:set="isJava9" />
    521                     <jvmarg value="--add-opens" if:set="isJava9" />
    522                     <jvmarg value="java.base/java.nio=ALL-UNNAMED" if:set="isJava9" />
    523                     <jvmarg value="--add-opens" if:set="isJava9" />
    524                     <jvmarg value="java.base/java.text=ALL-UNNAMED" if:set="isJava9" />
    525                     <jvmarg value="--add-opens" if:set="isJava9" />
    526                     <jvmarg value="java.base/java.util=ALL-UNNAMED" if:set="isJava9" />
    527                     <jvmarg value="--add-opens" if:set="isJava9" />
    528                     <jvmarg value="java.base/jdk.internal.loader=ALL-UNNAMED" if:set="isJava9" />
    529                     <jvmarg value="--add-opens" if:set="isJava9" />
    530                     <jvmarg value="java.desktop/java.awt=ALL-UNNAMED" if:set="isJava9" />
    531                     <sysproperty key="josm.home" value="${test.dir}/config/@{testfamily}-josm.home"/>
    532                     <sysproperty key="josm.test.data" value="${test.dir}/data"/>
    533                     <sysproperty key="java.awt.headless" value="${test.headless}"/>
    534                     <sysproperty key="glass.platform" value="Monocle"/>
    535                     <sysproperty key="monocle.platform" value="Headless"/>
    536                     <sysproperty key="prism.order" value="sw"/>
    537                     <sysproperty key="suppressPermanentFailure" value="${suppressPermanentFailure}"/>
    538                     <classpath>
    539                         <path refid="test.classpath"/>
    540                         <pathelement path="${test.dir}/build/unit"/>
    541                         <pathelement path="${test.dir}/build/@{testfamily}"/>
    542                         <pathelement path="${test.dir}/config"/>
    543                     </classpath>
    544                     <formatter type="plain"/>
    545                     <formatter type="xml"/>
    546                     <batchtest fork="yes" todir="${test.dir}/report">
    547                         <fileset dir="${test.dir}/build/@{testfamily}" includes="@{includes}" excludes="@{excludes}"/>
    548                     </batchtest>
    549                 </junit>
    550             </jacoco:coverage>
     506            <jacoco:agent destfile="${test.dir}/jacoco@{testITsuffix}.exec" enabled="@{coverage}" includes="${jacoco.includes}" dumponexit="true" classdumpdir="build/testedClasses"
     507                    inclbootstrapclasses="${jacoco.inclbootstrapclasses}" inclnolocationclasses="${jacoco.inclnolocationclasses}" property="jacocoagent@{testfamily}@{testITsuffix}" />
     508            <junitlauncher printsummary="${junit.printsummary}" failureproperty="test.@{testfamily}@{testITsuffix}.failed">
     509                <classpath>
     510                    <path refid="test.classpath"/>
     511                    <pathelement path="${test.dir}/build/@{testfamily}"/>
     512                </classpath>
     513                <testclasses outputDir="${test.dir}/report">
     514                    <fileset dir="${test.dir}/build/@{testfamily}" includes="@{includes}" excludes="@{excludes}"/>
     515                        <fork>
     516                            <jvmarg value="${jacocoagent@{testfamily}@{testITsuffix}}" if:set="jacocoagent@{testfamily}@{testITsuffix}" />
     517                            <jvmarg value="-Dfile.encoding=UTF-8"/>
     518                            <jvmarg value="-javaagent:${test.dir}/lib/jmockit.jar"/>
     519                            <jvmarg value="--add-modules" if:set="isJava9" unless:set="isJava11" />
     520                            <jvmarg value="java.activation,java.se.ee" if:set="isJava9" unless:set="isJava11" />
     521                            <jvmarg value="--add-exports" if:set="isJava9" unless:set="noJavaFX" />
     522                            <jvmarg value="javafx.graphics/com.sun.javafx.application=ALL-UNNAMED" if:set="isJava9" unless:set="noJavaFX" />
     523                            <jvmarg value="--add-exports" if:set="isJava9" unless:set="isJava11" />
     524                            <jvmarg value="jdk.deploy/com.sun.deploy.config=ALL-UNNAMED" if:set="isJava9" unless:set="isJava11" />
     525                            <jvmarg value="--add-opens" if:set="isJava9" />
     526                            <jvmarg value="java.base/java.io=ALL-UNNAMED" if:set="isJava9" />
     527                            <jvmarg value="--add-opens" if:set="isJava9" />
     528                            <jvmarg value="java.base/java.lang=ALL-UNNAMED" if:set="isJava9" />
     529                            <jvmarg value="--add-opens" if:set="isJava9" />
     530                            <jvmarg value="java.base/java.nio=ALL-UNNAMED" if:set="isJava9" />
     531                            <jvmarg value="--add-opens" if:set="isJava9" />
     532                            <jvmarg value="java.base/java.text=ALL-UNNAMED" if:set="isJava9" />
     533                            <jvmarg value="--add-opens" if:set="isJava9" />
     534                            <jvmarg value="java.base/java.util=ALL-UNNAMED" if:set="isJava9" />
     535                            <jvmarg value="--add-opens" if:set="isJava9" />
     536                            <jvmarg value="java.base/jdk.internal.loader=ALL-UNNAMED" if:set="isJava9" />
     537                            <jvmarg value="--add-opens" if:set="isJava9" />
     538                            <jvmarg value="java.desktop/java.awt=ALL-UNNAMED" if:set="isJava9" />
     539                            <sysproperty key="josm.home" value="${test.dir}/config/@{testfamily}-josm.home"/>
     540                            <sysproperty key="josm.test.data" value="${test.dir}/data"/>
     541                            <sysproperty key="java.awt.headless" value="${test.headless}"/>
     542                            <sysproperty key="glass.platform" value="Monocle"/>
     543                            <sysproperty key="monocle.platform" value="Headless"/>
     544                            <sysproperty key="prism.order" value="sw"/>
     545                            <sysproperty key="suppressPermanentFailure" value="${suppressPermanentFailure}"/>
     546                        </fork>
     547                    <listener type="legacy-plain" />
     548                    <listener type="legacy-xml" />
     549                </testclasses>
     550            </junitlauncher>
    551551        </sequential>
    552552    </macrodef>
    553553    <target name="test" depends="test-compile" unless="test.notRequired"
     
    656656
    657657        # Keep serialization code
    658658        -keepclassmembers class * implements java.io.Serializable {
    659             static final long serialVersionUID; 
     659            static final long serialVersionUID;
    660660            private static final java.io.ObjectStreamField[] serialPersistentFields;
    661661            private void writeObject(java.io.ObjectOutputStream);
    662662            private void readObject(java.io.ObjectInputStream);
    663             java.lang.Object writeReplace(); 
     663            java.lang.Object writeReplace();
    664664            java.lang.Object readResolve();
    665665        }
    666666
  • test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java

     
    2323import java.util.logging.Handler;
    2424
    2525import org.awaitility.Awaitility;
     26import org.junit.jupiter.api.extension.AfterEachCallback;
     27import org.junit.jupiter.api.extension.BeforeEachCallback;
     28import org.junit.jupiter.api.extension.ExtensionContext;
    2629import org.junit.rules.TemporaryFolder;
    2730import org.junit.rules.TestRule;
    2831import org.junit.runner.Description;
     
    7982 *
    8083 * @author Michael Zangl
    8184 */
    82 public class JOSMTestRules implements TestRule {
     85public class JOSMTestRules implements TestRule, AfterEachCallback, BeforeEachCallback {
    8386    private int timeout = isDebugMode() ? -1 : 10 * 1000;
    8487    private TemporaryFolder josmHome;
    8588    private boolean usePreferences = false;
     
    433436        return statement;
    434437    }
    435438
     439    @Override
     440    public void beforeEach(ExtensionContext context) throws Exception {
     441        Statement temporaryStatement = new Statement() {
     442            @Override
     443            public void evaluate() throws Throwable {
     444                // do nothing
     445            }
     446        };
     447        try {
     448            this.apply(temporaryStatement,
     449                    Description.createTestDescription(this.getClass(), "JOSMTestRules JUnit5 Compatibility"))
     450                    .evaluate();
     451        } catch (Throwable e) {
     452            throw new Exception(e);
     453        }
     454    }
     455
     456    @Override
     457    public void afterEach(ExtensionContext context) throws Exception {
     458        // do nothing for now
     459    }
     460
    436461    /**
    437462     * Set up before running a test
    438463     * @throws InitializationError If an error occurred while creating the required environment.