use of com.github._1c_syntax.bsl.languageserver.context.DocumentContext in project bsl-language-server by 1c-syntax.
the class SourceDefinedSymbolDeclarationReferenceFinderTest method testFindReferenceOnMethodDeclaration.
@Test
void testFindReferenceOnMethodDeclaration() {
// given
var documentContext = TestUtils.getDocumentContextFromFile("./src/test/resources/references/SourceDefinedSymbolDeclarationReferenceFinder.bsl");
var module = documentContext.getSymbolTree().getModule();
var method = documentContext.getSymbolTree().getMethods().get(0);
// when
var optionalReference = referenceFinder.findReference(documentContext.getUri(), new Position(0, 15));
// then
assertThat(optionalReference).isPresent().hasValueSatisfying(reference -> assertThat(reference.getFrom()).isEqualTo(module)).hasValueSatisfying(reference -> assertThat(reference.getSymbol()).isEqualTo(method)).hasValueSatisfying(reference -> assertThat(reference.getSelectionRange()).isEqualTo(method.getSelectionRange()));
}
use of com.github._1c_syntax.bsl.languageserver.context.DocumentContext in project bsl-language-server by 1c-syntax.
the class ConsoleReporterTest method report.
@Test
void report() {
// given
Diagnostic diagnostic = new Diagnostic(Ranges.create(0, 1, 2, 3), "message", DiagnosticSeverity.Error, "test-source", "test");
DocumentContext documentContext = TestUtils.getDocumentContext("");
String sourceDir = ".";
FileInfo fileInfo = new FileInfo(sourceDir, documentContext, Collections.singletonList(diagnostic));
AnalysisInfo analysisInfo = new AnalysisInfo(LocalDateTime.now(), Collections.singletonList(fileInfo), sourceDir);
ConsoleReporter reporter = new ConsoleReporter();
// when
reporter.report(analysisInfo, Path.of(sourceDir));
// then
// FIXME How test logger?
// assertThat(outContent.toString()).containsIgnoringCase("Analysis date: ");
}
use of com.github._1c_syntax.bsl.languageserver.context.DocumentContext in project bsl-language-server by 1c-syntax.
the class GenericReporterTest method report.
@Test
void report() throws IOException {
// given
List<Diagnostic> diagnostics = new ArrayList<>();
var iterator = diagnosticInfos.entrySet().iterator();
var firstInfo = iterator.next().getValue();
var secondInfo = iterator.next().getValue();
diagnostics.add(new Diagnostic(Ranges.create(0, 1, 2, 3), "message", DiagnosticSeverity.Error, "test-source", firstInfo.getCode().getStringValue()));
diagnostics.add(new Diagnostic(Ranges.create(0, 1, 2, 4), "message4", DiagnosticSeverity.Error, "test-source2", firstInfo.getCode().getStringValue()));
diagnostics.add(new Diagnostic(Ranges.create(3, 1, 4, 4), "message4", DiagnosticSeverity.Error, "test-source2", secondInfo.getCode().getStringValue()));
DocumentContext documentContext = TestUtils.getDocumentContext("");
Location location = new Location("file:///fake-uri2.bsl", Ranges.create(0, 2, 2, 3));
diagnostics.get(0).setRelatedInformation(Collections.singletonList(new DiagnosticRelatedInformation(location, "message")));
String sourceDir = ".";
FileInfo fileInfo = new FileInfo(sourceDir, documentContext, diagnostics);
AnalysisInfo analysisInfo = new AnalysisInfo(LocalDateTime.now(), Collections.singletonList(fileInfo), sourceDir);
// when
reporter.report(analysisInfo, Path.of(sourceDir));
// then
ObjectMapper mapper = new ObjectMapper();
GenericIssueReport report = mapper.readValue(file, GenericIssueReport.class);
assertThat(report).isNotNull();
assertThat(report.getIssues()).isNotNull();
assertThat(report.getIssues().size()).isEqualTo(3);
assertThat(report.getIssues().get(0).getPrimaryLocation()).isNotNull();
assertThat(report.getIssues().get(0).getSecondaryLocations()).isNotNull();
assertThat(report.getIssues().get(0).getSecondaryLocations().size()).isEqualTo(1);
assertThat(report.getIssues().get(2).getRuleId()).isEqualTo(secondInfo.getCode().getStringValue());
assertThat(report.getIssues().get(1).getSeverity()).isEqualTo(firstInfo.getSeverity().name());
}
use of com.github._1c_syntax.bsl.languageserver.context.DocumentContext in project bsl-language-server by 1c-syntax.
the class ReportersAggregatorTest method report.
@Test
void report() {
// given
Diagnostic diagnostic = new Diagnostic(Ranges.create(0, 1, 2, 3), "message", DiagnosticSeverity.Error, "test-source", "test");
DocumentContext documentContext = TestUtils.getDocumentContext("");
String sourceDir = ".";
FileInfo fileInfo = new FileInfo(sourceDir, documentContext, Collections.singletonList(diagnostic));
AnalysisInfo analysisInfo = new AnalysisInfo(LocalDateTime.now(), Collections.singletonList(fileInfo), sourceDir);
aggregator.report(analysisInfo, Path.of(sourceDir));
// then
// FIXME How test logger?
// assertThat(outContent.toString()).containsIgnoringCase("Analysis date: ");
}
use of com.github._1c_syntax.bsl.languageserver.context.DocumentContext in project bsl-language-server by 1c-syntax.
the class SarifReporterTest method report.
@Test
void report() throws IOException {
// given
configuration.getDiagnosticsOptions().getParameters().put("Typo", Either.forLeft(false));
configuration.getDiagnosticsOptions().getParameters().put("test", Either.forLeft(true));
configuration.getDiagnosticsOptions().getParameters().put("some", Either.forRight(Map.of("test", 1)));
Diagnostic diagnostic = new Diagnostic(Ranges.create(0, 1, 2, 3), "message", DiagnosticSeverity.Error, "test-source", "test");
DocumentContext documentContext = TestUtils.getDocumentContext("");
String sourceDir = ".";
FileInfo fileInfo = new FileInfo(sourceDir, documentContext, Collections.singletonList(diagnostic));
AnalysisInfo analysisInfo = new AnalysisInfo(LocalDateTime.now(), Collections.singletonList(fileInfo), sourceDir);
// when
reporter.report(analysisInfo, Path.of(sourceDir));
// then
ObjectMapper mapper = new ObjectMapper();
var report = mapper.readValue(file, SarifSchema210.class);
assertThat(report).isNotNull();
var run = report.getRuns().get(0);
assertThat(run.getTool().getDriver().getName()).isEqualTo("BSL Language Server");
assertThat(run.getTool().getDriver().getRules()).hasSize(diagnosticInfos.size());
var invocation = run.getInvocations().get(0);
assertThat(invocation.getRuleConfigurationOverrides()).hasSizeGreaterThan(0).anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("Typo") && !configurationOverride.getConfiguration().getEnabled()).anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("test") && configurationOverride.getConfiguration().getEnabled()).anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("some") && configurationOverride.getConfiguration().getParameters().getAdditionalProperties().get("test").equals(1));
assertThat(run.getResults()).hasSize(1).element(0).matches(result -> result.getRuleId().equals("test")).matches(result -> result.getLevel() == Result.Level.ERROR).matches(result -> result.getMessage().getText().equals("message")).matches(result -> result.getAnalysisTarget().getUri().equals(documentContext.getUri().toString())).extracting(Result::getLocations).extracting(locations -> locations.get(0)).extracting(Location::getPhysicalLocation).extracting(PhysicalLocation::getRegion).matches(region -> region.getStartLine().equals(diagnostic.getRange().getStart().getLine() + 1)).matches(region -> region.getStartColumn().equals(diagnostic.getRange().getStart().getCharacter() + 1)).matches(region -> region.getEndLine().equals(diagnostic.getRange().getEnd().getLine() + 1)).matches(region -> region.getEndColumn().equals(diagnostic.getRange().getEnd().getCharacter() + 1));
}
Aggregations