diff options
author | Jeremy Davis <jeremy.davis@sonarsource.com> | 2023-04-04 10:20:33 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-04-11 20:03:15 +0000 |
commit | ba00face3dc7fbab07c4526b8035a6f42ce2dc2d (patch) | |
tree | 7540208b6b81f7f58501712d760298a05a6b931a /sonar-scanner-engine | |
parent | 5e6f30d7c4989a683ba0e45fa39ed7dfa3b0252f (diff) | |
download | sonarqube-ba00face3dc7fbab07c4526b8035a6f42ce2dc2d.tar.gz sonarqube-ba00face3dc7fbab07c4526b8035a6f42ce2dc2d.zip |
SONAR-19015 Use new log test fixtures in the sonar-plugin-api
Diffstat (limited to 'sonar-scanner-engine')
55 files changed, 221 insertions, 180 deletions
diff --git a/sonar-scanner-engine/build.gradle b/sonar-scanner-engine/build.gradle index 269ec1996e5..093f996a9c4 100644 --- a/sonar-scanner-engine/build.gradle +++ b/sonar-scanner-engine/build.gradle @@ -57,6 +57,7 @@ dependencies { testImplementation 'com.fasterxml.staxmate:staxmate' testImplementation 'org.hamcrest:hamcrest-core' testImplementation 'org.mockito:mockito-core' + api 'org.sonarsource.api.plugin:sonar-plugin-api-test-fixtures' testImplementation project(':plugins:sonar-xoo-plugin') } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java index a7a181a6f43..ced4d750654 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/ScannerMediumTester.java @@ -296,7 +296,7 @@ public class ScannerMediumTester extends ExternalResource { props.putAll(tester.globalProperties); props.putAll(taskProperties); - Batch.builder() + Batch.Builder builder = Batch.builder() .setGlobalProperties(props) .setEnableLoggingConfiguration(true) .addComponents(new EnvironmentInformation("mediumTest", "1.0"), @@ -313,9 +313,13 @@ public class ScannerMediumTester extends ExternalResource { tester.analysisCacheLoader, tester.sonarRuntime, tester.reportMetadataHolder, - result) - .setLogOutput(tester.logOutput) - .build().execute(); + result); + if (tester.logOutput != null) { + builder.setLogOutput(tester.logOutput); + } else { + builder.setEnableLoggingConfiguration(false); + } + builder.build().execute(); return result; } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/branch/BranchMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/branch/BranchMediumIT.java index 02f68d9e74b..883b8be4548 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/branch/BranchMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/branch/BranchMediumIT.java @@ -31,10 +31,11 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.FileMetadata; import org.sonar.api.notifications.AnalysisWarnings; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.protocol.output.ScannerReport; @@ -70,6 +71,7 @@ public class BranchMediumIT { @Before public void prepare() throws IOException { + logTester.setLevel(Level.DEBUG); baseDir = temp.newFolder(); Path filepath = baseDir.toPath().resolve(FILE_PATH); Files.write(filepath, FILE_CONTENT.getBytes()); diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/CoverageMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/CoverageMediumIT.java index 08faf0f0f5e..20b48b37ec9 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/CoverageMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/CoverageMediumIT.java @@ -24,12 +24,13 @@ import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.apache.commons.io.FileUtils; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.protocol.output.ScannerReport; @@ -51,6 +52,11 @@ public class CoverageMediumIT { .registerPlugin("xoo", new XooPlugin()) .addDefaultQProfile("xoo", "Sonar Way"); + @Before + public void prepare() throws IOException { + logTester.setLevel(Level.DEBUG); + } + @Test public void singleReport() throws IOException { @@ -168,7 +174,7 @@ public class CoverageMediumIT { InputFile fileB = result.inputFile("moduleB/src/sampleB.xoo"); assertThat(result.coverageFor(fileB, 2)).isNotNull(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Specifying module-relative paths at project level in the property 'sonar.coverage.exclusions' is deprecated. " + + assertThat(logTester.logs(Level.WARN)).contains("Specifying module-relative paths at project level in the property 'sonar.coverage.exclusions' is deprecated. " + "To continue matching files like 'moduleA/src/sampleA.xoo', update this property so that patterns refer to project-relative paths."); } @@ -249,7 +255,7 @@ public class CoverageMediumIT { InputFile fileB = result.inputFile("moduleB/src/sample.xoo"); assertThat(result.coverageFor(fileB, 2)).isNull(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Specifying module-relative paths at project level in the property 'sonar.coverage.exclusions' is deprecated. " + + assertThat(logTester.logs(Level.WARN)).contains("Specifying module-relative paths at project level in the property 'sonar.coverage.exclusions' is deprecated. " + "To continue matching files like 'moduleA/src/sample.xoo', update this property so that patterns refer to project-relative paths."); } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/GenericCoverageMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/GenericCoverageMediumIT.java index 1f16e7241d7..fe5676fd40f 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/GenericCoverageMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/coverage/GenericCoverageMediumIT.java @@ -25,6 +25,7 @@ import java.util.List; import org.junit.Rule; import org.junit.Test; import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.xoo.XooPlugin; @@ -32,8 +33,9 @@ import org.sonar.xoo.XooPlugin; import static org.assertj.core.api.Assertions.assertThat; public class GenericCoverageMediumIT { - private final List<String> logs = new ArrayList<>(); - + @Rule + public LogTester logTester = new LogTester(); + @Rule public ScannerMediumTester tester = new ScannerMediumTester() .registerPlugin("xoo", new XooPlugin()) @@ -45,7 +47,6 @@ public class GenericCoverageMediumIT { File projectDir = new File("test-resources/mediumtest/xoo/sample-generic-coverage"); AnalysisResult result = tester - .setLogOutput((msg, level) -> logs.add(msg)) .newAnalysis(new File(projectDir, "sonar-project.properties")) .property("sonar.coverageReportPaths", "coverage.xml") .execute(); @@ -62,7 +63,7 @@ public class GenericCoverageMediumIT { assertThat(result.coverageFor(withConditions, 3).getConditions()).isEqualTo(2); assertThat(result.coverageFor(withConditions, 3).getCoveredConditions()).isOne(); - assertThat(logs).noneMatch(l -> l.contains("Please use 'sonar.coverageReportPaths'")); + assertThat(logTester.logs()).noneMatch(l -> l.contains("Please use 'sonar.coverageReportPaths'")); } @@ -72,7 +73,6 @@ public class GenericCoverageMediumIT { File projectDir = new File("test-resources/mediumtest/xoo/sample-generic-coverage"); AnalysisResult result = tester - .setLogOutput((msg, level) -> logs.add(msg)) .newAnalysis(new File(projectDir, "sonar-project.properties")) .property("sonar.coverageReportPaths", "coverage.xml,coverage2.xml") .execute(); @@ -89,7 +89,7 @@ public class GenericCoverageMediumIT { assertThat(result.coverageFor(withConditions, 3).getConditions()).isEqualTo(2); assertThat(result.coverageFor(withConditions, 3).getCoveredConditions()).isEqualTo(2); - assertThat(logs).noneMatch(l -> l.contains("Please use 'sonar.coverageReportPaths'")); + assertThat(logTester.logs()).noneMatch(l -> l.contains("Please use 'sonar.coverageReportPaths'")); } } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/cpd/CpdMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/cpd/CpdMediumIT.java index 0975bb74a74..1455ab4512e 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/cpd/CpdMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/cpd/CpdMediumIT.java @@ -29,9 +29,9 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.protocol.output.ScannerReport; @@ -61,6 +61,7 @@ public class CpdMediumIT { @Before public void prepare() { + logTester.setLevel(Level.DEBUG); baseDir = temp.getRoot(); builder = ImmutableMap.<String, String>builder() @@ -345,7 +346,7 @@ public class CpdMediumIT { List<ScannerReport.Duplication> duplicationGroupsFile2 = result.duplicationsFor(inputFile2); assertThat(duplicationGroupsFile2).isEmpty(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Specifying module-relative paths at project level in the property 'sonar.cpd.exclusions' is deprecated. " + + assertThat(logTester.logs(Level.WARN)).contains("Specifying module-relative paths at project level in the property 'sonar.cpd.exclusions' is deprecated. " + "To continue matching files like 'moduleA/src/sampleA.xoo', update this property so that patterns refer to project-relative paths."); } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java index 9c1c55338b3..bc7fac73a43 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java @@ -38,6 +38,7 @@ import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.CoreProperties; import org.sonar.api.SonarEdition; import org.sonar.api.batch.fs.InputFile; @@ -45,7 +46,7 @@ import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.PathUtils; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; @@ -82,6 +83,7 @@ public class FileSystemMediumIT { @Before public void prepare() throws IOException { + logTester.setLevel(Level.DEBUG); baseDir = temp.newFolder().getCanonicalFile(); builder = ImmutableMap.<String, String>builder() @@ -576,7 +578,7 @@ public class FileSystemMediumIT { InputFile fileB = result.inputFile("moduleB/src/sample.xoo"); assertThat(fileB).isNull(); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains("Specifying module-relative paths at project level in the property 'sonar.exclusions' is deprecated. " + "To continue matching files like 'moduleA/src/sample.xoo', update this property so that patterns refer to project-relative paths."); } @@ -673,7 +675,7 @@ public class FileSystemMediumIT { InputFile fileB = result.inputFile("moduleB/src/sample.xoo"); assertThat(fileB).isNull(); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains("Specifying module-relative paths at project level in the property 'sonar.exclusions' is deprecated. " + "To continue matching files like 'moduleA/src/sample.xoo', update this property so that patterns refer to project-relative paths."); } @@ -813,7 +815,7 @@ public class FileSystemMediumIT { .execute(); assertThat(result.inputFiles()).hasSize(4); - assertThat(logTester.logs(LoggerLevel.INFO)).contains( + assertThat(logTester.logs(Level.INFO)).contains( "Deprecated Global Sensor: module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo", "Deprecated Global Sensor: module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo", "Deprecated Global Sensor: module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo", @@ -829,7 +831,7 @@ public class FileSystemMediumIT { .execute(); assertThat(result.inputFiles()).hasSize(4); - assertThat(logTester.logs(LoggerLevel.INFO)).contains( + assertThat(logTester.logs(Level.INFO)).contains( "Global Sensor: module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo", "Global Sensor: module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo", "Global Sensor: module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo", @@ -945,7 +947,7 @@ public class FileSystemMediumIT { .build()) .execute(); - assertThat(logTester.logs(LoggerLevel.INFO)) + assertThat(logTester.logs(Level.INFO)) .containsSequence("Project configuration:", " Included sources: **/global.inclusions", " Excluded sources: **/global.exclusions, **/global.test.inclusions", @@ -955,7 +957,6 @@ public class FileSystemMediumIT { " Excluded sources for duplication: **/cpd.exclusions", "Indexing files of module 'moduleA'", " Base dir: " + baseDirModuleA.toPath().toRealPath(LinkOption.NOFOLLOW_LINKS), - " Source paths: src", " Included sources: **/global.inclusions", " Excluded sources: **/global.exclusions, **/global.test.inclusions", " Included tests: **/global.test.inclusions", @@ -964,7 +965,6 @@ public class FileSystemMediumIT { " Excluded sources for duplication: **/cpd.exclusions", "Indexing files of module 'moduleB'", " Base dir: " + baseDirModuleB.toPath().toRealPath(LinkOption.NOFOLLOW_LINKS), - " Source paths: src", " Included sources: **/global.inclusions", " Excluded sources: **/global.exclusions, **/global.test.inclusions", " Included tests: **/global.test.inclusions", @@ -998,7 +998,7 @@ public class FileSystemMediumIT { .execute(); assertThat(result.inputFiles()).hasSize(1); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("File '" + xooFile2.getAbsolutePath() + "' is ignored. It is not located in project basedir '" + baseDir + "'."); + assertThat(logTester.logs(Level.WARN)).contains("File '" + xooFile2.getAbsolutePath() + "' is ignored. It is not located in project basedir '" + baseDir + "'."); } @Test @@ -1020,7 +1020,7 @@ public class FileSystemMediumIT { .execute(); assertThat(result.inputFiles()).hasSize(1); - assertThat(logTester.logs(LoggerLevel.WARN)).doesNotContain("File '" + xooFile2.getAbsolutePath() + "' is ignored. It is not located in project basedir '" + baseDir + "'."); + assertThat(logTester.logs(Level.WARN)).doesNotContain("File '" + xooFile2.getAbsolutePath() + "' is ignored. It is not located in project basedir '" + baseDir + "'."); } @Test @@ -1039,7 +1039,7 @@ public class FileSystemMediumIT { .execute(); assertThat(result.inputFiles()).hasSize(1); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains("File '" + xooFile2.getAbsolutePath() + "' is ignored. It is not located in module basedir '" + new File(baseDir, "moduleA") + "'."); } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/ExternalIssuesMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/ExternalIssuesMediumIT.java index 2f9d939f7d8..2ed34a2e85c 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/ExternalIssuesMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/ExternalIssuesMediumIT.java @@ -27,7 +27,8 @@ import org.apache.commons.io.FileUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import org.sonar.api.utils.log.LogTester; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.protocol.Constants.Severity; @@ -105,6 +106,7 @@ public class ExternalIssuesMediumIT { @Test public void testLoadIssuesFromJsonReport() throws URISyntaxException, IOException { + logs.setLevel(Level.DEBUG); File projectDir = new File("test-resources/mediumtest/xoo/sample"); File tmpDir = temp.newFolder(); FileUtils.copyDirectory(projectDir, tmpDir); diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/IssuesMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/IssuesMediumIT.java index feaf921d141..f303864355b 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/IssuesMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/IssuesMediumIT.java @@ -25,13 +25,14 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; import org.apache.commons.io.FileUtils; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.rule.LoadedActiveRule; import org.sonar.api.rule.RuleKey; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.protocol.output.ScannerReport.ExternalIssue; @@ -61,6 +62,11 @@ public class IssuesMediumIT { .addRules(new XooRulesDefinition()) .addActiveRule("xoo", "OneIssuePerLine", null, "One issue per line", "MAJOR", "OneIssuePerLine.internal", "xoo"); + @Before + public void setUp() throws Exception { + logTester.setLevel(Level.DEBUG); + } + @Test public void testOneIssuePerLine() throws Exception { File projectDir = new File("test-resources/mediumtest/xoo/sample"); @@ -243,7 +249,7 @@ public class IssuesMediumIT { .build()) .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains( + assertThat(logTester.logs(Level.WARN)).contains( "Specifying module-relative paths at project level in property 'sonar.issue.ignore.multicriteria' is deprecated. To continue matching files like 'moduleA/src/sampleA.xoo', update this property so that patterns refer to project-relative paths."); List<Issue> issues = result.issuesFor(result.inputFile("moduleA/src/sampleA.xoo")); @@ -281,7 +287,7 @@ public class IssuesMediumIT { .build()) .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty(); + assertThat(logTester.logs(Level.WARN)).isEmpty(); result = tester.newAnalysis() .properties(ImmutableMap.<String, String>builder() @@ -296,7 +302,7 @@ public class IssuesMediumIT { .build()) .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly( + assertThat(logTester.logs(Level.WARN)).containsOnly( "Specifying issue exclusions at module level is not supported anymore. Configure the property 'sonar.issue.ignore.multicriteria' and any other issue exclusions at project level."); List<Issue> issues = result.issuesFor(result.inputFile("moduleA/src/sampleA.xoo")); @@ -323,7 +329,7 @@ public class IssuesMediumIT { .build()) .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty(); + assertThat(logTester.logs(Level.WARN)).isEmpty(); } @Test @@ -388,7 +394,7 @@ public class IssuesMediumIT { .build()) .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains( + assertThat(logTester.logs(Level.WARN)).contains( "Specifying module-relative paths at project level in property 'sonar.issue.enforce.multicriteria' is deprecated. To continue matching files like 'moduleA/src/sampleA.xoo', update this property so that patterns refer to project-relative paths."); List<Issue> issues = result.issuesFor(result.inputFile("moduleA/src/sampleA.xoo")); diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/PreviewMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/PreviewMediumIT.java index 6cd81792a93..456e6305626 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/PreviewMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/issues/PreviewMediumIT.java @@ -23,7 +23,7 @@ import com.google.common.collect.ImmutableMap; import org.junit.Rule; import org.junit.Test; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.ScannerMediumTester; import static org.assertj.core.api.Assertions.assertThat; diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/measures/MeasuresMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/measures/MeasuresMediumIT.java index c3f4fb1768e..3797de5c15a 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/measures/MeasuresMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/measures/MeasuresMediumIT.java @@ -25,13 +25,15 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; +import org.sonar.batch.bootstrapper.LogOutput; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.protocol.output.ScannerReport.Measure; @@ -42,10 +44,8 @@ import static org.assertj.core.api.Assertions.tuple; import static org.junit.Assert.fail; public class MeasuresMediumIT { - @Rule public LogTester logTester = new LogTester(); - @Rule public TemporaryFolder temp = new TemporaryFolder(); @@ -150,7 +150,7 @@ public class MeasuresMediumIT { .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Storing measures on folders or modules is deprecated. Provided value of metric 'tests' is ignored."); + assertThat(logTester.logs(Level.WARN)).contains("Storing measures on folders or modules is deprecated. Provided value of metric 'tests' is ignored."); } @Test @@ -176,7 +176,7 @@ public class MeasuresMediumIT { .execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Storing measures on folders or modules is deprecated. Provided value of metric 'tests' is ignored."); + assertThat(logTester.logs(Level.WARN)).contains("Storing measures on folders or modules is deprecated. Provided value of metric 'tests' is ignored."); } } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/scm/ScmMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/scm/ScmMediumIT.java index 04451bf92f0..776e5878069 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/scm/ScmMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/scm/ScmMediumIT.java @@ -31,8 +31,9 @@ import org.assertj.core.util.Files; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.SonarEdition; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.mediumtest.ScannerMediumTester.AnalysisBuilder; import org.sonar.scanner.protocol.output.FileStructure; @@ -150,7 +151,7 @@ public class ScmMediumIT { @Test public void log_files_with_missing_blame() throws IOException, URISyntaxException { - + logTester.setLevel(Level.DEBUG); File baseDir = prepareProject(); File xooFileWithoutBlame = new File(baseDir, "src/sample_no_blame.xoo"); FileUtils.write(xooFileWithoutBlame, "Sample xoo\ncontent\n3\n4\n5", StandardCharsets.UTF_8); @@ -183,7 +184,7 @@ public class ScmMediumIT { // SONAR-6397 @Test public void optimize_blame() throws IOException, URISyntaxException { - + logTester.setLevel(Level.DEBUG); File baseDir = prepareProject(); File changedContentScmOnServer = new File(baseDir, CHANGED_CONTENT_SCM_ON_SERVER_XOO); FileUtils.write(changedContentScmOnServer, SAMPLE_XOO_CONTENT + "\nchanged", StandardCharsets.UTF_8); diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tasks/TasksMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tasks/TasksMediumIT.java index 776a11575bf..35d86c2e634 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tasks/TasksMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tasks/TasksMediumIT.java @@ -24,7 +24,7 @@ import org.junit.Rule; import org.junit.Test; import org.sonar.api.Plugin; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.ScannerMediumTester; import static org.assertj.core.api.Assertions.assertThat; diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tests/GenericTestExecutionMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tests/GenericTestExecutionMediumIT.java index 86962f74824..4b0d80044fc 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tests/GenericTestExecutionMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/tests/GenericTestExecutionMediumIT.java @@ -26,6 +26,7 @@ import org.junit.Rule; import org.junit.Test; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.measures.CoreMetrics; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.mediumtest.AnalysisResult; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.xoo.XooPlugin; @@ -34,8 +35,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; public class GenericTestExecutionMediumIT { - private final List<String> logs = new ArrayList<>(); - + @Rule + public LogTester logTester = new LogTester(); @Rule public ScannerMediumTester tester = new ScannerMediumTester() .registerPlugin("xoo", new XooPlugin()) @@ -47,7 +48,6 @@ public class GenericTestExecutionMediumIT { File projectDir = new File("test-resources/mediumtest/xoo/sample-generic-test-exec"); AnalysisResult result = tester - .setLogOutput((msg, level) -> logs.add(msg)) .newAnalysis(new File(projectDir, "sonar-project.properties")) .property("sonar.testExecutionReportPaths", "unittest.xml") .execute(); @@ -61,7 +61,7 @@ public class GenericTestExecutionMediumIT { tuple(CoreMetrics.TEST_EXECUTION_TIME_KEY, 0, 1105L), tuple(CoreMetrics.TEST_FAILURES_KEY, 1, 0L)); - assertThat(logs).noneMatch(l -> l.contains("Please use 'sonar.testExecutionReportPaths'")); + assertThat(logTester.logs()).noneMatch(l -> l.contains("Please use 'sonar.testExecutionReportPaths'")); } @Test @@ -70,7 +70,6 @@ public class GenericTestExecutionMediumIT { File projectDir = new File("test-resources/mediumtest/xoo/sample-generic-test-exec"); AnalysisResult result = tester - .setLogOutput((msg, level) -> logs.add(msg)) .newAnalysis(new File(projectDir, "sonar-project.properties")) .property("sonar.testExecutionReportPaths", "unittest.xml,unittest2.xml") .execute(); @@ -84,7 +83,7 @@ public class GenericTestExecutionMediumIT { tuple(CoreMetrics.TEST_EXECUTION_TIME_KEY, 0, 1610L), tuple(CoreMetrics.TEST_FAILURES_KEY, 1, 0L)); - assertThat(logs).noneMatch(l -> l.contains("Please use 'sonar.testExecutionReportPaths'")); + assertThat(logTester.logs()).noneMatch(l -> l.contains("Please use 'sonar.testExecutionReportPaths'")); } } diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java index dec6960b3cb..3c401e86b22 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java @@ -41,6 +41,7 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.mockito.ArgumentCaptor; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; @@ -48,8 +49,7 @@ import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.scm.BlameCommand.BlameInput; import org.sonar.api.batch.scm.BlameCommand.BlameOutput; import org.sonar.api.batch.scm.BlameLine; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNDepth; import org.tmatesoft.svn.core.SVNURL; @@ -321,7 +321,7 @@ public class SvnBlameCommandIT { assertThrows(IllegalStateException.class, () -> { svnBlameCommand.blame(clientManager, inputFile, output); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Authentication to SVN server is required but no " + + assertThat(logTester.logs(Level.WARN)).contains("Authentication to SVN server is required but no " + "authentication data was passed to the scanner"); }); @@ -350,11 +350,8 @@ public class SvnBlameCommandIT { any(SVNRevision.class), any(SVNRevision.class), anyBoolean(), anyBoolean(), any(AnnotationHandler.class), eq(null)); - assertThrows(IllegalStateException.class, () -> { - svnBlameCommand.blame(clientManager, inputFile, output); - assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty(); - }); - + assertThrows(IllegalStateException.class, () -> svnBlameCommand.blame(clientManager, inputFile, output)); + assertThat(logTester.logs(Level.WARN)).contains("Authentication to SVN server is required but no authentication data was passed to the scanner"); } private static void javaUnzip(File zip, File toDir) { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java b/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java index cb2e3d0c96b..5eed107276d 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java @@ -77,7 +77,7 @@ public final class Batch { } private RuntimeException handleException(RuntimeException t) { - if (loggingConfig.isVerbose()) { + if (loggingConfig != null && loggingConfig.isVerbose()) { return t; } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/DefaultScannerWsClientTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/DefaultScannerWsClientTest.java index 1d5aed37812..84494037505 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/DefaultScannerWsClientTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/DefaultScannerWsClientTest.java @@ -28,9 +28,10 @@ import org.apache.commons.lang.StringUtils; import org.junit.Rule; import org.junit.Test; import org.mockito.Mockito; +import org.slf4j.event.Level; import org.sonar.api.notifications.AnalysisWarnings; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonarqube.ws.client.GetRequest; import org.sonarqube.ws.client.HttpException; @@ -69,7 +70,7 @@ public class DefaultScannerWsClientTest { assertThat(result).isSameAs(response); // check logs - List<String> debugLogs = logTester.logs(LoggerLevel.DEBUG); + List<String> debugLogs = logTester.logs(Level.DEBUG); assertThat(debugLogs).hasSize(1); assertThat(debugLogs.get(0)).contains("GET 200 https://local/api/issues/search | time="); } @@ -149,7 +150,7 @@ public class DefaultScannerWsClientTest { underTest.call(request); // check logs - List<String> warningLogs = logTester.logs(LoggerLevel.WARN); + List<String> warningLogs = logTester.logs(Level.WARN); assertThat(warningLogs).hasSize(2); assertThat(warningLogs.get(0)).contains("The token used for this analysis will expire on: " + fiveDaysLatter.format(DateTimeFormatter.ofPattern("MMMM dd, yyyy"))); assertThat(warningLogs.get(1)).contains("Analysis executed with this token will fail after the expiration date."); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/GlobalConfigurationProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/GlobalConfigurationProviderTest.java index 9936994fce3..1e0d36b8bc0 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/GlobalConfigurationProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/GlobalConfigurationProviderTest.java @@ -26,7 +26,7 @@ import org.junit.Rule; import org.junit.Test; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cache/DefaultAnalysisCacheLoaderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cache/DefaultAnalysisCacheLoaderTest.java index 52bc139c101..7b9c8506b81 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cache/DefaultAnalysisCacheLoaderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cache/DefaultAnalysisCacheLoaderTest.java @@ -33,7 +33,7 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.sonar.api.scanner.fs.InputProject; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.bootstrap.DefaultScannerWsClient; import org.sonar.scanner.protocol.internal.ScannerInternal.SensorCacheEntry; import org.sonar.scanner.protocol.internal.SensorCacheData; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CirrusCiTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CirrusCiTest.java index 27be416a12b..b40faeb0b9b 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CirrusCiTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CirrusCiTest.java @@ -22,9 +22,9 @@ package org.sonar.scanner.ci.vendors; import javax.annotation.Nullable; import org.junit.Rule; import org.junit.Test; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import org.sonar.scanner.ci.CiConfiguration; import org.sonar.scanner.ci.CiVendor; @@ -77,7 +77,7 @@ public class CirrusCiTest { CiConfiguration configuration = underTest.loadConfiguration(); assertThat(configuration.getScmRevision()).isEmpty(); - assertThat(logs.logs(LoggerLevel.WARN)).contains("Missing environment variable CIRRUS_CHANGE_IN_REPO"); + assertThat(logs.logs(Level.WARN)).contains("Missing environment variable CIRRUS_CHANGE_IN_REPO"); } private void setEnvVariable(String key, @Nullable String value) { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CodeMagicTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CodeMagicTest.java index 95ee135bb95..8eef19bce63 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CodeMagicTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/CodeMagicTest.java @@ -23,9 +23,9 @@ import java.util.List; import javax.annotation.Nullable; import org.junit.Rule; import org.junit.Test; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import org.sonar.scanner.ci.CiConfiguration; import org.sonar.scanner.ci.CiVendor; @@ -71,7 +71,7 @@ public class CodeMagicTest { setEnvVariable("FCI_BUILD_ID", "1"); CiConfiguration ciConfiguration = underTest.loadConfiguration(); - List<String> logs = logTester.logs(LoggerLevel.WARN); + List<String> logs = logTester.logs(Level.WARN); assertThat(ciConfiguration.getScmRevision()).isEmpty(); assertThat(logs).hasSize(1); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/GithubActionsTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/GithubActionsTest.java index 690bc23aee5..f37622fa210 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/GithubActionsTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ci/vendors/GithubActionsTest.java @@ -22,9 +22,9 @@ package org.sonar.scanner.ci.vendors; import javax.annotation.Nullable; import org.junit.Rule; import org.junit.Test; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import org.sonar.scanner.ci.CiVendor; import static org.assertj.core.api.Assertions.assertThat; @@ -66,7 +66,7 @@ public class GithubActionsTest { setEnvVariable("GITHUB_ACTION", "build"); assertThat(underTest.loadConfiguration().getScmRevision()).isEmpty(); - assertThat(logs.logs(LoggerLevel.WARN)).contains("Missing environment variable GITHUB_SHA"); + assertThat(logs.logs(Level.WARN)).contains("Missing environment variable GITHUB_SHA"); } private void setEnvVariable(String key, @Nullable String value) { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/config/DefaultConfigurationTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/config/DefaultConfigurationTest.java index dc74cad4abd..c1865c579a0 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/config/DefaultConfigurationTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/config/DefaultConfigurationTest.java @@ -23,14 +23,14 @@ import com.google.common.collect.ImmutableMap; import java.util.Arrays; import org.junit.Rule; import org.junit.Test; +import org.slf4j.event.Level; import org.sonar.api.config.Configuration; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.PropertyFieldDefinition; import org.sonar.api.config.internal.Encryption; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; @@ -50,14 +50,14 @@ public class DefaultConfigurationTest { }; assertThat(config.get("multiA")).hasValue("a,b"); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains( "Access to the multi-values/property set property 'multiA' should be made using 'getStringArray' method. The SonarQube plugin using this property should be updated."); logTester.clear(); assertThat(config.getStringArray("single")).containsExactly("foo"); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains( "Property 'single' is not declared as multi-values/property set but was read using 'getStringArray' method. The SonarQube plugin declaring this property should be updated."); @@ -65,7 +65,7 @@ public class DefaultConfigurationTest { assertThat(config.get("notDeclared")).hasValue("c,d"); assertThat(config.getStringArray("notDeclared")).containsExactly("c", "d"); - assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty(); + assertThat(logTester.logs(Level.WARN)).isEmpty(); } @Test @@ -77,14 +77,14 @@ public class DefaultConfigurationTest { }; assertThat(config.get("props")).hasValue("1,2"); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains( "Access to the multi-values/property set property 'props' should be made using 'getStringArray' method. The SonarQube plugin using this property should be updated."); logTester.clear(); assertThat(config.getStringArray("props")).containsExactly("1", "2"); - assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty(); + assertThat(logTester.logs(Level.WARN)).isEmpty(); } @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java index 97e6faf3d97..13ec7ccec33 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java @@ -35,12 +35,12 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.mockito.ArgumentMatchers; +import org.slf4j.event.Level; import org.sonar.api.SonarRuntime; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputProject; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.core.util.CloseableIterator; import org.sonar.duplications.block.Block; import org.sonar.duplications.block.ByteArray; @@ -141,7 +141,7 @@ public class CpdExecutorTest { Duplication[] dups = readDuplications(1); assertThat(dups[0].getDuplicateList()).hasSize(CpdExecutor.MAX_CLONE_PART_PER_GROUP); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains("Too many duplication references on file " + batchComponent1 + " for block at line 0. Keep only the first " + CpdExecutor.MAX_CLONE_PART_PER_GROUP + " references."); } @@ -159,7 +159,7 @@ public class CpdExecutorTest { assertThat(reader.readComponentDuplications(batchComponent1.scannerId())).toIterable().hasSize(CpdExecutor.MAX_CLONE_GROUP_PER_FILE); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains("Too many duplication groups on file " + batchComponent1 + ". Keep only the first " + CpdExecutor.MAX_CLONE_GROUP_PER_FILE + " groups."); } @@ -203,7 +203,7 @@ public class CpdExecutorTest { verify(executorService).shutdown(); verifyNoMoreInteractions(executorService); readDuplications(batchComponent1, 0); - assertThat(logTester.logs(LoggerLevel.ERROR)).contains("Resource not found in component store: unknown. Skipping CPD computation for it"); + assertThat(logTester.logs(Level.ERROR)).contains("Resource not found in component store: unknown. Skipping CPD computation for it"); } @Test @@ -217,7 +217,7 @@ public class CpdExecutorTest { executor.execute(1); readDuplications(0); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .usingElementComparator((l, r) -> l.matches(r) ? 0 : 1) .containsOnly( "Timeout during detection of duplications for .*Foo.php"); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ExternalIssueImporterTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ExternalIssueImporterTest.java index 75fe15385d2..315991b93fb 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ExternalIssueImporterTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/ExternalIssueImporterTest.java @@ -26,14 +26,14 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.TextRange; -import org.sonar.api.batch.rule.Severity; -import org.sonar.api.batch.sensor.issue.ExternalIssue; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; +import org.sonar.api.batch.rule.Severity; import org.sonar.api.batch.sensor.internal.SensorContextTester; +import org.sonar.api.batch.sensor.issue.ExternalIssue; +import org.sonar.api.testfixtures.log.LogTester; import static java.nio.charset.StandardCharsets.UTF_8; import static org.apache.commons.lang.ObjectUtils.defaultIfNull; @@ -72,7 +72,7 @@ public class ExternalIssueImporterTest { assertThat(context.allExternalIssues()).isEmpty(); assertThat(context.allIssues()).isEmpty(); - assertThat(logs.logs(LoggerLevel.INFO)).contains("Imported 0 issues in 0 files"); + assertThat(logs.logs(Level.INFO)).contains("Imported 0 issues in 0 files"); } @Test @@ -97,7 +97,7 @@ public class ExternalIssueImporterTest { assertThat(output.ruleId()).isEqualTo(input.ruleId); assertThat(output.severity()).isEqualTo(Severity.valueOf(input.severity)); assertThat(output.remediationEffort()).isNull(); - assertThat(logs.logs(LoggerLevel.INFO)).contains("Imported 1 issue in 1 file"); + assertThat(logs.logs(Level.INFO)).contains("Imported 1 issue in 1 file"); } @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/DefaultSarif210ImporterTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/DefaultSarif210ImporterTest.java index a3cc9ced05f..e8cf14b5adb 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/DefaultSarif210ImporterTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/DefaultSarif210ImporterTest.java @@ -28,9 +28,9 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.event.Level; import org.sonar.api.batch.sensor.issue.NewExternalIssue; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.core.sarif.Run; import org.sonar.core.sarif.Sarif210; @@ -95,7 +95,7 @@ public class DefaultSarif210ImporterTest extends TestCase { assertThat(sarifImportResults.getSuccessFullyImportedIssues()).isOne(); assertThat(sarifImportResults.getSuccessFullyImportedRuns()).isOne(); assertThat(sarifImportResults.getFailedRuns()).isOne(); - assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly("Failed to import a sarif run, error: " + testException.getMessage()); + assertThat(logTester.logs(Level.WARN)).containsOnly("Failed to import a sarif run, error: " + testException.getMessage()); verify(issue1run2).save(); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RulesSeverityDetectorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RulesSeverityDetectorTest.java index 5a4f128f92c..a06e2324ff5 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RulesSeverityDetectorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RulesSeverityDetectorTest.java @@ -24,8 +24,9 @@ import java.util.Set; import org.assertj.core.api.Assertions; import org.assertj.core.groups.Tuple; import org.junit.Test; +import org.slf4j.event.Level; import org.sonar.api.batch.rule.Severity; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.core.sarif.DefaultConfiguration; import org.sonar.core.sarif.Driver; @@ -153,7 +154,7 @@ public class RulesSeverityDetectorTest { private void assertWarningLog(String driverName, Severity defaultSeverity) { assertThat(logTester.logs()).hasSize(1); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .containsOnly(format(UNSUPPORTED_RULE_SEVERITIES_WARNING, driverName, defaultSeverity)); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RunMapperTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RunMapperTest.java index eb10e4d2995..6146886d1fe 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RunMapperTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RunMapperTest.java @@ -30,9 +30,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.event.Level; import org.sonar.api.batch.sensor.issue.NewExternalIssue; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.core.sarif.Result; import org.sonar.core.sarif.Run; @@ -106,7 +106,7 @@ public class RunMapperTest { assertThat(newExternalIssues) .containsExactly(externalIssue2); - assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly("Failed to import an issue raised by tool Test driver, error: test"); + assertThat(logTester.logs(Level.WARN)).containsOnly("Failed to import an issue raised by tool Test driver, error: test"); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/SarifIssuesImportSensorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/SarifIssuesImportSensorTest.java index ccffa0e353a..533e05d9711 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/SarifIssuesImportSensorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/SarifIssuesImportSensorTest.java @@ -22,19 +22,18 @@ package org.sonar.scanner.externalissue.sarif; import com.google.common.collect.MoreCollectors; import java.nio.file.Path; import java.util.Optional; -import java.util.stream.Collectors; import org.apache.commons.lang.math.RandomUtils; -import org.jetbrains.annotations.NotNull; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.event.Level; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.config.internal.MapSettings; -import org.sonar.api.utils.log.LogAndArguments; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogAndArguments; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.core.sarif.Sarif210; import org.sonar.core.sarif.SarifSerializer; @@ -80,7 +79,7 @@ public class SarifIssuesImportSensorTest { verify(sarifImporter).importSarif(reportAndResults.getSarifReport()); - assertThat(logTester.logs(LoggerLevel.INFO)).hasSize(1); + assertThat(logTester.logs(Level.INFO)).hasSize(1); assertSummaryIsCorrectlyDisplayed(FILE_1, reportAndResults.getSarifImportResults()); } @@ -115,7 +114,7 @@ public class SarifIssuesImportSensorTest { sensor.execute(sensorContext); verify(sarifImporter).importSarif(reportAndResults2.getSarifReport()); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Failed to process SARIF report from file 'path/to/sarif/file.sarif', error: 'import failed'"); + assertThat(logTester.logs(Level.WARN)).contains("Failed to process SARIF report from file 'path/to/sarif/file.sarif', error: 'import failed'"); assertSummaryIsCorrectlyDisplayed(FILE_2, reportAndResults2.getSarifImportResults()); } @@ -130,7 +129,7 @@ public class SarifIssuesImportSensorTest { sensor.execute(sensorContext); verify(sarifImporter).importSarif(reportAndResults2.getSarifReport()); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Failed to process SARIF report from file 'path/to/sarif/file.sarif', error: 'deserialization failed'"); + assertThat(logTester.logs(Level.WARN)).contains("Failed to process SARIF report from file 'path/to/sarif/file.sarif', error: 'deserialization failed'"); assertSummaryIsCorrectlyDisplayed(FILE_2, reportAndResults2.getSarifImportResults()); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageReportParserTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageReportParserTest.java index 043c1a7d5d2..a37dd222edf 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageReportParserTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageReportParserTest.java @@ -26,12 +26,13 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import static org.assertj.core.api.Assertions.assertThat; @@ -48,6 +49,7 @@ public class GenericCoverageReportParserTest { @Before public void before() { + logs.setLevel(Level.DEBUG); context = SensorContextTester.create(new File("")); fileWithBranches = setupFile("src/main/java/com/example/ClassWithBranches.java"); fileWithoutBranch = setupFile("src/main/java/com/example/ClassWithoutBranch.java"); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageSensorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageSensorTest.java index b2648a575a1..0e6329b4bfc 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageSensorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericCoverageSensorTest.java @@ -27,7 +27,7 @@ import org.junit.Test; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.internal.Encryption; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.config.DefaultConfiguration; import org.sonar.scanner.scan.ProjectConfiguration; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionReportParserTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionReportParserTest.java index 73688ea4884..27974475c29 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionReportParserTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionReportParserTest.java @@ -26,12 +26,13 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.deprecated.test.DefaultTestCase; import org.sonar.scanner.deprecated.test.DefaultTestPlan; import org.sonar.scanner.deprecated.test.TestPlanBuilder; @@ -50,6 +51,7 @@ public class GenericTestExecutionReportParserTest { public TemporaryFolder temp = new TemporaryFolder(); @Rule public LogTester logs = new LogTester(); + private TestPlanBuilder testPlanBuilder; private DefaultInputFile fileWithBranches; private DefaultInputFile emptyFile; @@ -58,6 +60,7 @@ public class GenericTestExecutionReportParserTest { @Before public void before() { + logs.setLevel(Level.DEBUG); context = SensorContextTester.create(new File("")); fileWithBranches = setupFile("src/main/java/com/example/ClassWithBranches.java"); emptyFile = setupFile("src/main/java/com/example/EmptyClass.java"); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionSensorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionSensorTest.java index fbd4f88228a..8712d9aff68 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionSensorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/genericcoverage/GenericTestExecutionSensorTest.java @@ -28,12 +28,12 @@ import org.apache.commons.io.FileUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.internal.Encryption; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.config.DefaultConfiguration; import org.sonar.scanner.deprecated.test.TestPlanBuilder; import org.sonar.scanner.scan.ProjectConfiguration; @@ -62,11 +62,11 @@ public class GenericTestExecutionSensorTest { DefaultConfiguration config = new ProjectConfiguration(defs, new Encryption(null), settings); new GenericTestExecutionSensor(mock(TestPlanBuilder.class), config).execute(context); - assertThat(logTester.logs(LoggerLevel.WARN)).contains( + assertThat(logTester.logs(Level.WARN)).contains( "Using 'unitTest' as root element of the report is deprecated. Please change to 'testExecutions'.", "Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead."); - assertThat(logTester.logs(LoggerLevel.INFO)).contains( + assertThat(logTester.logs(Level.INFO)).contains( "Imported test execution data for 0 files", "Test execution data ignored for 1 unknown files, including:\nA.java"); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/IgnoreIssuesFilterTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/IgnoreIssuesFilterTest.java index 4c232592e10..6007ef1e617 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/IgnoreIssuesFilterTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/IgnoreIssuesFilterTest.java @@ -30,7 +30,7 @@ import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.rule.RuleKey; import org.sonar.api.scan.issue.filter.IssueFilterChain; import org.sonar.api.utils.WildcardPattern; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.issue.DefaultFilterableIssue; import static java.util.Collections.singleton; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/ModuleSensorsExecutorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/ModuleSensorsExecutorTest.java index e77cb6dbe19..53c3884aa60 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/ModuleSensorsExecutorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/ModuleSensorsExecutorTest.java @@ -37,7 +37,7 @@ import org.sonar.api.batch.sensor.Sensor; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.bootstrap.ScannerPluginRepository; import org.sonar.scanner.fs.InputModuleHierarchy; import org.sonar.scanner.scan.branch.BranchConfiguration; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java index 8a73051b7cf..558b2b4f4b5 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java @@ -28,8 +28,9 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentMatcher; import org.mockito.Mockito; +import org.slf4j.event.Level; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.bootstrap.DefaultScannerWsClient; import org.sonar.scanner.bootstrap.GlobalAnalysisMode; import org.sonar.scanner.report.CeTaskReportDataHolder; @@ -64,6 +65,7 @@ public class QualityGateCheckTest { @Before public void before() { + logTester.setLevel(Level.DEBUG); when(reportMetadataHolder.getCeTaskId()).thenReturn("task-1234"); when(reportMetadataHolder.getDashboardUrl()).thenReturn("http://dashboard-url.com"); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java index 8ee25330d28..605d8e7787e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java @@ -35,7 +35,7 @@ import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.core.platform.PluginInfo; import org.sonar.scanner.bootstrap.GlobalServerSettings; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ChangedLinesPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ChangedLinesPublisherTest.java index d9de9f51e4b..f18dfb97713 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ChangedLinesPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ChangedLinesPublisherTest.java @@ -35,7 +35,7 @@ import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputProject; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.scm.ScmProvider; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.fs.InputModuleHierarchy; import org.sonar.scanner.protocol.output.FileStructure; import org.sonar.scanner.protocol.output.ScannerReportReader; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java index ffbe3971c1a..0e45609e294 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java @@ -23,22 +23,21 @@ import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.nio.charset.StandardCharsets; -import java.nio.file.Path; import java.util.List; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; +import org.slf4j.event.Level; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.impl.utils.JUnitTempFolder; import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.platform.Server; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.TempFolder; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import org.sonar.scanner.bootstrap.DefaultScannerWsClient; import org.sonar.scanner.bootstrap.GlobalAnalysisMode; import org.sonar.scanner.fs.InputModuleHierarchy; @@ -89,6 +88,7 @@ public class ReportPublisherTest { @Before public void setUp() { + logTester.setLevel(Level.DEBUG); root = new DefaultInputModule( ProjectDefinition.create().setKey("org.sonarsource.sonarqube:sonarqube").setBaseDir(reportTempFolder.newDir()).setWorkDir(reportTempFolder.getRoot())); when(moduleHierarchy.root()).thenReturn(root); @@ -245,7 +245,7 @@ public class ReportPublisherTest { underTest.start(); underTest.execute(); - assertThat(logTester.logs(LoggerLevel.INFO)) + assertThat(logTester.logs(Level.INFO)) .contains("ANALYSIS SUCCESSFUL") .doesNotContain("dashboard/index"); @@ -264,9 +264,9 @@ public class ReportPublisherTest { underTest.execute(); assertThat(properties.metadataFilePath()).exists(); - assertThat(logTester.logs(LoggerLevel.DEBUG)) + assertThat(logTester.logs(Level.DEBUG)) .contains("Report metadata written to " + properties.metadataFilePath()); - assertThat(logTester.logs(LoggerLevel.INFO)) + assertThat(logTester.logs(Level.INFO)) .contains("ANALYSIS SUCCESSFUL, you can find the results at: https://publicserver/sonarqube/dashboard?id=org.sonarsource.sonarqube%3Asonarqube") .contains("More about the report processing at https://publicserver/sonarqube/api/ce/task?id=TASK-123"); } @@ -276,7 +276,7 @@ public class ReportPublisherTest { underTest.prepareAndDumpMetadata("TASK-123"); assertThat(properties.metadataFilePath()).exists(); - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains("Report metadata written to " + properties.metadataFilePath()); + assertThat(logTester.logs(Level.DEBUG)).contains("Report metadata written to " + properties.metadataFilePath()); } @Test @@ -385,7 +385,7 @@ public class ReportPublisherTest { underTest.start(); underTest.execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty(); + assertThat(logTester.logs(Level.WARN)).isEmpty(); verifyNoInteractions(analysisWarnings); } @@ -397,7 +397,7 @@ public class ReportPublisherTest { underTest.start(); underTest.execute(); - assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly(SUPPORT_OF_32_BIT_JRE_IS_DEPRECATED_MESSAGE); + assertThat(logTester.logs(Level.WARN)).containsOnly(SUPPORT_OF_32_BIT_JRE_IS_DEPRECATED_MESSAGE); verify(analysisWarnings).addUnique(SUPPORT_OF_32_BIT_JRE_IS_DEPRECATED_MESSAGE); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java index 2e99bca7c72..651a1ba4fe6 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java @@ -26,7 +26,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.sonar.api.utils.DateUtils; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.bootstrap.ScannerProperties; import org.sonar.scanner.rule.QualityProfiles; import org.sonarqube.ws.Qualityprofiles.SearchWsResponse.QualityProfile; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/DeprecatedPropertiesWarningGeneratorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/DeprecatedPropertiesWarningGeneratorTest.java index f584add964d..f41b334a278 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/DeprecatedPropertiesWarningGeneratorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/DeprecatedPropertiesWarningGeneratorTest.java @@ -24,11 +24,11 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.mockito.Mockito; +import org.slf4j.event.Level; import org.sonar.api.CoreProperties; import org.sonar.api.config.internal.MapSettings; import org.sonar.api.notifications.AnalysisWarnings; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.batch.bootstrapper.EnvironmentInformation; import static org.mockito.Mockito.times; @@ -65,7 +65,7 @@ public class DeprecatedPropertiesWarningGeneratorTest { underTest.execute(); verify(analysisWarnings, times(1)).addUnique(LOGIN_WARN_MESSAGE); - Assertions.assertThat(logger.logs(LoggerLevel.WARN)).contains(LOGIN_WARN_MESSAGE); + Assertions.assertThat(logger.logs(Level.WARN)).contains(LOGIN_WARN_MESSAGE); } @Test @@ -76,7 +76,7 @@ public class DeprecatedPropertiesWarningGeneratorTest { underTest.execute(); verify(analysisWarnings, times(1)).addUnique(PASSWORD_WARN_MESSAGE); - Assertions.assertThat(logger.logs(LoggerLevel.WARN)).contains(PASSWORD_WARN_MESSAGE); + Assertions.assertThat(logger.logs(Level.WARN)).contains(PASSWORD_WARN_MESSAGE); } @Test @@ -87,7 +87,7 @@ public class DeprecatedPropertiesWarningGeneratorTest { underTest.execute(); verify(analysisWarnings, times(1)).addUnique(LOGIN_WARN_MESSAGE + SCANNER_DOTNET_WARN_MESSAGE); - Assertions.assertThat(logger.logs(LoggerLevel.WARN)).contains(LOGIN_WARN_MESSAGE + SCANNER_DOTNET_WARN_MESSAGE); + Assertions.assertThat(logger.logs(Level.WARN)).contains(LOGIN_WARN_MESSAGE + SCANNER_DOTNET_WARN_MESSAGE); } @Test @@ -99,7 +99,7 @@ public class DeprecatedPropertiesWarningGeneratorTest { underTest.execute(); verify(analysisWarnings, times(1)).addUnique(PASSWORD_WARN_MESSAGE + SCANNER_DOTNET_WARN_MESSAGE); - Assertions.assertThat(logger.logs(LoggerLevel.WARN)).contains(PASSWORD_WARN_MESSAGE + SCANNER_DOTNET_WARN_MESSAGE); + Assertions.assertThat(logger.logs(Level.WARN)).contains(PASSWORD_WARN_MESSAGE + SCANNER_DOTNET_WARN_MESSAGE); } @Test @@ -107,7 +107,7 @@ public class DeprecatedPropertiesWarningGeneratorTest { underTest.execute(); verifyNoInteractions(analysisWarnings); - Assertions.assertThat(logger.logs(LoggerLevel.WARN)).isEmpty(); + Assertions.assertThat(logger.logs(Level.WARN)).isEmpty(); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorBuilderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorBuilderTest.java index 01414c30e3d..4617699e4c9 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorBuilderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorBuilderTest.java @@ -35,7 +35,7 @@ import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.bootstrap.ProjectReactor; import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.bootstrap.ScannerProperties; import static java.util.Collections.emptyMap; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java index 58e6e4510ea..9fe39d63f1b 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java @@ -33,7 +33,7 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.bootstrap.ProjectReactor; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.core.config.ScannerProperties; import org.sonar.scanner.ProjectInfo; import org.sonar.scanner.bootstrap.GlobalConfiguration; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/AbstractExclusionFiltersTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/AbstractExclusionFiltersTest.java index b36fadbb848..cfe8cd20d32 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/AbstractExclusionFiltersTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/AbstractExclusionFiltersTest.java @@ -26,13 +26,13 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.IndexedFile; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultIndexedFile; import org.sonar.api.config.internal.MapSettings; import org.sonar.api.notifications.AnalysisWarnings; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -74,8 +74,8 @@ public class AbstractExclusionFiltersTest { String expectedWarn = "Use of sonar.tests.inclusions detected. " + "While being taken into account, the only supported property is sonar.test.inclusions. Consider updating your configuration."; - assertThat( logTester.logs(LoggerLevel.WARN) ).hasSize(1) - .contains(expectedWarn); + assertThat(logTester.logs(Level.WARN)).hasSize(1) + .contains(expectedWarn); verify(analysisWarnings).addUnique(expectedWarn); } @@ -93,15 +93,15 @@ public class AbstractExclusionFiltersTest { String expectedWarn = "Use of sonar.tests.exclusions detected. " + "While being taken into account, the only supported property is sonar.test.exclusions. Consider updating your configuration."; - assertThat( logTester.logs(LoggerLevel.WARN) ).hasSize(1) + assertThat(logTester.logs(Level.WARN)).hasSize(1) .contains(expectedWarn); verify(analysisWarnings).addUnique(expectedWarn); } @Test - public void should_keepLegacyValue_when_legacyAndAliasPropertiesAreUsedForTestInclusions(){ + public void should_keepLegacyValue_when_legacyAndAliasPropertiesAreUsedForTestInclusions() { settings.setProperty(PROJECT_TESTS_INCLUSIONS_PROPERTY, "**/*Dao.java"); - settings.setProperty(PROJECT_TEST_INCLUSIONS_PROPERTY,"**/*Dto.java"); + settings.setProperty(PROJECT_TEST_INCLUSIONS_PROPERTY, "**/*Dto.java"); AbstractExclusionFilters filter = new AbstractExclusionFilters(analysisWarnings, settings.asConfig()::getStringArray) { }; @@ -112,15 +112,15 @@ public class AbstractExclusionFiltersTest { assertThat(filter.isIncluded(indexedFile.path(), Paths.get(indexedFile.relativePath()), InputFile.Type.TEST)).isTrue(); String expectedWarn = "Use of sonar.test.inclusions and sonar.tests.inclusions at the same time. sonar.test.inclusions is taken into account. Consider updating your configuration"; - assertThat( logTester.logs(LoggerLevel.WARN) ).hasSize(1) + assertThat(logTester.logs(Level.WARN)).hasSize(1) .contains(expectedWarn); verify(analysisWarnings).addUnique(expectedWarn); } @Test - public void should_keepLegacyValue_when_legacyAndAliasPropertiesAreUsedForTestExclusions(){ + public void should_keepLegacyValue_when_legacyAndAliasPropertiesAreUsedForTestExclusions() { settings.setProperty(PROJECT_TESTS_EXCLUSIONS_PROPERTY, "**/*Dao.java"); - settings.setProperty(PROJECT_TEST_EXCLUSIONS_PROPERTY,"**/*Dto.java"); + settings.setProperty(PROJECT_TEST_EXCLUSIONS_PROPERTY, "**/*Dto.java"); AbstractExclusionFilters filter = new AbstractExclusionFilters(analysisWarnings, settings.asConfig()::getStringArray) { }; @@ -131,7 +131,7 @@ public class AbstractExclusionFiltersTest { assertThat(filter.isExcluded(indexedFile.path(), Paths.get(indexedFile.relativePath()), InputFile.Type.TEST)).isTrue(); String expectedWarn = "Use of sonar.test.exclusions and sonar.tests.exclusions at the same time. sonar.test.exclusions is taken into account. Consider updating your configuration"; - assertThat( logTester.logs(LoggerLevel.WARN) ).hasSize(1) + assertThat(logTester.logs(Level.WARN)).hasSize(1) .contains(expectedWarn); verify(analysisWarnings).addUnique(expectedWarn); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorTest.java index df139587912..5fffbc1202f 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorTest.java @@ -99,7 +99,7 @@ public class MetadataGeneratorTest { DefaultInputFile inputFile = createInputFileWithMetadata(tempFile); assertThat(inputFile.lines()).isEqualTo(3); assertThat(inputFile.nonBlankLines()).isEqualTo(3); - assertThat(inputFile.hash()).isEqualTo(md5Hex("foo\nbar\nbaz")); + assertThat(inputFile.md5Hash()).isEqualTo(md5Hex("foo\nbar\nbaz")); assertThat(inputFile.originalLineStartOffsets()).containsOnly(0, 4, 9); assertThat(inputFile.originalLineEndOffsets()).containsOnly(3, 7, 12); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/ScmConfigurationTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/ScmConfigurationTest.java index 8bf50b199c7..80017adbbbc 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/ScmConfigurationTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/ScmConfigurationTest.java @@ -27,12 +27,13 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; +import org.slf4j.event.Level; import org.sonar.api.CoreProperties; import org.sonar.api.batch.scm.ScmProvider; import org.sonar.api.config.Configuration; import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.utils.MessageException; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.core.config.ScannerProperties; import org.sonar.scanner.fs.InputModuleHierarchy; @@ -96,6 +97,7 @@ public class ScmConfigurationTest { @Test public void log_when_disabled() { + logTester.setLevel(Level.DEBUG); when(settings.getBoolean(CoreProperties.SCM_DISABLED_KEY)).thenReturn(Optional.of(true)); underTest.start(); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/UnchangedFilesHandlerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/UnchangedFilesHandlerTest.java index a9fff0e97c3..ff789c27e61 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/UnchangedFilesHandlerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/UnchangedFilesHandlerTest.java @@ -22,11 +22,12 @@ package org.sonar.scanner.sensor; import javax.annotation.Nullable; import org.junit.Rule; import org.junit.Test; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.config.Configuration; import org.sonar.api.config.internal.MapSettings; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scanner.scan.branch.BranchConfiguration; import org.sonar.scanner.scan.branch.DefaultBranchConfiguration; @@ -54,6 +55,7 @@ public class UnchangedFilesHandlerTest { @Test public void not_active_if_its_pr() { + logTester.setLevel(Level.DEBUG); BranchConfiguration prConfig = branchConfiguration(null, null, true); UnchangedFilesHandler handler = new UnchangedFilesHandler(enabledConfig, prConfig, executingSensorContext); assertThat(logTester.logs()).contains("Optimization for unchanged files not enabled because it's not an analysis of a branch with a previous analysis"); @@ -64,6 +66,7 @@ public class UnchangedFilesHandlerTest { @Test public void not_active_if_using_different_reference() { + logTester.setLevel(Level.DEBUG); BranchConfiguration differentRefConfig = branchConfiguration("a", "b", false); UnchangedFilesHandler handler = new UnchangedFilesHandler(enabledConfig, differentRefConfig, executingSensorContext); assertThat(logTester.logs()).contains("Optimization for unchanged files not enabled because it's not an analysis of a branch with a previous analysis"); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java index cf3758c35ff..d7cbf83287e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java @@ -26,7 +26,8 @@ import org.junit.Test; import org.junit.rules.DisableOnDebug; import org.junit.rules.TestRule; import org.junit.rules.Timeout; -import org.sonar.api.utils.log.LogTester; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import static org.assertj.core.api.Assertions.assertThat; @@ -56,10 +57,12 @@ public class ProgressReportTest { } @Test - public void do_log() { + public void do_log() throws InterruptedException { + logTester.setLevel(Level.DEBUG); underTest.start("start"); underTest.message("Some message"); boolean logged = false; + Thread.sleep(1000); while (!logged) { logged = logTester.logs().contains("Some message"); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java index 088ee40d541..1bdb7713045 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandTest.java @@ -41,6 +41,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultFileSystem; import org.sonar.api.batch.fs.internal.DefaultInputFile; @@ -49,11 +50,10 @@ import org.sonar.api.batch.scm.BlameCommand; import org.sonar.api.batch.scm.BlameLine; import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.scan.filesystem.PathResolver; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; import org.sonar.scm.git.strategy.BlameStrategy; import org.sonar.scm.git.strategy.DefaultBlameStrategy.BlameAlgorithmEnum; @@ -95,6 +95,7 @@ public class CompositeBlameCommandTest { @Test public void use_jgit_if_native_git_disabled() throws IOException { + logTester.setLevel(Level.DEBUG); NativeGitBlameCommand gitCmd = new NativeGitBlameCommand("invalidcommandnotfound", System2.INSTANCE, processWrapperFactory); BlameCommand blameCmd = new CompositeBlameCommand(analysisWarnings, pathResolver, jGitBlameCommand, gitCmd, (p, f) -> GIT_NATIVE_BLAME); File projectDir = createNewTempFolder(); @@ -105,7 +106,7 @@ public class CompositeBlameCommandTest { TestBlameOutput output = new TestBlameOutput(); blameCmd.blame(input, output); - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains("Using GIT_NATIVE_BLAME strategy to blame files"); + assertThat(logTester.logs(Level.DEBUG)).contains("Using GIT_NATIVE_BLAME strategy to blame files"); assertThat(output.blame).hasSize(1); assertThat(output.blame.get(input.filesToBlame().iterator().next())).hasSize(29); } @@ -129,6 +130,7 @@ public class CompositeBlameCommandTest { @Test public void fallback_to_jgit_if_native_git_fails() throws Exception { + logTester.setLevel(Level.DEBUG); NativeGitBlameCommand gitCmd = mock(NativeGitBlameCommand.class); BlameCommand blameCmd = new CompositeBlameCommand(analysisWarnings, pathResolver, jGitBlameCommand, gitCmd, (p, f) -> GIT_NATIVE_BLAME); File projectDir = createNewTempFolder(); @@ -141,7 +143,7 @@ public class CompositeBlameCommandTest { TestBlameOutput output = new TestBlameOutput(); blameCmd.blame(input, output); - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains("Using GIT_NATIVE_BLAME strategy to blame files"); + assertThat(logTester.logs(Level.DEBUG)).contains("Using GIT_NATIVE_BLAME strategy to blame files"); assertThat(output.blame).hasSize(1); assertThat(output.blame.get(input.filesToBlame().iterator().next())).hasSize(29); @@ -190,7 +192,7 @@ public class CompositeBlameCommandTest { assertThat(output.blame).isEmpty(); verifyNoInteractions(jgit); - assertThat(logTester.logs(LoggerLevel.WARN)) + assertThat(logTester.logs(Level.WARN)) .contains("Could not find HEAD commit"); } @@ -282,7 +284,7 @@ public class CompositeBlameCommandTest { blameCommand.blame(input, output); assertThat(logTester.logs()) - .haveAtLeastOne(new Condition<>(s-> s.startsWith("This git repository references another local repository which is not well supported"), + .haveAtLeastOne(new Condition<>(s -> s.startsWith("This git repository references another local repository which is not well supported"), "log for reference detected")); // contains commits referenced from the old clone and commits in the new clone diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitIgnoreCommandTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitIgnoreCommandTest.java index ee1730b191b..65d63fbc19d 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitIgnoreCommandTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitIgnoreCommandTest.java @@ -32,7 +32,8 @@ import org.eclipse.jgit.lib.Repository; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import org.sonar.api.utils.log.LogTester; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import static java.nio.charset.StandardCharsets.UTF_8; @@ -88,7 +89,7 @@ public class GitIgnoreCommandTest { .isFalse(); int expectedIncludedFiles = (int) Math.pow(child_folders_per_folder, folder_depth) + 1; // The .gitignore file is indexed - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); + assertThat(logTester.logs(Level.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); } @Test @@ -114,7 +115,7 @@ public class GitIgnoreCommandTest { assertThat(underTest.isIgnored(projectDir.resolve("module1/folder_0_0/Foo.php"))).isFalse(); int expectedIncludedFiles = 6; - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); + assertThat(logTester.logs(Level.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); } @Test @@ -139,10 +140,10 @@ public class GitIgnoreCommandTest { assertThat(underTest.isIgnored(projectDir.resolve("folder_0_0/Foo.php"))).isFalse(); // ignoring not cloned submodules - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains("Git submodule [module1] found, but has not been cloned, skipping."); + assertThat(logTester.logs(Level.DEBUG)).contains("Git submodule [module1] found, but has not been cloned, skipping."); int expectedIncludedFiles = 3; - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); + assertThat(logTester.logs(Level.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); } @Test @@ -168,7 +169,7 @@ public class GitIgnoreCommandTest { .isTrue(); int expectedIncludedFiles = (int) Math.pow(child_folders_per_folder, folder_depth - 1); - assertThat(logTester.logs(LoggerLevel.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); + assertThat(logTester.logs(Level.DEBUG)).contains(expectedIncludedFiles + " non excluded files in this Git repository"); } private Path createGitRepoWithIgnore() throws IOException, GitAPIException { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java index cb7d1f68aec..7bddf0123ee 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/GitScmProviderTest.java @@ -59,8 +59,8 @@ import org.sonar.api.notifications.AnalysisWarnings; import org.sonar.api.scan.filesystem.PathResolver; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogAndArguments; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogAndArguments; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.core.documentation.DocumentationLinkGenerator; import org.sonar.scm.git.strategy.DefaultBlameStrategy; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/JGitBlameCommandTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/JGitBlameCommandTest.java index af8a102f367..2f22be669ee 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/JGitBlameCommandTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/JGitBlameCommandTest.java @@ -37,7 +37,7 @@ import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.scm.BlameLine; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assume.assumeTrue; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java index 8bebca19a87..9f1624c7c0a 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/NativeGitBlameCommandTest.java @@ -37,10 +37,11 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; +import org.slf4j.event.Level; import org.sonar.api.batch.scm.BlameLine; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.LogTester; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.scm.git.ProcessWrapperFactory.ProcessWrapper; import static org.assertj.core.api.Assertions.assertThat; @@ -319,6 +320,7 @@ public class NativeGitBlameCommandTest { @Test public void execution_on_windows_should_fallback_to_full_path() { + logTester.setLevel(Level.DEBUG); System2 system2 = mock(System2.class); when(system2.isOsWindows()).thenReturn(true); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java index 12952933806..53f9dd4c7c2 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/ProcessWrapperFactoryTest.java @@ -24,7 +24,8 @@ import java.io.IOException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import org.sonar.api.utils.log.LogTester; +import org.slf4j.event.Level; +import org.sonar.api.testfixtures.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import static org.assertj.core.api.Assertions.assertThat; @@ -40,12 +41,13 @@ public class ProcessWrapperFactoryTest { @Test public void should_log_error_output_in_debug_mode() throws IOException { + logTester.setLevel(Level.DEBUG); var root = temp.newFolder().toPath(); var processWrapper = underTest.create(root, v -> {}, "git", "blame"); assertThatThrownBy(() -> processWrapper.execute()) .isInstanceOf(IllegalStateException.class); - assertThat(logTester.logs(LoggerLevel.DEBUG).get(0)).contains("fatal: not a git repository"); + assertThat(logTester.logs(Level.DEBUG).get(0)).contains("fatal: not a git repository"); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/strategy/DefaultBlameStrategyTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/strategy/DefaultBlameStrategyTest.java index 2cf351e5e33..2754f3f04ee 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/strategy/DefaultBlameStrategyTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/strategy/DefaultBlameStrategyTest.java @@ -22,9 +22,9 @@ package org.sonar.scm.git.strategy; import java.util.Optional; import org.junit.Rule; import org.junit.Test; +import org.slf4j.event.Level; import org.sonar.api.config.Configuration; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTester; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -75,8 +75,7 @@ public class DefaultBlameStrategyTest { assertThat(underTest.getBlameAlgorithm(1, 10)).isEqualTo(GIT_NATIVE_BLAME); assertThat(underTest.getBlameAlgorithm(1, 11)).isEqualTo(GIT_FILES_BLAME); - assertThat(underTest.getBlameAlgorithm(0, 10)).isEqualTo(GIT_NATIVE_BLAME); - assertThat(logTester.logs(LoggerLevel.WARN)).contains("Available processors are 0. Falling back to native git blame"); + assertThat(logTester.logs(Level.WARN)).contains("Available processors are 0. Falling back to native git blame"); } } |