From f5a1d40c2d13d2b3f4529adc6ce6dd079a3f427e Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Thu, 2 May 2024 08:27:32 +0200 Subject: [PATCH] Add regression test for linked .classpath and test source folder When using linked resources for a project's .classpath file defining a JUnit classpath container or test source folders, they are not detected by Tycho, such that the JUnit classpath container and the test source folder are not considered during the build. This adds a test case demonstrating the integration of the .classpath file and a test source folder via linked resources. --- .../.settings/org.eclipse.jdt.core.prefs | 8 +++ .../junit5-with-linked-resources/.project | 54 +++++++++++++++++++ .../META-INF/MANIFEST.MF | 7 +++ .../build.properties | 4 ++ .../linkedresources/.classpath | 17 ++++++ .../src_test/bundle/test/AdderTest.java | 37 +++++++++++++ .../src_test/bundle/test/SubtractorTest.java | 45 ++++++++++++++++ .../junit5-with-linked-resources/pom.xml | 39 ++++++++++++++ .../src/bundle/test/CountDown.java | 38 +++++++++++++ .../src/bundle/test/Counter.java | 29 ++++++++++ .../src/bundle/test/RefMe.java | 18 +++++++ .../compiler/CompilerClasspathEntryTest.java | 10 ++++ tycho-p2/.settings/org.eclipse.jdt.core.prefs | 8 +++ .../.settings/org.eclipse.jdt.core.prefs | 8 +++ 14 files changed, 322 insertions(+) create mode 100644 tycho-baseline-plugin/.settings/org.eclipse.jdt.core.prefs create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/.project create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/META-INF/MANIFEST.MF create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/build.properties create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/.classpath create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/AdderTest.java create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/SubtractorTest.java create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/pom.xml create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/CountDown.java create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/Counter.java create mode 100644 tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/RefMe.java create mode 100644 tycho-p2/.settings/org.eclipse.jdt.core.prefs create mode 100644 tycho-surefire/org.eclipse.tycho.bnd.executionlistener/.settings/org.eclipse.jdt.core.prefs diff --git a/tycho-baseline-plugin/.settings/org.eclipse.jdt.core.prefs b/tycho-baseline-plugin/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..cf2cd4590a --- /dev/null +++ b/tycho-baseline-plugin/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/.project b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/.project new file mode 100644 index 0000000000..235a102ae2 --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/.project @@ -0,0 +1,54 @@ + + + junit5-with-linked-resources + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + + + + .classpath + 1 + PROJECT_LOC/linkedresources/.classpath + + + + src_test + 2 + VARIABLE_SELFREF_VIA_PARENT/linkedresources/src_test/ + + + + + VARIABLE_SELFREF_VIA_PARENT + $%7BPARENT-1-PROJECT_LOC%7D/junit5-with-linked-files + + + diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/META-INF/MANIFEST.MF b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..ebc27b2bd7 --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: junit5-with-linked-resources +Bundle-SymbolicName: junit5.with.linked.resources +Bundle-Version: 1.0.0 +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Export-Package: bundle.test diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/build.properties b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/build.properties new file mode 100644 index 0000000000..34d2e4d2da --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/.classpath b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/.classpath new file mode 100644 index 0000000000..ee7865ef8c --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/.classpath @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/AdderTest.java b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/AdderTest.java new file mode 100644 index 0000000000..e73e626c2e --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/AdderTest.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2021 Christoph Läubrich and others. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christoph Läubrich. - initial API and implementation + *******************************************************************************/ +package bundle.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +public class AdderTest { + + @Test + public void incrementTest() { + Counter counter = new Counter(); + counter.increment(1); + counter.increment(3); + assertEquals(4, counter.get()); + } + + @Test + public void decrementTest() { + assertThrows(IllegalArgumentException.class, () -> { + Counter counter = new Counter(); + counter.increment(-1); + }); + } +} diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/SubtractorTest.java b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/SubtractorTest.java new file mode 100644 index 0000000000..138881173d --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/linkedresources/src_test/bundle/test/SubtractorTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2021 Christoph Läubrich and others. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christoph Läubrich - initial API and implementation + *******************************************************************************/ +package bundle.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +public class SubtractorTest { + + @Test + public void incrementTest() { + CountDown counter = new CountDown(10); + counter.decrement(1); + counter.decrement(3); + assertEquals(6, counter.get()); + } + + @Test + public void decrementTest() { + assertThrows(IllegalArgumentException.class, ()->{ + CountDown counter = new CountDown(10); + counter.decrement(-1); + }); + } + + @Test + public void decrementTest2() { + assertThrows(IllegalStateException.class, ()->{ + CountDown counter = new CountDown(1); + counter.decrement(5); + }); + } +} diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/pom.xml b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/pom.xml new file mode 100644 index 0000000000..cbb51c0eb6 --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + org.eclipse.tycho.tycho-its.surefire + junit5.with.linked.resources + eclipse-plugin + 1.0.0 + + + + org.eclipse.tycho + tycho-maven-plugin + ${tycho-version} + true + + + org.apache.maven.plugins + maven-surefire-plugin + 3.1.2 + + + org.junit.jupiter + junit-jupiter-engine + 5.9.1 + + + + + surefire-test + test + + test + + + + + + + diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/CountDown.java b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/CountDown.java new file mode 100644 index 0000000000..ca27d5b7c4 --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/CountDown.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2021 Christoph Läubrich and others. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christoph Läubrich. - initial API and implementation + *******************************************************************************/ +package bundle.test; + +public class CountDown { + + RefMe refFromOtherSourceFolder; + + int count; + + public CountDown(int initalValue) { + count = initalValue; + } + + public void decrement(int x) { + if (x < 0) { + throw new IllegalArgumentException(); + } + if (count-x < 0) { + throw new IllegalStateException(); + } + count -= x; + } + + public int get() { + return count; + } +} diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/Counter.java b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/Counter.java new file mode 100644 index 0000000000..133e1b749b --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/Counter.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2021 Christoph Läubrich and others. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christoph Läubrich. - initial API and implementation + *******************************************************************************/ +package bundle.test; + +public class Counter { + + int count; + + public void increment(int x) { + if (x < 0) { + throw new IllegalArgumentException(); + } + count += x; + } + + public int get() { + return count; + } +} diff --git a/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/RefMe.java b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/RefMe.java new file mode 100644 index 0000000000..2b479d82e1 --- /dev/null +++ b/tycho-its/projects/compiler.junitcontainer/junit5-with-linked-resources/src/bundle/test/RefMe.java @@ -0,0 +1,18 @@ +/******************************************************************************* + * Copyright (c) 2021 Christoph Läubrich and others. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christoph Läubrich. - initial API and implementation + *******************************************************************************/ + +package bundle.test; + +public class RefMe extends Counter{ + +} diff --git a/tycho-its/src/test/java/org/eclipse/tycho/test/compiler/CompilerClasspathEntryTest.java b/tycho-its/src/test/java/org/eclipse/tycho/test/compiler/CompilerClasspathEntryTest.java index 82abb0ce8b..aeafe19c79 100644 --- a/tycho-its/src/test/java/org/eclipse/tycho/test/compiler/CompilerClasspathEntryTest.java +++ b/tycho-its/src/test/java/org/eclipse/tycho/test/compiler/CompilerClasspathEntryTest.java @@ -37,6 +37,16 @@ public void testJUnit5ContainerWithoutTarget() throws Exception { verifier.verifyTextInLog("Tests run: 5, Failures: 0, Errors: 0, Skipped: 0"); } + @Test + public void testJUnit5ContainerWithLinkedResources() throws Exception { + Verifier verifier = getVerifier("compiler.junitcontainer/junit5-with-linked-resources", false, true); + verifier.executeGoal("test"); + verifier.verifyErrorFreeLog(); + verifier.verifyTextInLog("-- in bundle.test.AdderTest"); + verifier.verifyTextInLog("-- in bundle.test.SubtractorTest"); + verifier.verifyTextInLog("Tests run: 5, Failures: 0, Errors: 0, Skipped: 0"); + } + @Test public void testJUnit4Container() throws Exception { Verifier verifier = getVerifier("compiler.junitcontainer/junit4-in-bundle", true); diff --git a/tycho-p2/.settings/org.eclipse.jdt.core.prefs b/tycho-p2/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..cf2cd4590a --- /dev/null +++ b/tycho-p2/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/tycho-surefire/org.eclipse.tycho.bnd.executionlistener/.settings/org.eclipse.jdt.core.prefs b/tycho-surefire/org.eclipse.tycho.bnd.executionlistener/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..2f5cc74c3a --- /dev/null +++ b/tycho-surefire/org.eclipse.tycho.bnd.executionlistener/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8