@@ -39,13 +39,33 @@ class MockLspServerChannel implements LspServerCommunicationChannel {
3939 /// Completer that will be signalled when the input stream is closed.
4040 final Completer _closed = Completer ();
4141
42+ /// Errors popups sent to the user.
43+ final shownErrors = < lsp.ShowMessageParams > [];
44+
45+ /// Warning popups sent to the user.
46+ final shownWarnings = < lsp.ShowMessageParams > [];
47+
4248 MockLspServerChannel (bool _printMessages) {
4349 if (_printMessages) {
4450 _serverToClient.stream
4551 .listen ((message) => print ('<== ' + jsonEncode (message)));
4652 _clientToServer.stream
4753 .listen ((message) => print ('==> ' + jsonEncode (message)));
4854 }
55+
56+ // Keep track of any errors/warnings that are sent to the user with
57+ // `window/showMessage`.
58+ _serverToClient.stream.listen ((message) {
59+ if (message is lsp.NotificationMessage &&
60+ message.method == Method .window_showMessage &&
61+ message.params is lsp.ShowMessageParams ) {
62+ if (message.params? .type == MessageType .Error ) {
63+ shownErrors.add (message.params);
64+ } else if (message.params? .type == MessageType .Warning ) {
65+ shownWarnings.add (message.params);
66+ }
67+ }
68+ });
4969 }
5070
5171 /// Future that will be completed when the input stream is closed.
@@ -167,7 +187,8 @@ class MockLspServerChannel implements LspServerCommunicationChannel {
167187 (message is lsp.ResponseMessage && message.id == request.id) ||
168188 (throwOnError &&
169189 message is lsp.NotificationMessage &&
170- message.method == Method .window_showMessage));
190+ message.method == Method .window_showMessage &&
191+ message.params? .type == MessageType .Error ));
171192
172193 if (response is lsp.ResponseMessage ) {
173194 return response;
0 commit comments