Skip to content

Commit e13a6d0

Browse files
authored
Add support for Markdownlint 0.46.0 format (#1353)
1 parent a967170 commit e13a6d0

File tree

4 files changed

+122
-0
lines changed

4 files changed

+122
-0
lines changed

src/Cake.Issues.Markdownlint.Tests/LogFileFormat/MarkdownlintCliLogFileFormatTests.cs

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,5 +504,94 @@ public void Should_Read_Issue_Correct_0_35_0()
504504
.OfRule("MD047", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md047"))
505505
.WithPriority(IssuePriority.Warning));
506506
}
507+
508+
[Fact]
509+
public void Should_Read_Issue_Correct_0_46_0()
510+
{
511+
// Given
512+
var fixture =
513+
new MarkdownlintIssuesProviderFixture<MarkdownlintCliLogFileFormat>("markdownlint-cli-0.46.0.log")
514+
{
515+
ReadIssuesSettings = new ReadIssuesSettings("C:/git/github/cake-contrib/Cake.Issues.Markdownlint/tests"),
516+
};
517+
518+
// When
519+
var issues = fixture.ReadIssues().ToList();
520+
521+
// Then
522+
issues.Count.ShouldBe(8);
523+
IssueChecker.Check(
524+
issues[0],
525+
IssueBuilder.NewIssue(
526+
"Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: \"# foo\"]",
527+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
528+
"markdownlint")
529+
.InFile("docs/index.md", 1)
530+
.OfRule("MD022", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md022"))
531+
.WithPriority(IssuePriority.Warning));
532+
IssueChecker.Check(
533+
issues[1],
534+
IssueBuilder.NewIssue(
535+
"Trailing spaces [Expected: 0 or 2; Actual: 1]",
536+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
537+
"markdownlint")
538+
.InFile("docs/index.md", 2, 811)
539+
.OfRule("MD009", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md009"))
540+
.WithPriority(IssuePriority.Warning));
541+
IssueChecker.Check(
542+
issues[2],
543+
IssueBuilder.NewIssue(
544+
"Line length [Expected: 100; Actual: 811]",
545+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
546+
"markdownlint")
547+
.InFile("docs/index.md", 2, 101)
548+
.OfRule("MD013", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md013"))
549+
.WithPriority(IssuePriority.Warning));
550+
IssueChecker.Check(
551+
issues[3],
552+
IssueBuilder.NewIssue(
553+
"Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: \"# bar\"]",
554+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
555+
"markdownlint")
556+
.InFile("docs/index.md", 4)
557+
.OfRule("MD022", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md022"))
558+
.WithPriority(IssuePriority.Warning));
559+
IssueChecker.Check(
560+
issues[4],
561+
IssueBuilder.NewIssue(
562+
"Multiple top-level headings in the same document [Context: \"bar\"]",
563+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
564+
"markdownlint")
565+
.InFile("docs/index.md", 4)
566+
.OfRule("MD025", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md025"))
567+
.WithPriority(IssuePriority.Warning));
568+
IssueChecker.Check(
569+
issues[5],
570+
IssueBuilder.NewIssue(
571+
"Fenced code blocks should be surrounded by blank lines [Context: \"```\"]",
572+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
573+
"markdownlint")
574+
.InFile("docs/index.md", 5)
575+
.OfRule("MD031", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md031"))
576+
.WithPriority(IssuePriority.Warning));
577+
IssueChecker.Check(
578+
issues[6],
579+
IssueBuilder.NewIssue(
580+
"Fenced code blocks should have a language specified [Context: \"```\"]",
581+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
582+
"markdownlint")
583+
.InFile("docs/index.md", 5)
584+
.OfRule("MD040", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md040"))
585+
.WithPriority(IssuePriority.Warning));
586+
IssueChecker.Check(
587+
issues[7],
588+
IssueBuilder.NewIssue(
589+
"Files should end with a single newline character",
590+
"Cake.Issues.Markdownlint.MarkdownlintIssuesProvider",
591+
"markdownlint")
592+
.InFile("docs/index.md", 7, 3)
593+
.OfRule("MD047", new Uri("https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md047"))
594+
.WithPriority(IssuePriority.Warning));
595+
}
507596
}
508597
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
docs/index.md:1 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# foo"]
2+
docs/index.md:2:811 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]
3+
docs/index.md:2:101 MD013/line-length Line length [Expected: 100; Actual: 811]
4+
docs/index.md:4 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "# bar"]
5+
docs/index.md:4 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "bar"]
6+
docs/index.md:5 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"]
7+
docs/index.md:5 MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
8+
docs/index.md:7:3 MD047/single-trailing-newline Files should end with a single newline character

src/Cake.Issues.Tests/StringPathExtensionsTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,25 @@ public void Should_Return_Correct_FilePath(string repoRoot, string filePath, str
652652
// Then
653653
filePathResult.ShouldBe(expectedResult);
654654
}
655+
656+
[Theory]
657+
[InlineData(@"C:\repo", @"foo", "foo")]
658+
[InlineData(@"C:\repo", @"foo\", @"foo\")]
659+
[InlineData(@"C:\repo", @"foo\bar", @"foo\bar")]
660+
[InlineData("/repo", "foo", "foo")]
661+
[InlineData("/repo", "foo/", "foo/")]
662+
[InlineData("/repo", "foo/bar", "foo/bar")]
663+
public void Should_Handle_AbsolutePaths(string repoRoot, string filePath, string expectedResult)
664+
{
665+
// Given
666+
var repositorySettings = new RepositorySettings(repoRoot);
667+
668+
// When
669+
var (_, filePathResult) = filePath.IsValidRepositoryFilePath(repositorySettings);
670+
671+
// Then
672+
filePathResult.ShouldBe(expectedResult);
673+
}
655674
}
656675

657676
public sealed class TheIsInRepositoryExtension

src/Cake.Issues/StringPathExtensions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,12 @@ public static (bool Valid, string FilePath) IsValidRepositoryFilePath(this strin
154154
filePath.NotNullOrWhiteSpace();
155155
repositorySettings.NotNull();
156156

157+
// If path is already relative, return it as is.
158+
if (new Core.IO.FilePath(filePath).IsRelative)
159+
{
160+
return (true, filePath);
161+
}
162+
157163
// Ignore files from outside the repository.
158164
if (!filePath.IsInRepository(repositorySettings))
159165
{

0 commit comments

Comments
 (0)