Skip to content

Commit bdd40d5

Browse files
Copilotreakaleek
andcommitted
Fix: treat only _snippets directories as special, not filenames containing _snippets
Co-authored-by: reakaleek <16325797+reakaleek@users.noreply.github.com>
1 parent f9a7c01 commit bdd40d5

4 files changed

Lines changed: 33 additions & 3 deletions

File tree

src/Elastic.Markdown/IO/MarkdownFileFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ private DocumentationFile CreateMarkDownFile(IFileInfo file, BuildContext contex
117117
if (context.Configuration.IsExcluded(relativePath))
118118
return new ExcludedFile(file, sourceDirectory, context.Git.RepositoryName);
119119

120-
if (relativePath.Contains("_snippets"))
120+
if (relativePath.Contains($"{Path.DirectorySeparatorChar}_snippets{Path.DirectorySeparatorChar}")
121+
|| relativePath.StartsWith($"_snippets{Path.DirectorySeparatorChar}"))
121122
return new SnippetFile(file, sourceDirectory, context.Git.RepositoryName);
122123

123124
// we ignore files in folders that start with an underscore

src/Elastic.Markdown/Myst/Directives/Include/IncludeBlock.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private void ExtractInclusionPath(ParserContext context)
7171

7272
var file = Build.ReadFileSystem.FileInfo.New(IncludePath);
7373

74-
if (file.Directory != null && file.Directory.FullName.IndexOf("_snippets", StringComparison.Ordinal) < 0)
74+
if (file.Directory != null && !file.Directory.FullName.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).Contains("_snippets"))
7575
{
7676
this.EmitError($"{{include}} only supports including snippets from `_snippet` folders. `{IncludePath}` is not a snippet");
7777
Found = false;

tests/Elastic.Markdown.Tests/MockFileSystemExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static void GenerateDocSetYaml(
3434
.EnumerateFiles(root.FullName, "*.md", SearchOption.AllDirectories);
3535
foreach (var markdownFile in markdownFiles)
3636
{
37-
if (markdownFile.Contains("_snippet"))
37+
if (markdownFile.Contains($"{Path.DirectorySeparatorChar}_snippets{Path.DirectorySeparatorChar}"))
3838
continue;
3939
var relative = fileSystem.Path.GetRelativePath(root.FullName, markdownFile);
4040
yaml.WriteLine($" - file: {relative}");

tests/Elastic.Markdown.Tests/OutputDirectoryTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,35 @@ public async Task CreatesDefaultOutputDirectory()
4343
fileSystem.Directory.Exists(".artifacts").Should().BeTrue();
4444
}
4545

46+
[Fact]
47+
public void FilesWithSnippetsInNameNotTreatedAsSnippets()
48+
{
49+
var logger = new TestLoggerFactory(output);
50+
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
51+
{
52+
{ "docs/docset.yml",
53+
//language=yaml
54+
new MockFileData("""
55+
project: test
56+
toc:
57+
- file: index.md
58+
- file: top_snippets.md
59+
""") },
60+
{ "docs/index.md", new MockFileData("# Test") },
61+
{ "docs/top_snippets.md", new MockFileData("# Top Snippets") }
62+
}, new MockFileSystemOptions
63+
{
64+
CurrentDirectory = Paths.WorkingDirectoryRoot.FullName
65+
});
66+
var collector = new TestDiagnosticsCollector(output);
67+
var configurationContext = TestHelpers.CreateConfigurationContext(fileSystem);
68+
var context = new BuildContext(collector, fileSystem, configurationContext);
69+
var linkResolver = new TestCrossLinkResolver();
70+
var set = new DocumentationSet(context, logger, linkResolver);
71+
72+
set.MarkdownFiles.Should().Contain(f => f.RelativePath.EndsWith("top_snippets.md"));
73+
}
74+
4675
[Theory]
4776
[MemberData(nameof(ValidFileNames))]
4877
public void OutputFileValidationValidNames(string fileName)

0 commit comments

Comments
 (0)