Skip to content

Commit 58011ad

Browse files
brought back methods that were removed by accident (#276) (#277)
* brought hack methods that were removed by accident (#276) * Added tests!
1 parent 95c5418 commit 58011ad

File tree

2 files changed

+216
-0
lines changed

2 files changed

+216
-0
lines changed

src/Protocol/Window/IShowMessageHandler.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
using System;
12
using System.Threading;
23
using System.Threading.Tasks;
34
using MediatR;
45
using OmniSharp.Extensions.JsonRpc;
56
using OmniSharp.Extensions.JsonRpc.Generation;
7+
using OmniSharp.Extensions.LanguageServer.Protocol.Client;
68
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
79
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
810

@@ -16,4 +18,57 @@ public abstract class ShowMessageHandler : IShowMessageHandler
1618
{
1719
public abstract Task<Unit> Handle(ShowMessageParams request, CancellationToken cancellationToken);
1820
}
21+
22+
public static partial class ShowMessageExtensions
23+
{
24+
public static void Show(this ILanguageServer mediator, ShowMessageParams @params)
25+
{
26+
mediator.ShowMessage(@params);
27+
}
28+
29+
public static void ShowError(this ILanguageServer mediator, string message)
30+
{
31+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Error, Message = message });
32+
}
33+
34+
public static void Show(this ILanguageServer mediator, string message)
35+
{
36+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Log, Message = message });
37+
}
38+
39+
public static void ShowWarning(this ILanguageServer mediator, string message)
40+
{
41+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Warning, Message = message });
42+
}
43+
44+
public static void ShowInfo(this ILanguageServer mediator, string message)
45+
{
46+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Info, Message = message });
47+
}
48+
49+
public static void Show(this IWindowLanguageServer mediator, ShowMessageParams @params)
50+
{
51+
mediator.ShowMessage(@params);
52+
}
53+
54+
public static void ShowError(this IWindowLanguageServer mediator, string message)
55+
{
56+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Error, Message = message });
57+
}
58+
59+
public static void Show(this IWindowLanguageServer mediator, string message)
60+
{
61+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Log, Message = message });
62+
}
63+
64+
public static void ShowWarning(this IWindowLanguageServer mediator, string message)
65+
{
66+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Warning, Message = message });
67+
}
68+
69+
public static void ShowInfo(this IWindowLanguageServer mediator, string message)
70+
{
71+
mediator.ShowMessage(new ShowMessageParams() { Type = MessageType.Info, Message = message });
72+
}
73+
}
1974
}
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
using System;
2+
using System.Linq;
3+
using System.Collections.Generic;
4+
using System.Threading.Tasks;
5+
using FluentAssertions;
6+
using Microsoft.Extensions.DependencyInjection;
7+
using NSubstitute;
8+
using OmniSharp.Extensions.JsonRpc.Testing;
9+
using OmniSharp.Extensions.LanguageProtocol.Testing;
10+
using OmniSharp.Extensions.LanguageServer.Client;
11+
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
12+
using OmniSharp.Extensions.LanguageServer.Protocol.Window;
13+
using OmniSharp.Extensions.LanguageServer.Server;
14+
using Xunit;
15+
using Xunit.Abstractions;
16+
17+
namespace Lsp.Tests.Integration
18+
{
19+
public class ShowMessageTests : LanguageProtocolTestBase
20+
{
21+
public ShowMessageTests(ITestOutputHelper outputHelper) : base(new JsonRpcTestOptions()
22+
.ConfigureForXUnit(outputHelper)
23+
.WithSettleTimeSpan(TimeSpan.FromMilliseconds(200))
24+
)
25+
{
26+
}
27+
28+
private readonly List<ShowMessageParams> _receivedMessages = new List<ShowMessageParams>();
29+
30+
[Fact]
31+
public async Task Should_Show_Messages_Through_Window_Extension_Methods()
32+
{
33+
var (client, server) = await Initialize(ConfigureClient, ConfigureServer);
34+
35+
server.Window.ShowError("Something bad happened...");
36+
server.Window.ShowInfo("Here's something cool...");
37+
server.Window.ShowWarning("Uh-oh...");
38+
server.Window.Show("Just gotta let you know!");
39+
server.Window.Show(new ShowMessageParams() {
40+
Type = MessageType.Log, Message = "1234"
41+
});
42+
server.Window.ShowMessage(new ShowMessageParams() {
43+
Type = MessageType.Log, Message = "1234"
44+
});
45+
46+
await SettleNext();
47+
48+
_receivedMessages.Should().HaveCount(6);
49+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Error);
50+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Info);
51+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Warning);
52+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Log).And.Subject.Count(z => z.Type == MessageType.Log).Should().Be(3);
53+
}
54+
55+
[Fact]
56+
public async Task Should_Show_Messages_Through_Server_Extension_Methods()
57+
{
58+
var (client, server) = await Initialize(ConfigureClient, ConfigureServer);
59+
60+
server.ShowError("Something bad happened...");
61+
server.ShowInfo("Here's something cool...");
62+
server.ShowWarning("Uh-oh...");
63+
server.Show("Just gotta let you know!");
64+
server.Show(new ShowMessageParams() {
65+
Type = MessageType.Log, Message = "1234"
66+
});
67+
server.ShowMessage(new ShowMessageParams() {
68+
Type = MessageType.Log, Message = "1234"
69+
});
70+
71+
await SettleNext();
72+
73+
_receivedMessages.Should().HaveCount(6);
74+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Error);
75+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Info);
76+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Warning);
77+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Log).And.Subject.Count(z => z.Type == MessageType.Log).Should().Be(3);
78+
}
79+
80+
private void ConfigureClient(LanguageClientOptions options)
81+
{
82+
options.OnShowMessage((request) => { _receivedMessages.Add(request); });
83+
}
84+
85+
private void ConfigureServer(LanguageServerOptions options)
86+
{
87+
// options.OnCodeLens()
88+
}
89+
}
90+
public class LogMessageTests : LanguageProtocolTestBase
91+
{
92+
public LogMessageTests(ITestOutputHelper outputHelper) : base(new JsonRpcTestOptions()
93+
.ConfigureForXUnit(outputHelper)
94+
.WithSettleTimeSpan(TimeSpan.FromMilliseconds(200))
95+
)
96+
{
97+
}
98+
99+
private readonly List<LogMessageParams> _receivedMessages = new List<LogMessageParams>();
100+
101+
[Fact]
102+
public async Task Should_Log_Messages_Through_Window_Extension_Methods()
103+
{
104+
var (client, server) = await Initialize(ConfigureClient, ConfigureServer);
105+
106+
server.Window.LogError("Something bad happened...");
107+
server.Window.LogInfo("Here's something cool...");
108+
server.Window.LogWarning("Uh-oh...");
109+
server.Window.Log("Just gotta let you know!");
110+
server.Window.Log(new LogMessageParams() {
111+
Type = MessageType.Log, Message = "1234"
112+
});
113+
server.Window.LogMessage(new LogMessageParams() {
114+
Type = MessageType.Log, Message = "1234"
115+
});
116+
117+
await SettleNext();
118+
119+
_receivedMessages.Should().HaveCount(6);
120+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Error);
121+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Info);
122+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Warning);
123+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Log).And.Subject.Count(z => z.Type == MessageType.Log).Should().Be(3);
124+
}
125+
126+
[Fact]
127+
public async Task Should_Log_Messages_Through_Server_Extension_Methods()
128+
{
129+
var (client, server) = await Initialize(ConfigureClient, ConfigureServer);
130+
131+
server.LogError("Something bad happened...");
132+
server.LogInfo("Here's something cool...");
133+
server.LogWarning("Uh-oh...");
134+
server.Log("Just gotta let you know!");
135+
server.Log(new LogMessageParams() {
136+
Type = MessageType.Log, Message = "1234"
137+
});
138+
server.LogMessage(new LogMessageParams() {
139+
Type = MessageType.Log, Message = "1234"
140+
});
141+
142+
await SettleNext();
143+
144+
_receivedMessages.Should().HaveCount(6);
145+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Error);
146+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Info);
147+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Warning);
148+
_receivedMessages.Should().Contain(z => z.Type == MessageType.Log).And.Subject.Count(z => z.Type == MessageType.Log).Should().Be(3);
149+
}
150+
151+
private void ConfigureClient(LanguageClientOptions options)
152+
{
153+
options.OnLogMessage((request) => { _receivedMessages.Add(request); });
154+
}
155+
156+
private void ConfigureServer(LanguageServerOptions options)
157+
{
158+
// options.OnCodeLens()
159+
}
160+
}
161+
}

0 commit comments

Comments
 (0)