Skip to content

Commit

Permalink
SONARXML-146 Allow checks to access SensorContext to read configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
leonardo-pilastri-sonarsource committed Oct 4, 2024
1 parent 2eab98d commit 731d697
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.sonar.api.batch.sensor.issue.Issue;
import org.sonar.api.batch.sensor.issue.Issue.Flow;
import org.sonar.api.batch.sensor.issue.IssueLocation;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.rule.RuleKey;
import org.sonarsource.analyzer.commons.checks.verifier.SingleFileVerifier;
import org.sonarsource.analyzer.commons.xml.XmlFile;
Expand Down Expand Up @@ -70,11 +71,27 @@ public static void verifyNoIssue(String relativePath, SonarXmlCheck check) {
createVerifier(relativePath, check).checkNoIssues();
}

private static SonarXmlCheckVerifier createVerifier(String fileName, SonarXmlCheck check) {
File file = new File(new File(BASE_DIR.toFile(), check.getClass().getSimpleName()), fileName);
public static void verifyIssues(String relativePath, SonarXmlCheck check, MapSettings settings) {
createVerifier(relativePath, check, settings).checkIssues();
}

public static void verifyNoIssue(String relativePath, SonarXmlCheck check, MapSettings settings) {
createVerifier(relativePath, check, settings).checkNoIssues();
}

private static SonarXmlCheckVerifier createVerifier(String fileName, SonarXmlCheck check, MapSettings settings) {
SensorContextTester context = SensorContextTester.create(BASE_DIR);
context.setSettings(settings);
return createVerifier(fileName, check, context);
}

private static SonarXmlCheckVerifier createVerifier(String fileName, SonarXmlCheck check) {
SensorContextTester context = SensorContextTester.create(BASE_DIR);
return createVerifier(fileName, check, context);
}

private static SonarXmlCheckVerifier createVerifier(String fileName, SonarXmlCheck check, SensorContextTester context) {
File file = new File(new File(BASE_DIR.toFile(), check.getClass().getSimpleName()), fileName);
String filePath = file.getPath();
String content;
try (Stream<String> lines = Files.lines(file.toPath())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,24 @@

import org.assertj.core.util.Lists;
import org.junit.Test;
import org.sonar.api.config.internal.MapSettings;
import org.sonarsource.analyzer.commons.xml.XmlFile;
import org.w3c.dom.Element;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

public class SonarXmlCheckVerifierTest {

@Test
public void test() {
SonarXmlCheckVerifier.verifyNoIssue("file.xml", new SilentTestCheck());
SilentTestCheck check = new SilentTestCheck();
SonarXmlCheckVerifier.verifyNoIssue("file.xml", check);
SonarXmlCheckVerifier.verifyNoIssue("file.xml", check, new MapSettings());
assertThat(check.getContext()).isNotNull();
SonarXmlCheckVerifier.verifyIssueOnFile("file.xml", new FileTestCheck(), "Test file level message", 1, 2);
SonarXmlCheckVerifier.verifyIssues("checkTestFile.xml", new TestCheck());
SonarXmlCheckVerifier.verifyIssues("checkTestFile.xml", new TestCheck(), new MapSettings());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ public final RuleKey ruleKey() {
return ruleKey;
}

protected SensorContext getContext() {
return context;
}

public abstract void scanFile(XmlFile file);

public final void reportIssueOnFile(String message, List<Integer> secondaryLocationLines) {
Expand Down

0 comments on commit 731d697

Please sign in to comment.