diff --git a/java-frontend/src/test/java/org/sonar/java/BatchGeneratorTest.java b/java-frontend/src/test/java/org/sonar/java/BatchGeneratorTest.java index 9834646fb1b..b1df0b1dfe6 100644 --- a/java-frontend/src/test/java/org/sonar/java/BatchGeneratorTest.java +++ b/java-frontend/src/test/java/org/sonar/java/BatchGeneratorTest.java @@ -22,10 +22,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.junit.Rule; import org.junit.jupiter.api.Test; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.io.TempDir; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.config.internal.MapSettings; @@ -33,10 +31,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.sonar.java.InputFileUtils.addFile; -@EnableRuleMigrationSupport class BatchGeneratorTest { - @Rule - public TemporaryFolder temp = new TemporaryFolder(); + @TempDir + File temp; @Test void batch_generator_returns_an_empty_list_when_no_input_files() { @@ -48,7 +45,7 @@ void batch_generator_returns_an_empty_list_when_no_input_files() { @Test void batch_generator_returns_at_most_one_item_per_batch_when_size_is_zero() throws IOException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContext = SensorContextTester.create(baseDir); sensorContext.setSettings(new MapSettings()); List inputFiles = new ArrayList<>(); @@ -69,7 +66,7 @@ void batch_generator_returns_at_most_one_item_per_batch_when_size_is_zero() thro @Test void batch_generator_returns_batches_with_multiple_files_that_are_smaller_than_batch_size() throws IOException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContext = SensorContextTester.create(baseDir); sensorContext.setSettings(new MapSettings()); InputFile fileA = addFile(temp, "class A { public void doSomething() {} }", sensorContext); @@ -107,7 +104,7 @@ void batch_generator_returns_batches_with_multiple_files_that_are_smaller_than_b @Test void batch_generator_includes_file_excluded_from_previous_batch_into_next_batch() throws IOException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContext = SensorContextTester.create(baseDir); sensorContext.setSettings(new MapSettings()); InputFile fileA = addFile(temp, "class A { public void doSomething() {} }", sensorContext); diff --git a/java-frontend/src/test/java/org/sonar/java/InputFileUtils.java b/java-frontend/src/test/java/org/sonar/java/InputFileUtils.java index 08e6fd9d9ad..612ce7d6e1c 100644 --- a/java-frontend/src/test/java/org/sonar/java/InputFileUtils.java +++ b/java-frontend/src/test/java/org/sonar/java/InputFileUtils.java @@ -29,14 +29,20 @@ class InputFileUtils { public static InputFile addFile(TemporaryFolder temp, String code, SensorContextTester context) throws IOException { + return addFile(temp.getRoot(), code, context); + } + + public static InputFile addFile(File tempDir, String code, SensorContextTester context) throws IOException { Matcher matcher = Pattern.compile("(?:^|\\s)(?:class|interface|enum|record)\\s++(\\w++)").matcher(code); if (matcher.find()) { String className = matcher.group(1); InputFile.Type type = className.endsWith("Test") ? InputFile.Type.TEST : InputFile.Type.MAIN; - File file = temp.newFile(className + ".java").getAbsoluteFile(); + File file = new File(tempDir, className + ".java").getAbsoluteFile(); + file.createNewFile(); return generateInputFile(code, context, file, type); } else { - File file = temp.newFile("Unnamed.java").getAbsoluteFile(); + File file = new File(tempDir, "Unnamed.java").getAbsoluteFile(); + file.createNewFile(); return generateInputFile(code, context, file, InputFile.Type.MAIN); } } diff --git a/java-frontend/src/test/java/org/sonar/java/JavaFrontendTest.java b/java-frontend/src/test/java/org/sonar/java/JavaFrontendTest.java index 9878e64b678..068da802f1a 100644 --- a/java-frontend/src/test/java/org/sonar/java/JavaFrontendTest.java +++ b/java-frontend/src/test/java/org/sonar/java/JavaFrontendTest.java @@ -23,13 +23,11 @@ import java.util.List; import javax.annotation.Nullable; import org.eclipse.core.runtime.OperationCanceledException; -import org.junit.Rule; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; +import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.junit.rules.TemporaryFolder; import org.slf4j.event.Level; import org.sonar.api.SonarEdition; import org.sonar.api.SonarQubeSide; @@ -83,7 +81,6 @@ import static org.sonar.java.InputFileUtils.addFile; import static org.sonar.java.TestUtils.mockSonarComponents; -@EnableRuleMigrationSupport class JavaFrontendTest { @@ -95,8 +92,8 @@ class JavaFrontendTest { private static final Version LATESTS_SONAR_API_VERSION = Version.create(8, 13); public static final SonarRuntime SONARQUBE_RUNTIME = SonarRuntimeImpl.forSonarQube(LATESTS_SONAR_API_VERSION, SonarQubeSide.SCANNER, SonarEdition.COMMUNITY); - @Rule - public TemporaryFolder temp = new TemporaryFolder(); + @TempDir + public File temp; @RegisterExtension public LogTesterJUnit5 logTester = new LogTesterJUnit5().setLevel(Level.DEBUG); @@ -211,7 +208,7 @@ public void scanFile(JavaFileScannerContext context) { var settings = new MapSettings(); if (sensorContext == null) { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); sensorContext = SensorContextTester.create(baseDir); sensorContext.setSettings(settings); } @@ -239,7 +236,7 @@ void scanning_empty_project_should_be_logged_in_autoscan() { @Test void test_scan_logs_when_caching_is_enabled_and_can_skip_unchanged_files() throws ApiMismatchException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContextTester = SensorContextTester.create(baseDir); sensorContextTester.setSettings(new MapSettings()); @@ -273,7 +270,7 @@ void test_scan_logs_when_caching_is_enabled_and_can_skip_unchanged_files() throw @Test void test_scan_logs_when_caching_is_enabled_and_cannot_skip_unchanged_files() throws ApiMismatchException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContextTester = SensorContextTester.create(baseDir); sensorContextTester.setSettings(new MapSettings()); @@ -307,7 +304,7 @@ void test_scan_logs_when_caching_is_enabled_and_cannot_skip_unchanged_files() th @Test void test_scan_logs_when_caching_is_enabled_and_cannot_determine_if_unchanged_files_can_be_skipped() throws ApiMismatchException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContextTester = SensorContextTester.create(baseDir); sensorContextTester.setSettings(new MapSettings()); @@ -341,7 +338,7 @@ void test_scan_logs_when_caching_is_enabled_and_cannot_determine_if_unchanged_fi @Test void test_scan_logs_when_caching_is_disabled_and_can_skip_unchanged_files() throws ApiMismatchException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContextTester = SensorContextTester.create(baseDir); sensorContextTester.setSettings(new MapSettings()); @@ -374,7 +371,7 @@ void test_scan_logs_when_caching_is_disabled_and_can_skip_unchanged_files() thro @Test void test_scan_logs_when_caching_is_disabled_and_cannot_skip_unchanged_files() throws ApiMismatchException { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContextTester = SensorContextTester.create(baseDir); sensorContextTester.setSettings(new MapSettings()); @@ -407,7 +404,7 @@ void test_scan_logs_when_caching_is_disabled_and_cannot_skip_unchanged_files() t @Test void test_scan_logs_when_caching_is_disabled_when_sonar_components_is_null() { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); SensorContextTester sensorContextTester = SensorContextTester.create(baseDir); sensorContextTester.setSettings(new MapSettings()); @@ -751,7 +748,7 @@ private List scan(SonarRuntime sonarRuntime, String... codeList) thro private List scan(MapSettings settings, SonarRuntime sonarRuntime, String... codeList) throws IOException { if (sensorContext == null) { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); sensorContext = SensorContextTester.create(baseDir); sensorContext.setSettings(settings); } @@ -768,7 +765,7 @@ private List scan(MapSettings settings, SonarRuntime sonarRuntime, Li private List scan(MapSettings settings, SonarRuntime sonarRuntime, List inputFiles, @Nullable CheckRegistrar[] checkRegistrars) { if (sensorContext == null) { - File baseDir = temp.getRoot().getAbsoluteFile(); + File baseDir = temp.getAbsoluteFile(); sensorContext = SensorContextTester.create(baseDir); sensorContext.setSettings(settings); } diff --git a/java-frontend/src/test/java/org/sonar/java/ast/visitors/SonarSymbolTableVisitorTest.java b/java-frontend/src/test/java/org/sonar/java/ast/visitors/SonarSymbolTableVisitorTest.java index ca45f4f7938..cf6b6c875df 100644 --- a/java-frontend/src/test/java/org/sonar/java/ast/visitors/SonarSymbolTableVisitorTest.java +++ b/java-frontend/src/test/java/org/sonar/java/ast/visitors/SonarSymbolTableVisitorTest.java @@ -17,13 +17,12 @@ package org.sonar.java.ast.visitors; import java.io.File; +import java.nio.file.Path; import java.util.Collection; import java.util.Collections; -import org.junit.Rule; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.io.TempDir; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.TextPointer; import org.sonar.api.batch.fs.TextRange; @@ -42,17 +41,16 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; -@EnableRuleMigrationSupport class SonarSymbolTableVisitorTest { - @Rule - public TemporaryFolder temp = new TemporaryFolder(); + @TempDir + Path temp; private SensorContextTester context; private SonarComponents sonarComponents; @BeforeEach void setUp() { - context = SensorContextTester.create(temp.getRoot()); + context = SensorContextTester.create(temp.toFile()); sonarComponents = new SonarComponents(mock(FileLinesContextFactory.class), context.fileSystem(), mock(ClasspathForMain.class), mock(ClasspathForTest.class), mock(CheckFactory.class), mock(ActiveRules.class)); sonarComponents.setSensorContext(context); diff --git a/java-frontend/src/test/java/org/sonar/java/ast/visitors/SyntaxHighlighterVisitorTest.java b/java-frontend/src/test/java/org/sonar/java/ast/visitors/SyntaxHighlighterVisitorTest.java index 6863b75f199..e4d5faf8886 100644 --- a/java-frontend/src/test/java/org/sonar/java/ast/visitors/SyntaxHighlighterVisitorTest.java +++ b/java-frontend/src/test/java/org/sonar/java/ast/visitors/SyntaxHighlighterVisitorTest.java @@ -19,14 +19,13 @@ import com.google.common.io.Files; import java.io.File; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; import java.util.Collections; -import org.junit.Rule; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; +import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.rule.ActiveRules; import org.sonar.api.batch.rule.CheckFactory; @@ -50,11 +49,10 @@ import static org.mockito.Mockito.verify; import static org.sonar.java.TestUtils.mockSonarComponents; -@EnableRuleMigrationSupport class SyntaxHighlighterVisitorTest { - @Rule - public TemporaryFolder temp = new TemporaryFolder(); + @TempDir + Path temp; private SensorContextTester context; private SonarComponents sonarComponents; @@ -63,7 +61,7 @@ class SyntaxHighlighterVisitorTest { @BeforeEach void setUp() { - context = SensorContextTester.create(temp.getRoot()); + context = SensorContextTester.create(temp.toFile()); sonarComponents = new SonarComponents(mock(FileLinesContextFactory.class), context.fileSystem(), mock(ClasspathForMain.class), mock(ClasspathForTest.class), mock(CheckFactory.class), mock(ActiveRules.class)); sonarComponents.setSensorContext(context); @@ -73,7 +71,7 @@ void setUp() { @Test void parse_error() throws Exception { SensorContextTester spy = spy(context); - File file = temp.newFile().getAbsoluteFile(); + File file = java.nio.file.Files.createTempFile(temp, null, null).toFile().getAbsoluteFile(); Files.asCharSink(file, StandardCharsets.UTF_8).write("ParseError"); scan(TestUtils.inputFile(file)); verify(spy, never()).newHighlighting(); diff --git a/java-frontend/src/test/java/org/sonar/java/model/JParserReleasingJarsTest.java b/java-frontend/src/test/java/org/sonar/java/model/JParserReleasingJarsTest.java index f7b71f69667..24df3c160a6 100644 --- a/java-frontend/src/test/java/org/sonar/java/model/JParserReleasingJarsTest.java +++ b/java-frontend/src/test/java/org/sonar/java/model/JParserReleasingJarsTest.java @@ -18,11 +18,11 @@ import com.google.common.io.Files; import java.io.File; +import java.nio.file.Path; import java.util.Collections; import java.util.List; import org.junit.jupiter.api.Test; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.io.TempDir; import org.sonar.plugins.java.api.semantic.Symbol; import org.sonar.plugins.java.api.tree.ClassTree; import org.sonar.plugins.java.api.tree.ExpressionStatementTree; @@ -31,11 +31,10 @@ import static org.assertj.core.api.Assertions.assertThat; -@EnableRuleMigrationSupport class JParserReleasingJarsTest { - @org.junit.Rule - public TemporaryFolder temp = new TemporaryFolder(); + @TempDir + Path temp; private static final String PROJECT_JAR = "src/test/files/other/project.jar"; private static final String SOURCE = "package foo.bar;\n" @@ -75,7 +74,7 @@ void jParser_should_resolve_method_with_jar_in_classPath() { */ @Test void should_be_able_to_delete_jar() throws Exception { - File newJar = new File(temp.newFolder(), "project2.jar"); + File newJar = temp.resolve("project2.jar").toFile(); Files.copy(new File(PROJECT_JAR), newJar); assertThat(newJar).exists(); @@ -90,7 +89,7 @@ void should_be_able_to_delete_jar() throws Exception { */ @Test void jParser_should_release_jar_after_use() throws Exception { - File newJar = new File(temp.newFolder(), "project3.jar"); + File newJar = temp.resolve("project3.jar").toFile(); Files.copy(new File(PROJECT_JAR), newJar); assertThat(newJar).exists();