Skip to content

Commit e4b04cb

Browse files
more serial changes
1 parent a599e48 commit e4b04cb

File tree

3 files changed

+32
-18
lines changed

3 files changed

+32
-18
lines changed

src/Protocol/Features/Window/WorkDoneProgressFeature.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace OmniSharp.Extensions.LanguageServer.Protocol
1111
{
1212
namespace Models
1313
{
14-
[Parallel]
14+
[Serial]
1515
[Method(WindowNames.WorkDoneProgressCreate, Direction.ServerToClient)]
1616
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Window"), GenerateHandlerMethods,
1717
GenerateRequestMethods(typeof(IWindowLanguageServer), typeof(ILanguageServer))]
@@ -23,7 +23,7 @@ public partial record WorkDoneProgressCreateParams : IRequest
2323
public ProgressToken? Token { get; init; }
2424
}
2525

26-
[Parallel]
26+
[Serial]
2727
[Method(WindowNames.WorkDoneProgressCancel, Direction.ClientToServer)]
2828
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Window"), GenerateHandlerMethods,
2929
GenerateRequestMethods(typeof(IWindowLanguageClient), typeof(ILanguageClient))]

test/Lsp.Tests/Integration/Fixtures/LanguageProtocolFixture.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,30 @@ public class LanguageProtocolFixture<TConfigureFixture, TConfigureClient, TConfi
1414
where TConfigureClient : IConfigureLanguageClientOptions, new()
1515
where TConfigureServer : IConfigureLanguageServerOptions, new()
1616
{
17-
private readonly TestLoggerFactory _loggerFactory;
17+
private readonly TestLoggerFactory _loggerServerFactory;
18+
private readonly TestLoggerFactory _loggerClientFactory;
1819

1920
public LanguageProtocolFixture() :
20-
base(new TConfigureFixture().Configure(new JsonRpcTestOptions(new TestLoggerFactory(null))))
21+
base(
22+
new TConfigureFixture().Configure(
23+
new JsonRpcTestOptions(
24+
new TestLoggerFactory(null, "{Timestamp:yyyy-MM-dd HH:mm:ss} [Server] [{Level}] {Message}{NewLine}{Exception}"),
25+
new TestLoggerFactory(null, "{Timestamp:yyyy-MM-dd HH:mm:ss} [Client] [{Level}] {Message}{NewLine}{Exception}")
26+
)
27+
)
28+
)
2129
{
22-
_loggerFactory = (TestOptions.ServerLoggerFactory as TestLoggerFactory)!;
30+
_loggerServerFactory = ( TestOptions.ServerLoggerFactory as TestLoggerFactory )!;
31+
_loggerClientFactory = ( TestOptions.ClientLoggerFactory as TestLoggerFactory )!;
2332
}
2433

2534
public void Swap(ITestOutputHelper testOutputHelper)
2635
{
27-
_loggerFactory.Swap(testOutputHelper);
36+
_loggerServerFactory.Swap(testOutputHelper);
37+
_loggerClientFactory.Swap(testOutputHelper);
2838
}
2939

30-
public ILanguageClient Client { get; private set; }= null!;
40+
public ILanguageClient Client { get; private set; } = null!;
3141
public ILanguageServer Server { get; private set; } = null!;
3242

3343
public async Task InitializeAsync()

test/Lsp.Tests/Integration/ProgressTests.cs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
24
using System.Reactive;
35
using System.Reactive.Disposables;
46
using System.Reactive.Linq;
@@ -266,8 +268,8 @@ public async Task Should_Support_Cancelling_Work_Done_From_Client_To_Server_Requ
266268
var token = new ProgressToken(Guid.NewGuid().ToString());
267269

268270
var workDoneObservable = Client.WorkDoneManager.Monitor(token);
269-
var observable = workDoneObservable.Replay();
270-
using var _ = observable.Connect();
271+
var data = new List<WorkDoneProgress>();
272+
using var _ = workDoneObservable.Subscribe(x => data.Add(x));
271273

272274
using var workDoneObserver = await Server.WorkDoneManager.Create(
273275
token, new WorkDoneProgressBegin {
@@ -294,7 +296,7 @@ public async Task Should_Support_Cancelling_Work_Done_From_Client_To_Server_Requ
294296
}
295297
);
296298

297-
await observable.Take(3).ToTask(CancellationToken);
299+
await TestHelper.DelayUntil(() => data.Count >= 3, CancellationToken);
298300

299301
workDoneObservable.Dispose();
300302

@@ -314,14 +316,16 @@ public async Task Should_Support_Cancelling_Work_Done_From_Client_To_Server_Requ
314316

315317
workDoneObserver.OnCompleted();
316318

317-
var results = await observable.Select(
318-
z => z switch {
319-
WorkDoneProgressBegin begin => begin.Message,
320-
WorkDoneProgressReport begin => begin.Message,
321-
WorkDoneProgressEnd begin => begin.Message,
322-
_ => throw new NotSupportedException()
323-
}
324-
).ToArray().ToTask(CancellationToken);
319+
var results = data
320+
.Select(
321+
z => z switch {
322+
WorkDoneProgressBegin begin => begin.Message,
323+
WorkDoneProgressReport begin => begin.Message,
324+
WorkDoneProgressEnd begin => begin.Message,
325+
_ => throw new NotSupportedException()
326+
}
327+
)
328+
.ToArray();
325329

326330
results.Should().ContainInOrder("Begin", "Report 1", "Report 2");
327331
}

0 commit comments

Comments
 (0)