Skip to content

Commit 4e64c19

Browse files
committed
Use ConcurrentBag and enhance tests
1 parent 744b138 commit 4e64c19

File tree

3 files changed

+26
-41
lines changed

3 files changed

+26
-41
lines changed

src/Elastic.Markdown/Diagnostics/DiagnosticsChannel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public class DiagnosticsCollector(ILoggerFactory loggerFactory, IReadOnlyCollect
8787

8888
public HashSet<string> OffendingFiles { get; } = new();
8989

90-
public ConcurrentDictionary<string, bool> CrossLinks { get; } = new();
90+
public ConcurrentBag<string> CrossLinks { get; } = new();
9191

9292
public Task StartAsync(Cancel ctx)
9393
{
@@ -143,7 +143,7 @@ public virtual async Task StopAsync(CancellationToken cancellationToken)
143143
await Channel.Reader.Completion;
144144
}
145145

146-
public void EmitCrossLink(string link) => CrossLinks.TryAdd(link, true);
146+
public void EmitCrossLink(string link) => CrossLinks.Add(link);
147147

148148
public void EmitError(string file, string message, Exception? e = null)
149149
{

src/Elastic.Markdown/IO/LinkReference.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ public record LinkReference
2222

2323
public static LinkReference Create(DocumentationSet set)
2424
{
25-
var crossLinks = set.Context.Collector.CrossLinks.Select(i => i.Key).ToArray();
26-
25+
var crossLinks = set.Context.Collector.CrossLinks.ToHashSet().ToArray();
2726
var links = set.FlatMappedFiles.Values
2827
.OfType<MarkdownFile>()
2928
.Select(m => m.RelativePath).ToArray();

tests/Elastic.Markdown.Tests/Inline/InlineLinkTests.cs

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ public void GeneratesHtml() =>
6565

6666
[Fact]
6767
public void HasNoErrors() => Collector.Diagnostics.Should().HaveCount(0);
68+
69+
[Fact]
70+
public void EmitsCrossLink()
71+
{
72+
Collector.CrossLinks.Should().HaveCount(0);
73+
}
6874
}
6975

7076
public class InsertPageTitleTests(ITestOutputHelper output) : LinkTestBase(output,
@@ -82,6 +88,12 @@ public void GeneratesHtml() =>
8288

8389
[Fact]
8490
public void HasNoErrors() => Collector.Diagnostics.Should().HaveCount(0);
91+
92+
[Fact]
93+
public void EmitsCrossLink()
94+
{
95+
Collector.CrossLinks.Should().HaveCount(0);
96+
}
8597
}
8698

8799
public class LinkReferenceTest(ITestOutputHelper output) : LinkTestBase(output,
@@ -101,6 +113,12 @@ public void GeneratesHtml() =>
101113

102114
[Fact]
103115
public void HasNoErrors() => Collector.Diagnostics.Should().HaveCount(0);
116+
117+
[Fact]
118+
public void EmitsCrossLink()
119+
{
120+
Collector.CrossLinks.Should().HaveCount(0);
121+
}
104122
}
105123

106124
public class CrossLinkReferenceTest(ITestOutputHelper output) : LinkTestBase(output,
@@ -126,40 +144,14 @@ public void GeneratesHtml() =>
126144
public void EmitsCrossLink()
127145
{
128146
Collector.CrossLinks.Should().HaveCount(1);
129-
Collector.CrossLinks.Should().ContainKey("kibana://index.md");
147+
Collector.CrossLinks.Should().Contain("kibana://index.md");
130148
}
131149
}
132150

133151
public class CrossLinkTest(ITestOutputHelper output) : LinkTestBase(output,
134152
"""
135-
[test](kibana://index.md)
136-
"""
137-
)
138-
{
139-
[Fact]
140-
public void GeneratesHtml() =>
141-
// language=html
142-
Html.Should().Contain(
143-
// TODO: The link is not rendered correctly yet, will be fixed in a follow-up
144-
"""<p><a href="kibana://index.html">test</a></p>"""
145-
);
146153
147-
[Fact]
148-
public void HasNoErrors() => Collector.Diagnostics.Should().HaveCount(0);
149-
150-
[Fact]
151-
public void EmitsCrossLink()
152-
{
153-
Collector.CrossLinks.Should().HaveCount(1);
154-
Collector.CrossLinks.Should().ContainKey("kibana://index.md");
155-
}
156-
}
157-
158-
public class DuplicateCrossLinkTest(ITestOutputHelper output) : LinkTestBase(output,
159-
"""
160-
[a](kibana://index.md)
161-
[b](kibana://index.md)
162-
[c](elasticsearch://index.md)
154+
Go to [test](kibana://index.md)
163155
"""
164156
)
165157
{
@@ -168,11 +160,7 @@ public void GeneratesHtml() =>
168160
// language=html
169161
Html.Should().Contain(
170162
// TODO: The link is not rendered correctly yet, will be fixed in a follow-up
171-
"""
172-
<p><a href="kibana://index.html">a</a><br />
173-
<a href="kibana://index.html">b</a><br />
174-
<a href="elasticsearch://index.html">c</a></p>
175-
"""
163+
"""<p>Go to <a href="kibana://index.html">test</a></p>"""
176164
);
177165

178166
[Fact]
@@ -181,9 +169,7 @@ public void GeneratesHtml() =>
181169
[Fact]
182170
public void EmitsCrossLink()
183171
{
184-
Collector.CrossLinks.Should().HaveCount(2);
185-
Collector.CrossLinks.Should().ContainKey("kibana://index.md");
186-
Collector.CrossLinks.Should().ContainKey("elasticsearch://index.md");
172+
Collector.CrossLinks.Should().HaveCount(1);
173+
Collector.CrossLinks.Should().Contain("kibana://index.md");
187174
}
188175
}
189-

0 commit comments

Comments
 (0)