Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions test/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<PropertyGroup>
<!--
.NET 9 preview 2 or later run tests in parallel by default.
It is necessary to disable this feature because there are tests that need to be executed sequentially that are marked with `[Collection("docfx STA")]`.
It is necessary to disable this feature because there are tests that need to be executed sequentially that are marked with `[DoNotParallelize]`.
-->
<TestTfmsInParallel>false</TestTfmsInParallel>
</PropertyGroup>
Expand All @@ -30,8 +30,9 @@

<ItemGroup>
<PackageReference Include="AwesomeAssertions" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit.runner.visualstudio" />
<PackageReference Include="xunit" />
<PackageReference Include="MSTest" />

<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
<AssemblyAttribute Include="Microsoft.VisualStudio.TestTools.UnitTesting.Parallelize" />
</ItemGroup>
</Project>
6 changes: 2 additions & 4 deletions test/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@

<ItemGroup>
<PackageVersion Include="AwesomeAssertions" Version="8.0.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageVersion Include="Verify.DiffPlex" Version="3.1.2" />
<PackageVersion Include="Verify.Xunit" Version="28.16.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="Verify.MSTest" Version="28.16.0" />
<PackageVersion Include="MSTest" Version="3.8.3" />
</ItemGroup>

<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions test/Docfx.Build.Common.Tests/FileLinkInfoTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@

using Docfx.Common;
using FluentAssertions;
using Xunit;

namespace Docfx.MarkdigEngine.Tests;

