Skip to content

Commit 69ff46b

Browse files
Added retry facts for ci only (#402)
1 parent c7d334c commit 69ff46b

19 files changed

+438
-16
lines changed

test/Lsp.Tests/Integration/DynamicRegistrationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ await TestHelper.DelayUntil(
9898
client.RegistrationManager.CurrentRegistrations.Should().Contain(x => x.Method == "@/" + TextDocumentNames.SemanticTokensFull);
9999
}
100100

101-
[FactWithSkipOn(SkipOnPlatform.All)]
101+
[RetryFact]
102102
public async Task Should_Unregister_Dynamically_While_Server_Is_Running()
103103
{
104104
var (client, server) = await Initialize(new ConfigureClient().Configure, new ConfigureServer().Configure);

test/Lsp.Tests/Integration/PartialItemTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public Delegates(ITestOutputHelper testOutputHelper, LanguageProtocolFixture<Def
2424
{
2525
}
2626

27-
[FactWithSkipOn(SkipOnPlatform.All)]
27+
[RetryFact]
2828
public async Task Should_Behave_Like_A_Task()
2929
{
3030
var result = await Client.TextDocument.RequestSemanticTokens(
@@ -34,7 +34,7 @@ public async Task Should_Behave_Like_A_Task()
3434
result!.Data.Should().HaveCount(3);
3535
}
3636

37-
[FactWithSkipOn(SkipOnPlatform.All)]
37+
[RetryFact]
3838
public async Task Should_Behave_Like_An_Observable()
3939
{
4040
var items = await Client.TextDocument

test/Lsp.Tests/Integration/PartialItemsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public Delegates(ITestOutputHelper testOutputHelper, LanguageProtocolFixture<Def
2828
{
2929
}
3030

31-
[FactWithSkipOn(SkipOnPlatform.All)]
31+
[RetryFact]
3232
public async Task Should_Behave_Like_A_Task()
3333
{
3434
var result = await Client.TextDocument.RequestCodeLens(
@@ -41,7 +41,7 @@ public async Task Should_Behave_Like_A_Task()
4141
result.Select(z => z.Command!.Name).Should().ContainInOrder("CodeLens 1", "CodeLens 2", "CodeLens 3");
4242
}
4343

44-
[FactWithSkipOn(SkipOnPlatform.All)]
44+
[RetryFact]
4545
public async Task Should_Behave_Like_An_Observable()
4646
{
4747
var items = await Client.TextDocument

test/Lsp.Tests/Integration/TypedCodeActionTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public async Task Should_Resolve_With_Data_Capability()
204204
item.CodeAction!.Command!.Name.Should().Be("resolved");
205205
}
206206

207-
[FactWithSkipOn(SkipOnPlatform.Mac)]
207+
[RetryFact]
208208
public async Task Should_Resolve_With_Partial_Data_Capability()
209209
{
210210
var (client, _) = await Initialize(
@@ -297,7 +297,7 @@ public async Task Should_Resolve_With_Data_CancellationToken()
297297
item.CodeAction!.Command!.Name.Should().Be("resolved");
298298
}
299299

300-
[FactWithSkipOn(SkipOnPlatform.Mac)]
300+
[RetryFact]
301301
public async Task Should_Resolve_With_Partial_Data_CancellationToken()
302302
{
303303
var (client, _) = await Initialize(

test/Lsp.Tests/Integration/TypedCodeLensTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ public async Task Should_Resolve_With_Data_Capability()
195195
item.Command!.Name.Should().Be("resolved");
196196
}
197197

198-
[FactWithSkipOn(SkipOnPlatform.Mac)]
198+
[RetryFact]
199199
public async Task Should_Resolve_With_Partial_Data_Capability()
200200
{
201201
var (client, _) = await Initialize(
@@ -284,7 +284,7 @@ public async Task Should_Resolve_With_Data_CancellationToken()
284284
item.Command!.Name.Should().Be("resolved");
285285
}
286286

287-
[FactWithSkipOn(SkipOnPlatform.Mac)]
287+
[RetryFact]
288288
public async Task Should_Resolve_With_Partial_Data_CancellationToken()
289289
{
290290
var (client, _) = await Initialize(

test/Lsp.Tests/Integration/TypedCompletionTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ public async Task Should_Resolve_With_Data_Capability()
195195
item.Detail.Should().Be("resolved");
196196
}
197197

198-
[FactWithSkipOn(SkipOnPlatform.Mac)]
198+
[RetryFact]
199199
public async Task Should_Resolve_With_Partial_Data_Capability()
200200
{
201201
var (client, _) = await Initialize(
@@ -284,7 +284,7 @@ public async Task Should_Resolve_With_Data_CancellationToken()
284284
item.Detail.Should().Be("resolved");
285285
}
286286

287-
[FactWithSkipOn(SkipOnPlatform.Mac)]
287+
[RetryFact]
288288
public async Task Should_Resolve_With_Partial_Data_CancellationToken()
289289
{
290290
var (client, _) = await Initialize(

test/Lsp.Tests/Integration/TypedDocumentLinkTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public async Task Should_Resolve_With_Data_Capability()
178178
item.Tooltip.Should().Be("resolved");
179179
}
180180

181-
[FactWithSkipOn(SkipOnPlatform.Mac)]
181+
[RetryFact]
182182
public async Task Should_Resolve_With_Partial_Data_Capability()
183183
{
184184
var (client, _) = await Initialize(
@@ -261,7 +261,7 @@ public async Task Should_Resolve_With_Data_CancellationToken()
261261
item.Tooltip.Should().Be("resolved");
262262
}
263263

264-
[FactWithSkipOn(SkipOnPlatform.Mac)]
264+
[RetryFact]
265265
public async Task Should_Resolve_With_Partial_Data_CancellationToken()
266266
{
267267
var (client, _) = await Initialize(

test/TestingUtils/AutoNSubstitute/TestLoggerFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void Swap(ITestOutputHelper testOutputHelper)
4646
_testOutputHelper.Swap(testOutputHelper);
4747
}
4848

49-
class InnerTestOutputHelper : ITestOutputHelper
49+
private class InnerTestOutputHelper : ITestOutputHelper
5050
{
5151
private ITestOutputHelper? _testOutputHelper;
5252

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// See https://github.com/JoshKeegan/xRetry
2+
3+
using System.Collections.Concurrent;
4+
using Xunit.Abstractions;
5+
using Xunit.Sdk;
6+
7+
namespace TestingUtils
8+
{
9+
/// <summary>
10+
/// An XUnit message bus that can block messages from being passed until we want them to be.
11+
/// </summary>
12+
public class BlockingMessageBus : IMessageBus
13+
{
14+
private readonly IMessageBus _underlyingMessageBus;
15+
private ConcurrentQueue<IMessageSinkMessage> _messageQueue = new ConcurrentQueue<IMessageSinkMessage>();
16+
17+
public BlockingMessageBus(IMessageBus underlyingMessageBus)
18+
{
19+
_underlyingMessageBus = underlyingMessageBus;
20+
}
21+
22+
public bool QueueMessage(IMessageSinkMessage message)
23+
{
24+
_messageQueue.Enqueue(message);
25+
26+
// Returns if execution should continue. Since we are intercepting the message, we
27+
// have no way of checking this so always continue...
28+
return true;
29+
}
30+
31+
public void Clear()
32+
{
33+
_messageQueue = new ConcurrentQueue<IMessageSinkMessage>();
34+
}
35+
36+
/// <summary>
37+
/// Write the cached messages to the underlying message bus
38+
/// </summary>
39+
public void Flush()
40+
{
41+
while (_messageQueue.TryDequeue(out IMessageSinkMessage message))
42+
{
43+
_underlyingMessageBus.QueueMessage(message);
44+
}
45+
}
46+
47+
public void Dispose()
48+
{
49+
// Do not dispose of the underlying message bus - it is an externally owned resource
50+
}
51+
}
52+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// See https://github.com/JoshKeegan/xRetry
2+
3+
using Xunit.Sdk;
4+
5+
namespace TestingUtils
6+
{
7+
public interface IRetryableTestCase : IXunitTestCase
8+
{
9+
int MaxRetries { get; }
10+
int DelayBetweenRetriesMs { get; }
11+
}
12+
}

0 commit comments

Comments
 (0)