Skip to content

Commit 1875a7a

Browse files
committed
Отправка вопроса только в том случае, если произошла инициализация сервера
1 parent 687f7b1 commit 1875a7a

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/aop/sentry/PermissionFilterBeforeSendCallback.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
package com.github._1c_syntax.bsl.languageserver.aop.sentry;
2323

24+
import com.github._1c_syntax.bsl.languageserver.ClientCapabilitiesHolder;
2425
import com.github._1c_syntax.bsl.languageserver.LanguageClientHolder;
2526
import com.github._1c_syntax.bsl.languageserver.configuration.Language;
2627
import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
@@ -63,6 +64,8 @@ public class PermissionFilterBeforeSendCallback implements BeforeSendCallback {
6364

6465
private final LanguageClientHolder languageClientHolder;
6566

67+
private final ClientCapabilitiesHolder clientCapabilitiesHolder;
68+
6669
private final ServerInfo serverInfo;
6770

6871
private final AtomicBoolean questionWasSend = new AtomicBoolean(false);
@@ -78,7 +81,7 @@ public SentryEvent execute(@NotNull SentryEvent event, @NotNull Hint hint) {
7881

7982
private boolean sendToSentry() {
8083
if (configuration.getSendErrors() == SendErrorsMode.ASK) {
81-
if (!languageClientHolder.isConnected()) {
84+
if (!languageClientHolder.isConnected() || clientCapabilitiesHolder.getCapabilities().isEmpty()) {
8285
return false;
8386
}
8487

src/test/java/com/github/_1c_syntax/bsl/languageserver/aop/sentry/PermissionFilterBeforeSendCallbackTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@
2121
*/
2222
package com.github._1c_syntax.bsl.languageserver.aop.sentry;
2323

24+
import com.github._1c_syntax.bsl.languageserver.ClientCapabilitiesHolder;
2425
import com.github._1c_syntax.bsl.languageserver.LanguageClientHolder;
2526
import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
2627
import com.github._1c_syntax.bsl.languageserver.configuration.SendErrorsMode;
2728
import com.github._1c_syntax.bsl.languageserver.util.CleanupContextBeforeClassAndAfterEachTestMethod;
2829
import com.github._1c_syntax.bsl.languageserver.utils.Resources;
2930
import io.sentry.Hint;
3031
import io.sentry.SentryEvent;
32+
import org.eclipse.lsp4j.ClientCapabilities;
3133
import org.eclipse.lsp4j.MessageActionItem;
3234
import org.eclipse.lsp4j.services.LanguageClient;
3335
import org.junit.jupiter.api.Test;
@@ -54,6 +56,9 @@ class PermissionFilterBeforeSendCallbackTest {
5456
@Autowired
5557
private LanguageClientHolder languageClientHolder;
5658

59+
@Autowired
60+
private ClientCapabilitiesHolder clientCapabilitiesHolder;
61+
5762
@Test
5863
void sendOnlyOnSendMode() {
5964

@@ -168,6 +173,7 @@ void sendIfUserGavePermission() {
168173
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
169174

170175
languageClientHolder.connect(languageClient);
176+
clientCapabilitiesHolder.setCapabilities(mock(ClientCapabilities.class));
171177

172178
var event = new SentryEvent();
173179

@@ -180,6 +186,35 @@ void sendIfUserGavePermission() {
180186

181187
}
182188

189+
@Test
190+
void dontAskIfServerWasNotInitialized() {
191+
192+
// given
193+
configuration.setSendErrors(SendErrorsMode.ASK);
194+
195+
var languageClient = mock(LanguageClient.class);
196+
var answerTitle = Resources.getResourceString(
197+
configuration.getLanguage(),
198+
PermissionFilterBeforeSendCallback.class,
199+
"answer_send"
200+
);
201+
var answer = new MessageActionItem(answerTitle);
202+
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
203+
204+
languageClientHolder.connect(languageClient);
205+
clientCapabilitiesHolder.setCapabilities(null);
206+
207+
var event = new SentryEvent();
208+
209+
// when
210+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
211+
212+
// then
213+
assertThat(filteredEvent).isNull();
214+
assertThat(configuration.getSendErrors()).isEqualTo(SendErrorsMode.ASK);
215+
216+
}
217+
183218
@Test
184219
void notSendNextTimeIfUserGavePermissionOnce() {
185220

@@ -196,6 +231,7 @@ void notSendNextTimeIfUserGavePermissionOnce() {
196231
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
197232

198233
languageClientHolder.connect(languageClient);
234+
clientCapabilitiesHolder.setCapabilities(mock(ClientCapabilities.class));
199235

200236
var event = new SentryEvent();
201237

0 commit comments

Comments
 (0)