Skip to content

Commit 86f2713

Browse files
authored
[NO JIRA] Migrate ITs to Junit 5 (#410)
1 parent 8962b85 commit 86f2713

File tree

12 files changed

+74
-83
lines changed

12 files changed

+74
-83
lines changed

its/plugin/build.gradle.kts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
dependencies {
22
testImplementation(testLibs.sonarlint.core)
3-
testImplementation(testLibs.sonar.orchestrator.junit4)
3+
testImplementation(testLibs.sonar.orchestrator.junit5)
4+
testImplementation(testLibs.junit.engine)
45
testImplementation(testLibs.assertj.core)
56
testImplementation(testLibs.sonar.ws)
67
testImplementation(libs.sonar.analyzer.commons)
@@ -9,13 +10,10 @@ dependencies {
910
sonarqube.isSkipProject = true
1011

1112
tasks.test {
13+
useJUnitPlatform()
1214
onlyIf {
1315
project.hasProperty("plugin") || project.hasProperty("its")
1416
}
15-
filter {
16-
includeTestsMatching("org.sonarsource.slang.Tests")
17-
includeTestsMatching("org.sonarsource.slang.SonarLintTest")
18-
}
1917
systemProperty("java.awt.headless", "true")
2018
outputs.upToDateWhen { false }
2119
}

its/plugin/src/test/java/org/sonarsource/slang/DuplicationsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*/
2020
package org.sonarsource.slang;
2121

22-
import org.junit.Test;
22+
import org.junit.jupiter.api.Test;
2323

2424
import static org.assertj.core.api.Assertions.assertThat;
2525

its/plugin/src/test/java/org/sonarsource/slang/ExternalReportTest.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@
2020
package org.sonarsource.slang;
2121

2222
import com.sonar.orchestrator.build.SonarScanner;
23-
import org.junit.Rule;
24-
import org.junit.Test;
25-
import org.junit.rules.TemporaryFolder;
23+
import org.junit.jupiter.api.Test;
2624
import org.sonarqube.ws.Issues.Issue;
2725
import org.sonarqube.ws.client.issues.SearchRequest;
2826

@@ -35,9 +33,6 @@ public class ExternalReportTest extends TestBase {
3533

3634
private static final String BASE_DIRECTORY = "projects/externalreport/";
3735

38-
@Rule
39-
public TemporaryFolder tmpDir = new TemporaryFolder();
40-
4136
@Test
4237
public void detekt() {
4338
final String projectKey = "detekt";

its/plugin/src/test/java/org/sonarsource/slang/MeasuresTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*/
2020
package org.sonarsource.slang;
2121

22-
import org.junit.Test;
22+
import org.junit.jupiter.api.Test;
2323
import org.sonarqube.ws.Issues;
2424

2525
import java.util.List;

its/plugin/src/test/java/org/sonarsource/slang/SonarLintTest.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,22 @@
1919
*/
2020
package org.sonarsource.slang;
2121

22-
import com.sonar.orchestrator.junit4.OrchestratorRule;
23-
import com.sonar.orchestrator.junit4.OrchestratorRuleBuilder;
22+
import com.sonar.orchestrator.junit5.OrchestratorExtension;
23+
import com.sonar.orchestrator.junit5.OrchestratorExtensionBuilder;
2424
import com.sonar.orchestrator.locator.Locators;
25+
import org.junit.jupiter.api.AfterAll;
26+
import org.junit.jupiter.api.BeforeAll;
27+
import org.junit.jupiter.api.Test;
28+
import org.junit.jupiter.api.io.TempDir;
29+
import org.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl;
30+
import org.sonarsource.sonarlint.core.analysis.api.ClientInputFile;
31+
import org.sonarsource.sonarlint.core.client.api.common.analysis.Issue;
32+
import org.sonarsource.sonarlint.core.client.api.standalone.StandaloneAnalysisConfiguration;
33+
import org.sonarsource.sonarlint.core.client.api.standalone.StandaloneGlobalConfiguration;
34+
import org.sonarsource.sonarlint.core.client.api.standalone.StandaloneSonarLintEngine;
35+
import org.sonarsource.sonarlint.core.commons.IssueSeverity;
36+
import org.sonarsource.sonarlint.core.commons.Language;
37+
2538
import java.io.File;
2639
import java.io.IOException;
2740
import java.io.InputStream;
@@ -32,40 +45,27 @@
3245
import java.nio.file.Path;
3346
import java.util.ArrayList;
3447
import java.util.List;
35-
import org.junit.AfterClass;
36-
import org.junit.BeforeClass;
37-
import org.junit.ClassRule;
38-
import org.junit.Test;
39-
import org.junit.rules.TemporaryFolder;
40-
import org.sonarsource.sonarlint.core.StandaloneSonarLintEngineImpl;
41-
import org.sonarsource.sonarlint.core.analysis.api.ClientInputFile;
42-
import org.sonarsource.sonarlint.core.client.api.common.analysis.Issue;
43-
import org.sonarsource.sonarlint.core.client.api.standalone.StandaloneAnalysisConfiguration;
44-
import org.sonarsource.sonarlint.core.client.api.standalone.StandaloneGlobalConfiguration;
45-
import org.sonarsource.sonarlint.core.client.api.standalone.StandaloneSonarLintEngine;
46-
import org.sonarsource.sonarlint.core.commons.IssueSeverity;
47-
import org.sonarsource.sonarlint.core.commons.Language;
4848

4949
import static org.assertj.core.api.Assertions.assertThat;
5050
import static org.assertj.core.api.Assertions.tuple;
5151

5252
public class SonarLintTest {
5353

54-
@ClassRule
55-
public static TemporaryFolder temp = new TemporaryFolder();
54+
@TempDir
55+
public static File temp;
5656

5757
private static StandaloneSonarLintEngine sonarlintEngine;
5858

5959
private static File baseDir;
6060

61-
@BeforeClass
61+
@BeforeAll
6262
public static void prepare() throws Exception {
6363
// Orchestrator is used only to retrieve plugin artifacts from filesystem or maven
64-
OrchestratorRuleBuilder orchestratorBuilder = OrchestratorRule.builderEnv();
65-
Tests.addLanguagePlugins(orchestratorBuilder);
66-
OrchestratorRule orchestrator = orchestratorBuilder
64+
OrchestratorExtensionBuilder orchestratorBuilder = OrchestratorExtension.builderEnv();
65+
TestsHelper.addLanguagePlugins(orchestratorBuilder);
66+
OrchestratorExtension orchestrator = orchestratorBuilder
6767
.useDefaultAdminCredentialsForBuilds(true)
68-
.setSonarVersion(System.getProperty(Tests.SQ_VERSION_PROPERTY, Tests.DEFAULT_SQ_VERSION))
68+
.setSonarVersion(System.getProperty(TestsHelper.SQ_VERSION_PROPERTY, TestsHelper.DEFAULT_SQ_VERSION))
6969
.build();
7070

7171
Locators locators = orchestrator.getConfiguration().locators();
@@ -76,22 +76,22 @@ public static void prepare() throws Exception {
7676

7777
sonarLintConfigBuilder
7878
.addEnabledLanguage(Language.KOTLIN)
79-
.setSonarLintUserHome(temp.newFolder().toPath())
79+
.setSonarLintUserHome(temp.toPath())
8080
.setLogOutput((formattedMessage, level) -> {
8181
/* Don't pollute logs */
8282
});
8383
StandaloneGlobalConfiguration configuration = sonarLintConfigBuilder.build();
8484
sonarlintEngine = new StandaloneSonarLintEngineImpl(configuration);
85-
baseDir = temp.newFolder();
85+
baseDir = temp;
8686
}
8787

88-
@AfterClass
88+
@AfterAll
8989
public static void stop() {
9090
sonarlintEngine.stop();
9191
}
9292

9393
@Test
94-
public void test_kotlin() throws Exception {
94+
void test_kotlin() throws Exception {
9595
ClientInputFile inputFile = prepareInputFile("foo.kt",
9696
"fun foo_bar() {\n" +
9797
" if (true) { \n" +

its/plugin/src/test/java/org/sonarsource/slang/SuppressWarningsTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
*/
2020
package org.sonarsource.slang;
2121

22-
import org.junit.Test;
22+
23+
import org.junit.jupiter.api.Test;
2324

2425
import static org.assertj.core.api.Assertions.assertThat;
2526

its/plugin/src/test/java/org/sonarsource/slang/SurefireTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
package org.sonarsource.slang;
2121

2222
import com.sonar.orchestrator.build.MavenBuild;
23-
import com.sonar.orchestrator.junit4.OrchestratorRule;
2423
import java.io.File;
2524
import java.nio.file.Path;
2625
import java.nio.file.Paths;
2726
import java.util.Map;
28-
import org.junit.ClassRule;
29-
import org.junit.Test;
27+
28+
import com.sonar.orchestrator.junit5.OrchestratorExtension;
29+
import org.junit.jupiter.api.Test;
30+
import org.junit.jupiter.api.extension.RegisterExtension;
3031
import org.sonarqube.ws.Measures;
3132

3233
import static java.lang.Double.parseDouble;
@@ -35,8 +36,8 @@
3536

3637
public class SurefireTest extends TestBase {
3738

38-
@ClassRule
39-
public static final OrchestratorRule ORCHESTRATOR = Tests.ORCHESTRATOR;
39+
@RegisterExtension
40+
public static final OrchestratorExtension ORCHESTRATOR = TestsHelper.ORCHESTRATOR;
4041
private static final Path BASE_DIRECTORY = Paths.get("projects");
4142

4243

its/plugin/src/test/java/org/sonarsource/slang/TestBase.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.sonarsource.slang;
2121

2222
import com.sonar.orchestrator.build.SonarScanner;
23-
import com.sonar.orchestrator.junit4.OrchestratorRule;
2423
import java.io.File;
2524
import java.util.Arrays;
2625
import java.util.Collections;
@@ -29,7 +28,9 @@
2928
import java.util.function.Function;
3029
import java.util.stream.Collectors;
3130
import javax.annotation.Nullable;
32-
import org.junit.ClassRule;
31+
32+
import com.sonar.orchestrator.junit5.OrchestratorExtension;
33+
import org.junit.jupiter.api.extension.RegisterExtension;
3334
import org.sonarqube.ws.Issues;
3435
import org.sonarqube.ws.Measures.ComponentWsResponse;
3536
import org.sonarqube.ws.Measures.Measure;
@@ -43,8 +44,8 @@
4344

4445
public abstract class TestBase {
4546

46-
@ClassRule
47-
public static final OrchestratorRule ORCHESTRATOR = Tests.ORCHESTRATOR;
47+
@RegisterExtension
48+
public static final OrchestratorExtension ORCHESTRATOR = TestsHelper.ORCHESTRATOR;
4849

4950
protected SonarScanner getSonarScanner(String projectKey, String directoryToScan, String languageKey) {
5051
return getSonarScanner(projectKey, directoryToScan, languageKey, null);

its/plugin/src/test/java/org/sonarsource/slang/Tests.java renamed to its/plugin/src/test/java/org/sonarsource/slang/TestsHelper.java

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,46 +20,37 @@
2020
package org.sonarsource.slang;
2121

2222
import com.sonar.orchestrator.OrchestratorBuilder;
23-
import com.sonar.orchestrator.junit4.OrchestratorRule;
24-
import com.sonar.orchestrator.junit4.OrchestratorRuleBuilder;
23+
24+
import com.sonar.orchestrator.junit5.OrchestratorExtension;
25+
import com.sonar.orchestrator.junit5.OrchestratorExtensionBuilder;
2526
import com.sonar.orchestrator.locator.FileLocation;
2627
import com.sonar.orchestrator.locator.Location;
2728
import com.sonar.orchestrator.locator.MavenLocation;
29+
2830
import java.io.File;
2931
import java.util.Collections;
3032
import java.util.HashSet;
3133
import java.util.Set;
32-
import org.junit.ClassRule;
33-
import org.junit.runner.RunWith;
34-
import org.junit.runners.Suite;
3534

36-
@RunWith(Suite.class)
37-
@Suite.SuiteClasses({
38-
DuplicationsTest.class,
39-
ExternalReportTest.class,
40-
MeasuresTest.class,
41-
SuppressWarningsTest.class,
42-
SurefireTest.class
43-
})
44-
public class Tests {
35+
36+
public class TestsHelper {
4537

4638
static final String SQ_VERSION_PROPERTY = "sonar.runtimeVersion";
4739
static final String DEFAULT_SQ_VERSION = "LATEST_RELEASE";
4840

4941
private static final Set<String> LANGUAGES = new HashSet<>(Collections.singletonList("kotlin"));
5042

51-
@ClassRule
52-
public static final OrchestratorRule ORCHESTRATOR;
43+
public static final OrchestratorExtension ORCHESTRATOR;
5344

5445
static {
55-
OrchestratorRuleBuilder orchestratorBuilder = OrchestratorRule.builderEnv();
46+
OrchestratorExtensionBuilder orchestratorBuilder = OrchestratorExtension.builderEnv();
5647
addLanguagePlugins(orchestratorBuilder);
5748
ORCHESTRATOR = orchestratorBuilder
58-
.useDefaultAdminCredentialsForBuilds(true)
59-
.setSonarVersion(System.getProperty(SQ_VERSION_PROPERTY, DEFAULT_SQ_VERSION))
60-
.restoreProfileAtStartup(FileLocation.of("src/test/resources/suppress-warnings-kotlin.xml"))
61-
.restoreProfileAtStartup(FileLocation.of("src/test/resources/norule.xml"))
62-
.build();
49+
.useDefaultAdminCredentialsForBuilds(true)
50+
.setSonarVersion(System.getProperty(SQ_VERSION_PROPERTY, DEFAULT_SQ_VERSION))
51+
.restoreProfileAtStartup(FileLocation.of("src/test/resources/suppress-warnings-kotlin.xml"))
52+
.restoreProfileAtStartup(FileLocation.of("src/test/resources/norule.xml"))
53+
.build();
6354
}
6455

6556
static void addLanguagePlugins(OrchestratorBuilder builder) {

its/ruling/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ plugins {
44
}
55

66
dependencies {
7-
testImplementation(testLibs.sonar.orchestrator.junit4)
7+
testImplementation(testLibs.sonar.orchestrator.junit5)
88
testImplementation(testLibs.assertj.core)
9+
testImplementation(testLibs.junit.engine)
910
testImplementation(libs.sonar.analyzer.commons)
1011
}
1112

1213
sonarqube.isSkipProject = true
1314

1415
tasks.test {
16+
useJUnitPlatform()
1517
onlyIf {
1618
project.hasProperty("its") || project.hasProperty("ruling")
1719
}

0 commit comments

Comments
 (0)