|
24 | 24 | import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
|
25 | 25 | import com.github._1c_syntax.bsl.languageserver.configuration.diagnostics.Mode;
|
26 | 26 | import com.github._1c_syntax.bsl.languageserver.configuration.diagnostics.SkipSupport;
|
| 27 | +import com.github._1c_syntax.bsl.languageserver.configuration.diagnostics.SubsystemFilter; |
27 | 28 | import com.github._1c_syntax.bsl.languageserver.context.DocumentContext;
|
28 | 29 | import com.github._1c_syntax.bsl.languageserver.context.FileType;
|
29 | 30 | import com.github._1c_syntax.bsl.languageserver.context.ServerContext;
|
|
42 | 43 | import org.springframework.beans.factory.annotation.Autowired;
|
43 | 44 | import org.springframework.boot.test.context.SpringBootTest;
|
44 | 45 |
|
| 46 | +import java.util.ArrayList; |
45 | 47 | import java.util.Collections;
|
46 | 48 | import java.util.HashMap;
|
| 49 | +import java.util.List; |
47 | 50 | import java.util.Map;
|
48 | 51 | import java.util.Optional;
|
49 | 52 |
|
@@ -289,34 +292,88 @@ void testDiagnosticModeExcept() {
|
289 | 292 | }
|
290 | 293 |
|
291 | 294 | @Test
|
292 |
| - void testDiagnosticSubsystemsCheck() { |
| 295 | + void testDiagnosticSubsystemsIncludeCheck() { |
293 | 296 |
|
294 |
| - var PATH_TO_METADATA = "src/test/resources/metadata"; |
| 297 | + var PATH_TO_METADATA = "src/test/resources/metadata/subSystemFilter"; |
295 | 298 | context.clear();
|
296 | 299 | context.setConfigurationRoot(Absolute.path(PATH_TO_METADATA));
|
297 | 300 | context.populateContext();
|
298 | 301 |
|
299 |
| - var form = spy((AbstractMDOForm) context.getConfiguration().getChildren().stream() |
300 |
| - .filter(mdo -> mdo.getName().equalsIgnoreCase("ФормаЭлемента")) |
301 |
| - .findFirst() |
302 |
| - .get()); |
| 302 | + documentContext = spy(TestUtils.getDocumentContext("А = 0")); |
303 | 303 |
|
304 |
| - var documentContext = spy(TestUtils.getDocumentContext("Сообщить()", context)); |
305 |
| - when(documentContext.getModuleType()).thenReturn(ModuleType.FormModule); |
306 |
| - when(documentContext.getMdObject()).thenReturn(Optional.of(form)); |
| 304 | + var form = context.getConfiguration().getChildren().stream() |
| 305 | + .filter(mdo -> mdo.getName().equalsIgnoreCase("ФормаЭлемента")) |
| 306 | + .findFirst(); |
307 | 307 |
|
| 308 | + doReturn(form).when(documentContext).getMdObject(); |
308 | 309 | // Без фильтра
|
309 | 310 | assertThat(diagnosticsConfiguration.diagnostics(documentContext))
|
310 | 311 | .isNotEmpty();
|
311 | 312 |
|
312 |
| - configuration.getDiagnosticsOptions().setSubsystemsFilter(new String[]{"ПодсистемаКотройНет"}); |
| 313 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 314 | + .setInclude(new ArrayList<>(List.of("ПодсистемаКотройНет"))); |
| 315 | + assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 316 | + .isEmpty(); |
| 317 | + |
| 318 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 319 | + .setInclude(new ArrayList<>(List.of("Подсистема1"))); |
| 320 | + assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 321 | + .isNotEmpty(); |
| 322 | + |
| 323 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 324 | + .setInclude(new ArrayList<>(List.of("Подсистема1_1"))); |
| 325 | + assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 326 | + .isNotEmpty(); |
| 327 | + |
| 328 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 329 | + .setInclude(new ArrayList<>(List.of("Подсистема1_1_1"))); |
| 330 | + assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 331 | + .isNotEmpty(); |
| 332 | + |
| 333 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 334 | + .setInclude(new ArrayList<>(List.of("Подсистема1_1_3"))); |
313 | 335 | assertThat(diagnosticsConfiguration.diagnostics(documentContext))
|
314 | 336 | .isEmpty();
|
315 | 337 |
|
316 |
| - configuration.getDiagnosticsOptions().setSubsystemsFilter(new String[]{"Подсистема1"}); |
| 338 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 339 | + .setInclude(new ArrayList<>(List.of("Подсистема2"))); |
317 | 340 | assertThat(diagnosticsConfiguration.diagnostics(documentContext))
|
318 | 341 | .isNotEmpty();
|
319 | 342 |
|
| 343 | + configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 344 | + .setInclude(new ArrayList<>(List.of("Подсистема3"))); |
| 345 | + assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 346 | + .isEmpty(); |
| 347 | + |
320 | 348 | }
|
| 349 | +// |
| 350 | +// @Test |
| 351 | +// void testDiagnosticSubsystemsExcludeCheck() { |
| 352 | +// |
| 353 | +// var PATH_TO_METADATA = "src/test/resources/metadata/subSystemFilter"; |
| 354 | +// context.clear(); |
| 355 | +// context.setConfigurationRoot(Absolute.path(PATH_TO_METADATA)); |
| 356 | +// context.populateContext(); |
| 357 | +// |
| 358 | +// documentContext = spy(TestUtils.getDocumentContext("А = 0")); |
| 359 | +// |
| 360 | +// var mdObject = context.getConfiguration().getChildren().stream() |
| 361 | +// .filter(mdo -> mdo.getName().equalsIgnoreCase("ОбщийМодуль1")) |
| 362 | +// .findFirst(); |
| 363 | +// |
| 364 | +// doReturn(mdObject).when(documentContext).getMdObject(); |
| 365 | +// // Без фильтра |
| 366 | +// assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 367 | +// .isNotEmpty(); |
| 368 | +// |
| 369 | +// configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 370 | +// .setExclude(new ArrayList<>(List.of("ПодсистемаКотройНет"))); |
| 371 | +// assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 372 | +// .isNotNull(); |
| 373 | +// configuration.getDiagnosticsOptions().getSubsystemsFilter() |
| 374 | +// .setExclude(new ArrayList<>(List.of("Подсистема2"))); |
| 375 | +// assertThat(diagnosticsConfiguration.diagnostics(documentContext)) |
| 376 | +// .isNull(); |
| 377 | +// } |
321 | 378 |
|
322 | 379 | }
|
0 commit comments