[TestClass]
public class FileLinkInfoTest
{
[Fact]
[TestMethod]
public void TestFileLinkInfo_EncodedWorkspaceCharacter()
{
string fromFileInSource = "articles/vpn-gateway/vpn-gateway-verify-connection-resource-manager.md";
Expand Down
131 changes: 65 additions & 66 deletions test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
using Docfx.Build.Engine;
using Docfx.MarkdigEngine;
using Docfx.Plugins;
using Xunit;

namespace Docfx.Build.Common.Tests;

[TestClass]
public class MarkdownReaderTest
{
[Fact]
[TestMethod]
public void TestReadMarkdownAsOverwrite()
{
var content = @"---
Expand All @@ -34,11 +34,11 @@ public void TestReadMarkdownAsOverwrite()

var ft = new FileAndType(baseDir, fileName, DocumentType.Overwrite);
var results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList();
Assert.NotNull(results);
Assert.Single(results);
Assert.Equal("Test", results[0].Uid);
Assert.Equal("Hello", results[0].Metadata["remarks"]);
Assert.Equal("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"6\">This is unit test!</p>\n", results[0].Conceptual);
Assert.IsNotNull(results);
Assert.ContainsSingle(results);
Assert.AreEqual("Test", results[0].Uid);
Assert.AreEqual("Hello", results[0].Metadata["remarks"]);
Assert.AreEqual("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"6\">This is unit test!</p>\n", results[0].Conceptual);
File.Delete(fileName);

// Test conceptual content between two yamlheader
Expand All @@ -55,13 +55,13 @@ This is unit test!
content = Regex.Replace(content, "\r?\n", "\r\n");
File.WriteAllText(fileName, content);
results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList();
Assert.NotNull(results);
Assert.Equal(2, results.Count);
Assert.Equal("Test1", results[0].Uid);
Assert.Equal("Test2", results[1].Uid);
Assert.Equal("Hello", results[0].Metadata["remarks"]);
Assert.Equal("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual);
Assert.Equal(string.Empty, results[1].Conceptual);
Assert.IsNotNull(results);
Assert.AreEqual(2, results.Count);
Assert.AreEqual("Test1", results[0].Uid);
Assert.AreEqual("Test2", results[1].Uid);
Assert.AreEqual("Hello", results[0].Metadata["remarks"]);
Assert.AreEqual("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual);
Assert.AreEqual(string.Empty, results[1].Conceptual);
File.Delete(fileName);

content = @"---
Expand All @@ -76,13 +76,13 @@ This is unit test!
content = Regex.Replace(content, "\r?\n", "\r\n");
File.WriteAllText(fileName, content);
results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList();
Assert.NotNull(results);
Assert.Equal(2, results.Count);
Assert.Equal("Test1", results[0].Uid);
Assert.Equal("Hello", results[0].Metadata["remarks"]);
Assert.Equal("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual);
Assert.Equal("Test2", results[1].Uid);
Assert.Equal("", results[1].Conceptual);
Assert.IsNotNull(results);
Assert.AreEqual(2, results.Count);
Assert.AreEqual("Test1", results[0].Uid);
Assert.AreEqual("Hello", results[0].Metadata["remarks"]);
Assert.AreEqual("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual);
Assert.AreEqual("Test2", results[1].Uid);
Assert.AreEqual("", results[1].Conceptual);
File.Delete(fileName);

// Test conceptual content with extra empty line between two yamlheader
Expand All @@ -102,24 +102,24 @@ This is unit test!
content = Regex.Replace(content, "\r?\n", "\r\n");
File.WriteAllText(fileName, content);
results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList();
Assert.NotNull(results);
Assert.Equal(2, results.Count);
Assert.Equal("Test1", results[0].Uid);
Assert.Equal("Test2", results[1].Uid);
Assert.Equal("Hello", results[0].Metadata["remarks"]);
Assert.Equal("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"7\">This is unit test!</p>\n", results[0].Conceptual);
Assert.Equal(string.Empty, results[1].Conceptual);
Assert.IsNotNull(results);
Assert.AreEqual(2, results.Count);
Assert.AreEqual("Test1", results[0].Uid);
Assert.AreEqual("Test2", results[1].Uid);
Assert.AreEqual("Hello", results[0].Metadata["remarks"]);
Assert.AreEqual("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"7\">This is unit test!</p>\n", results[0].Conceptual);
Assert.AreEqual(string.Empty, results[1].Conceptual);
File.Delete(fileName);

// Test different line ending
content = "---\nuid: Test\nremarks: Hello\n---\nThis is unit test!\n";
File.WriteAllText(fileName, content);
results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList();
Assert.NotNull(results);
Assert.Single(results);
Assert.Equal("Test", results[0].Uid);
Assert.Equal("Hello", results[0].Metadata["remarks"]);
Assert.Equal("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual);
Assert.IsNotNull(results);
Assert.ContainsSingle(results);
Assert.AreEqual("Test", results[0].Uid);
Assert.AreEqual("Hello", results[0].Metadata["remarks"]);
Assert.AreEqual("\n<p sourcefile=\"ut_ReadMarkdownAsOverwrite.md\" sourcestartlinenumber=\"5\">This is unit test!</p>\n", results[0].Conceptual);
File.Delete(fileName);

// Test link to files and Uids in overwrite document
Expand All @@ -136,47 +136,46 @@ [Not exist link2](link2.md)
content = Regex.Replace(content, "\r?\n", "\r\n");
File.WriteAllText(fileName, content);
results = MarkdownReader.ReadMarkdownAsOverwrite(host, ft).ToList();
Assert.NotNull(results);
Assert.Single(results);
Assert.Equal("Test", results[0].Uid);
Assert.Equal("Hello", results[0].Metadata["remarks"]);
Assert.Equal(2, results[0].LinkToFiles.Count);
Assert.True(results[0].LinkToFiles.OrderBy(f => f).SequenceEqual(new[] { "~/link.md", "~/link2.md", }));
Assert.Single(results[0].LinkToUids);
Assert.Equal("NotExistUid", results[0].LinkToUids.ElementAt(0));
Assert.Equal(2, results[0].FileLinkSources.Count);
Assert.IsNotNull(results);
Assert.ContainsSingle(results);
Assert.AreEqual("Test", results[0].Uid);
Assert.AreEqual("Hello", results[0].Metadata["remarks"]);
Assert.AreEqual(2, results[0].LinkToFiles.Count);
Assert.IsTrue(results[0].LinkToFiles.OrderBy(f => f).SequenceEqual(new[] { "~/link.md", "~/link2.md", }));
Assert.ContainsSingle(results[0].LinkToUids);
Assert.AreEqual("NotExistUid", results[0].LinkToUids.ElementAt(0));
Assert.AreEqual(2, results[0].FileLinkSources.Count);
var fileLinkSource0 = results[0].FileLinkSources["~/link.md"];
Assert.NotNull(fileLinkSource0);
Assert.Single(fileLinkSource0);
Assert.Null(fileLinkSource0[0].Anchor);
Assert.Equal(7, fileLinkSource0[0].LineNumber);
Assert.Equal(fileName, fileLinkSource0[0].SourceFile);
Assert.Equal("~/link.md", fileLinkSource0[0].Target);
Assert.Single(results[0].UidLinkSources);
Assert.IsNotNull(fileLinkSource0);
Assert.ContainsSingle(fileLinkSource0);
Assert.IsNull(fileLinkSource0[0].Anchor);
Assert.AreEqual(7, fileLinkSource0[0].LineNumber);
Assert.AreEqual(fileName, fileLinkSource0[0].SourceFile);
Assert.AreEqual("~/link.md", fileLinkSource0[0].Target);
Assert.ContainsSingle(results[0].UidLinkSources);
var fileLinkSource1 = results[0].FileLinkSources["~/link2.md"];
Assert.NotNull(fileLinkSource1);
Assert.Single(fileLinkSource1);
Assert.Null(fileLinkSource1[0].Anchor);
Assert.Equal(8, fileLinkSource1[0].LineNumber);
Assert.Equal(fileName, fileLinkSource1[0].SourceFile);
Assert.Equal("~/link2.md", fileLinkSource1[0].Target);
Assert.Single(results[0].UidLinkSources);
Assert.IsNotNull(fileLinkSource1);
Assert.ContainsSingle(fileLinkSource1);
Assert.IsNull(fileLinkSource1[0].Anchor);
Assert.AreEqual(8, fileLinkSource1[0].LineNumber);
Assert.AreEqual(fileName, fileLinkSource1[0].SourceFile);
Assert.AreEqual("~/link2.md", fileLinkSource1[0].Target);
Assert.ContainsSingle(results[0].UidLinkSources);
var uidLinkSource = results[0].UidLinkSources["NotExistUid"];
Assert.NotNull(uidLinkSource);
Assert.Single(uidLinkSource);
Assert.Null(uidLinkSource[0].Anchor);
Assert.Equal(5, uidLinkSource[0].LineNumber);
Assert.Equal(fileName, uidLinkSource[0].SourceFile);
Assert.Equal("NotExistUid", uidLinkSource[0].Target);
Assert.Equal(
Assert.IsNotNull(uidLinkSource);
Assert.ContainsSingle(uidLinkSource);
Assert.IsNull(uidLinkSource[0].Anchor);
Assert.AreEqual(5, uidLinkSource[0].LineNumber);
Assert.AreEqual(fileName, uidLinkSource[0].SourceFile);
Assert.AreEqual("NotExistUid", uidLinkSource[0].Target);
Assert.AreEqual(
"""
<p sourcefile="ut_ReadMarkdownAsOverwrite.md" sourcestartlinenumber="5"><xref href="NotExistUid" data-throw-if-not-resolved="False" data-raw-source="@NotExistUid" sourcefile="ut_ReadMarkdownAsOverwrite.md" sourcestartlinenumber="5"></xref></p>
<p sourcefile="ut_ReadMarkdownAsOverwrite.md" sourcestartlinenumber="7"><a href="link.md" sourcefile="ut_ReadMarkdownAsOverwrite.md" sourcestartlinenumber="7">Not exist link</a>
<a href="link2.md" sourcefile="ut_ReadMarkdownAsOverwrite.md" sourcestartlinenumber="8">Not exist link2</a></p>
<p sourcefile="ut_ReadMarkdownAsOverwrite.md" sourcestartlinenumber="10">This is unit test!</p>
""",
results[0].Conceptual.Trim(),
ignoreLineEndingDifferences: true);
""".ReplaceLineEndings(),
results[0].Conceptual.Trim().ReplaceLineEndings());
File.Delete(fileName);
}
}
Loading