.setRuleKey(adHoc.getKey())
.setIsExternal(true)
.setIsAdHoc(true)
- .setName(adHoc.getEngineId() + ": " + adHoc.getRuleId())
+ .setName(adHoc.getEngineId() + ":" + adHoc.getRuleId())
.setScope(ALL)
.setStatus(READY)
.setCreatedAt(now)
assertThat(rule.isAdHoc()).isTrue();
assertThat(rule.getId()).isGreaterThan(0);
assertThat(rule.getKey()).isEqualTo(RuleKey.of("external_eslint", "no-cond-assign"));
- assertThat(rule.getName()).isEqualTo("eslint: no-cond-assign");
+ assertThat(rule.getName()).isEqualTo("eslint:no-cond-assign");
assertThat(rule.getDescription()).isNull();
assertThat(rule.getSeverity()).isNull();
assertThat(rule.getType()).isEqualTo(0);
assertThat(rule.isAdHoc()).isTrue();
assertThat(rule.getId()).isGreaterThan(0);
assertThat(rule.getKey()).isEqualTo(RuleKey.of("external_eslint", "no-cond-assign"));
- assertThat(rule.getName()).isEqualTo("eslint: no-cond-assign");
+ assertThat(rule.getName()).isEqualTo("eslint:no-cond-assign");
assertThat(rule.getDescription()).isNull();
assertThat(rule.getSeverity()).isNull();
assertThat(rule.getType()).isEqualTo(0);
assertThat(ruleUpdated.isAdHoc()).isTrue();
assertThat(ruleUpdated.getId()).isGreaterThan(0);
assertThat(ruleUpdated.getKey()).isEqualTo(RuleKey.of("external_eslint", "no-cond-assign"));
- assertThat(ruleUpdated.getName()).isEqualTo("eslint: no-cond-assign");
+ assertThat(ruleUpdated.getName()).isEqualTo("eslint:no-cond-assign");
assertThat(ruleUpdated.getDescription()).isNull();
assertThat(ruleUpdated.getSeverity()).isNull();
assertThat(ruleUpdated.getType()).isEqualTo(0);
assertThat(reloaded.isAdHoc()).isTrue();
assertThat(reloaded.getType()).isEqualTo(0);
assertThat(reloaded.getSeverity()).isNull();
- assertThat(reloaded.getName()).isEqualTo("eslint: no-cond-assign");
+ assertThat(reloaded.getName()).isEqualTo("eslint:no-cond-assign");
assertThat(es.countDocuments(RuleIndexDefinition.INDEX_TYPE_RULE)).isEqualTo(1l);
assertThat(es.getDocuments(RuleIndexDefinition.INDEX_TYPE_RULE).iterator().next().getId()).isEqualTo(Integer.toString(reloaded.getId()));
import org.sonar.api.batch.sensor.rule.NewAdHocRule;
import org.sonar.api.rules.RuleType;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@Test
public void store() {
SensorStorage storage = mock(SensorStorage.class);
- new DefaultAdHocRule(storage)
+ DefaultAdHocRule rule = new DefaultAdHocRule(storage)
.engineId("engine")
.ruleId("ruleId")
.name("name")
.description("desc")
.severity(Severity.BLOCKER)
- .type(RuleType.CODE_SMELL)
- .save();
+ .type(RuleType.CODE_SMELL);
+ rule.save();
+
+ assertThat(rule.engineId()).isEqualTo("engine");
+ assertThat(rule.ruleId()).isEqualTo("ruleId");
+ assertThat(rule.name()).isEqualTo("name");
+ assertThat(rule.description()).isEqualTo("desc");
+ assertThat(rule.severity()).isEqualTo(Severity.BLOCKER);
+ assertThat(rule.type()).isEqualTo(RuleType.CODE_SMELL);
verify(storage).store(any(DefaultAdHocRule.class));
}
}
}
- public File writeComponentExternalIssues(int componentRef, Iterable<ScannerReport.ExternalIssue> issues) {
- File file = fileStructure.fileFor(FileStructure.Domain.EXTERNAL_ISSUES, componentRef);
- Protobuf.writeStream(issues, file, false);
- return file;
- }
-
public File writeComponentChangedLines(int componentRef, ScannerReport.ChangedLines changedLines) {
File file = fileStructure.fileFor(FileStructure.Domain.CHANGED_LINES, componentRef);
Protobuf.write(changedLines, file);
ScannerReportWriter writer = new ScannerReportWriter(dir);
ScannerReport.ExternalIssue issue = ScannerReport.ExternalIssue.newBuilder()
.build();
- writer.writeComponentExternalIssues(1, asList(issue));
+ writer.appendComponentExternalIssue(1, issue);
assertThat(underTest.readComponentExternalIssues(1)).hasSize(1);
assertThat(underTest.readComponentExternalIssues(200)).isEmpty();
import org.junit.rules.TemporaryFolder;
import org.sonar.core.util.CloseableIterator;
import org.sonar.core.util.Protobuf;
+import org.sonar.scanner.protocol.Constants;
import org.sonar.scanner.protocol.output.ScannerReport.Component.ComponentType;
import org.sonar.scanner.protocol.output.ScannerReport.Measure.DoubleValue;
import org.sonar.scanner.protocol.output.ScannerReport.SyntaxHighlightingRule.HighlightingType;
.setMsg("the message")
.build();
- underTest.writeComponentExternalIssues(1, asList(issue));
+ underTest.appendComponentExternalIssue(1, issue);
assertThat(underTest.hasComponentData(FileStructure.Domain.EXTERNAL_ISSUES, 1)).isTrue();
File file = underTest.getFileStructure().fileFor(FileStructure.Domain.EXTERNAL_ISSUES, 1);
}
}
+ @Test
+ public void write_adhoc_rule() {
+
+ // write data
+ ScannerReport.AdHocRule rule = ScannerReport.AdHocRule.newBuilder()
+ .setEngineId("eslint")
+ .setRuleId("123")
+ .setName("Foo")
+ .setDescription("Description")
+ .setSeverity(Constants.Severity.BLOCKER)
+ .setType(ScannerReport.IssueType.BUG)
+ .build();
+ underTest.appendAdHocRule(rule);
+
+ File file = underTest.getFileStructure().adHocRules();
+ assertThat(file).exists().isFile();
+ try (CloseableIterator<ScannerReport.AdHocRule> read = Protobuf.readStream(file, ScannerReport.AdHocRule.parser())) {
+ assertThat(Iterators.size(read)).isEqualTo(1);
+ }
+ }
+
@Test
public void write_changed_lines() {
assertThat(underTest.hasComponentData(FileStructure.Domain.CHANGED_LINES, 1)).isFalse();