diff --git a/src/Cake.Issues.Sarif.Tests/Cake.Issues.Sarif.Tests.csproj b/src/Cake.Issues.Sarif.Tests/Cake.Issues.Sarif.Tests.csproj index f3168ebec..76f693687 100644 --- a/src/Cake.Issues.Sarif.Tests/Cake.Issues.Sarif.Tests.csproj +++ b/src/Cake.Issues.Sarif.Tests/Cake.Issues.Sarif.Tests.csproj @@ -13,9 +13,14 @@ ..\Cake.Issues.ruleset + + + + + diff --git a/src/Cake.Issues.Sarif.Tests/SarifIssuesProviderTests.cs b/src/Cake.Issues.Sarif.Tests/SarifIssuesProviderTests.cs index 0918d3a76..908e545fb 100644 --- a/src/Cake.Issues.Sarif.Tests/SarifIssuesProviderTests.cs +++ b/src/Cake.Issues.Sarif.Tests/SarifIssuesProviderTests.cs @@ -173,6 +173,30 @@ public void Should_Read_Issue_Correct_For_File_Generated_By_CakeIssuesReportingS .WithPriority(IssuePriority.Warning) .Create()); } + + [Fact] + public void Should_Read_Issue_Correct_For_File_Generated_By_EsLint() + { + // Given + var fixture = new SarifIssuesProviderFixture("eslint.sarif"); + + // When + var issues = fixture.ReadIssues().ToList(); + + // Then + issues.Count.ShouldBe(1); + var issue = issues.Single(); + IssueChecker.Check( + issue, + IssueBuilder.NewIssue( + "'x' is assigned a value but never used.", + "Cake.Issues.Sarif.SarifIssuesProvider", + "ESLint") + .InFile(@"src\collections\list.cpp", 15) + .OfRule("no-unused-vars", new Uri("https://eslint.org/docs/rules/no-unused-vars")) + .WithPriority(IssuePriority.Error) + .Create()); + } } } } diff --git a/src/Cake.Issues.Sarif.Tests/Testfiles/eslint.sarif b/src/Cake.Issues.Sarif.Tests/Testfiles/eslint.sarif new file mode 100644 index 000000000..2d2fa5cac --- /dev/null +++ b/src/Cake.Issues.Sarif.Tests/Testfiles/eslint.sarif @@ -0,0 +1,57 @@ +{ + "version": "2.1.0", + "$schema": "http://json.schemastore.org/sarif-2.1.0-rtm.4", + "runs": [ + { + "tool": { + "driver": { + "name": "ESLint", + "informationUri": "https://eslint.org", + "rules": [ + { + "id": "no-unused-vars", + "shortDescription": { + "text": "disallow unused variables" + }, + "helpUri": "https://eslint.org/docs/rules/no-unused-vars", + "properties": { + "category": "Variables" + } + } + ] + } + }, + "artifacts": [ + { + "location": { + "uri": "file:///C:/dev/sarif/sarif-tutorials/samples/Introduction/simple-example.js" + } + } + ], + "results": [ + { + "level": "error", + "message": { + "text": "'x' is assigned a value but never used." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "file:///C:/dev/sarif/sarif-tutorials/samples/Introduction/simple-example.js", + "index": 0 + }, + "region": { + "startLine": 1, + "startColumn": 5 + } + } + } + ], + "ruleId": "no-unused-vars", + "ruleIndex": 0 + } + ] + } + ] +} \ No newline at end of file