From ee5a35ebb48f6fcbc765ecd5ed122f62979b56ae Mon Sep 17 00:00:00 2001 From: azerr Date: Fri, 2 Sep 2022 07:55:58 +0200 Subject: [PATCH] Suppress validation kinds based on file pattern Fixes #1275 Signed-off-by: azerr --- .../eclipse/lemminx/XMLLanguageServer.java | 4 +- .../lemminx/XMLTextDocumentService.java | 10 +- .../diagnostics/XMLValidator.java | 2 +- .../settings/ContentModelSettings.java | 6 +- .../settings/XMLValidationFilter.java | 51 +++++++ .../settings/XMLValidationRootSettings.java | 133 +++++++++++++++++ .../settings/XMLValidationSettings.java | 3 +- .../lemminx/services/XMLLanguageService.java | 9 +- .../lemminx/settings/SharedSettings.java | 7 +- .../META-INF/native-image/reflect-config.json | 16 +++ .../java/org/eclipse/lemminx/XMLAssert.java | 16 +-- .../contentmodel/DTDDiagnosticsTest.java | 8 +- .../DTDDoctypeDiagnosticsTest.java | 4 +- .../DTDEntityDiagnosticsTest.java | 6 +- .../contentmodel/XMLProblemsTest.java | 10 +- .../XMLSchemaDiagnosticsTest.java | 10 +- .../XMLSyntaxRelatedInfoFinderTest.java | 5 +- ...dationExternalResourcesBasedOnDTDTest.java | 30 ++-- ...dationExternalResourcesBasedOnXSDTest.java | 31 ++-- .../contentmodel/XMLValidationFilterTest.java | 135 ++++++++++++++++++ .../DTDValidationExternalResourcesTest.java | 8 +- .../XSDValidationExternalResourcesTest.java | 6 +- .../ErrorParticipantLanguageServiceTest.java | 2 +- .../lemminx/settings/SettingsMergeTest.java | 6 +- 24 files changed, 420 insertions(+), 98 deletions(-) create mode 100644 org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationFilter.java create mode 100644 org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationRootSettings.java create mode 100644 org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationFilterTest.java diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java index 93b3ea14f1..e99a1f1281 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java @@ -36,7 +36,7 @@ import org.eclipse.lemminx.customservice.XMLLanguageServerAPI; import org.eclipse.lemminx.dom.DOMDocument; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.logs.LogHelper; import org.eclipse.lemminx.services.IXMLDocumentProvider; import org.eclipse.lemminx.services.IXMLNotificationService; @@ -222,7 +222,7 @@ private synchronized void updateSettings(Object initOptions, boolean initLogs) { } ContentModelSettings cmSettings = ContentModelSettings.getContentModelXMLSettings(initSettings); if (cmSettings != null) { - XMLValidationSettings validationSettings = cmSettings.getValidation(); + XMLValidationRootSettings validationSettings = cmSettings.getValidation(); xmlTextDocumentService.getValidationSettings().merge(validationSettings); } diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLTextDocumentService.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLTextDocumentService.java index bf925959eb..004442e5e5 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLTextDocumentService.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLTextDocumentService.java @@ -38,7 +38,7 @@ import org.eclipse.lemminx.commons.TextDocument; import org.eclipse.lemminx.dom.DOMDocument; import org.eclipse.lemminx.dom.DOMParser; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.DocumentSymbolsResult; import org.eclipse.lemminx.services.SymbolInformationResult; import org.eclipse.lemminx.services.XMLLanguageService; @@ -250,7 +250,8 @@ public CompletableFuture, CompletionList>> completio @Override public CompletableFuture resolveCompletionItem(CompletionItem unresolved) { return computeDOMAsync(unresolved.getData(), (xmlDocument, cancelChecker) -> { - return getXMLLanguageService().resolveCompletionItem(unresolved, xmlDocument, sharedSettings, cancelChecker); + return getXMLLanguageService().resolveCompletionItem(unresolved, xmlDocument, sharedSettings, + cancelChecker); }); } @@ -660,7 +661,8 @@ void validate(DOMDocument xmlDocument, Map validationArgs) throw cancelChecker.checkCanceled(); getXMLLanguageService().publishDiagnostics(xmlDocument, params -> xmlLanguageServer.getLanguageClient().publishDiagnostics(params), - (doc) -> triggerValidationFor(doc, TriggeredBy.Other), sharedSettings.getValidationSettings(), + (doc) -> triggerValidationFor(doc, TriggeredBy.Other), + sharedSettings.getValidationSettings(), validationArgs, cancelChecker); } @@ -704,7 +706,7 @@ public XMLFormattingOptions getSharedFormattingSettings() { return sharedSettings.getFormattingSettings(); } - public XMLValidationSettings getValidationSettings() { + public XMLValidationRootSettings getValidationSettings() { return sharedSettings.getValidationSettings(); } diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/diagnostics/XMLValidator.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/diagnostics/XMLValidator.java index 3ccfde4716..83778f49ad 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/diagnostics/XMLValidator.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/participants/diagnostics/XMLValidator.java @@ -363,7 +363,7 @@ private static void warnNoGrammar(DOMDocument document, List diagnos range = new Range(new Position(0, 0), new Position(0, 0)); } diagnostics.add(new Diagnostic(range, "No grammar constraints (DTD or XML Schema).", severity, - document.getDocumentURI(), XMLSyntaxErrorCode.NoGrammarConstraints.name())); + "xml", XMLSyntaxErrorCode.NoGrammarConstraints.name())); } } diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/ContentModelSettings.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/ContentModelSettings.java index c6245d2397..bb4a741d92 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/ContentModelSettings.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/ContentModelSettings.java @@ -28,7 +28,7 @@ public class ContentModelSettings { private XMLFileAssociation[] fileAssociations; - private XMLValidationSettings validation; + private XMLValidationRootSettings validation; private XMLSymbolsSettings symbols; @@ -90,11 +90,11 @@ public static ContentModelSettings getContentModelXMLSettings(Object initializat return JSONUtility.toModel(initializationOptionsSettings, ContentModelSettings.class); } - public void setValidation(XMLValidationSettings validation) { + public void setValidation(XMLValidationRootSettings validation) { this.validation = validation; } - public XMLValidationSettings getValidation() { + public XMLValidationRootSettings getValidation() { return validation; } diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationFilter.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationFilter.java new file mode 100644 index 0000000000..8a71ca615b --- /dev/null +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationFilter.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2022 Red Hat Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat Inc. - initial API and implementation + */ +package org.eclipse.lemminx.extensions.contentmodel.settings; + +import org.eclipse.lemminx.settings.PathPatternMatcher; + +/** + * XML validation settings used for a given pattern file. + * + * + * { + "pattern": "**{.project,.classpath,plugin.xml,feature.xml,category.xml,.target,.product}", + "noGrammar": "ignore" + } + * + * + * @author Angelo ZERR + * + */ +public class XMLValidationFilter extends XMLValidationSettings { + + private String pattern; + + private transient PathPatternMatcher matcher; + + public boolean matches(String uri) { + if (matcher == null) { + matcher = new PathPatternMatcher(); + matcher.setPattern(pattern); + } + return matcher.matches(uri); + } + + public String getPattern() { + return pattern; + } + + public void setPattern(String pattern) { + this.pattern = pattern; + } +} diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationRootSettings.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationRootSettings.java new file mode 100644 index 0000000000..be43b206ad --- /dev/null +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationRootSettings.java @@ -0,0 +1,133 @@ +/** + * Copyright (c) 2022 Red Hat Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat Inc. - initial API and implementation + */ +package org.eclipse.lemminx.extensions.contentmodel.settings; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * XML validation settings root which defines validation rules for all files. + * + * The {@link XMLValidationRootSettings}{@link #filters} can be used to define + * custom validation rule for a given file pattern: + * + * +[ + { + "pattern": "**.exsd", + "enabled": false + }, + { + "pattern": "**{.project,.classpath,plugin.xml,feature.xml,category.xml,.target,.product}", + "noGrammar": "ignore" + } +] + * + * + */ +public class XMLValidationRootSettings extends XMLValidationSettings { + + private static final XMLValidationFilter[] DEFAULT_FILTERS; + + private XMLValidationFilter[] filters; + + static { + DEFAULT_FILTERS = createDefaultFilters(); + } + + public XMLValidationRootSettings() { + super(); + setFilters(DEFAULT_FILTERS); + } + + /** + * Returns validation filters to define custom validation rule for a given file + * pattern and null otherwise. + * + * @return validation filters to define custom validation rule for a given file + * pattern and null otherwise. + */ + public XMLValidationFilter[] getFilters() { + return filters; + } + + public void setFilters(XMLValidationFilter[] filters) { + this.filters = filters; + } + + /** + * Returns the validation settings for the given uri and the global validation + * settings otherwise. + * + * @param uri the XML document to validate. + * + * @returnthe validation settings for the given uri and the global validation + * settings otherwise. + */ + public XMLValidationSettings getValidationSettings(String uri) { + if (filters != null) { + for (XMLValidationFilter filter : filters) { + if (filter.matches(uri)) { + return filter; + } + } + } + return this; + } + + public XMLValidationRootSettings merge(XMLValidationRootSettings settings) { + if (settings != null) { + this.filters = settings.getFilters(); + } + super.merge(settings); + return this; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + Arrays.hashCode(filters); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + XMLValidationRootSettings other = (XMLValidationRootSettings) obj; + return Arrays.equals(filters, other.filters); + } + + private static XMLValidationFilter[] createDefaultFilters() { + List filters = new ArrayList<>(); + // Ignore validation for Eclipse '*.exsd' files + XMLValidationFilter filter = new XMLValidationFilter(); + filter.setEnabled(false); + filter.setPattern("**.exsd"); + filters.add(filter); + // Don't warn that XML file have no grammar for Eclipse '.project', + // '.classpath', + // 'plugin.xml', 'feature.xml' files + filter = new XMLValidationFilter(); + filter.setNoGrammar("ignore"); + filter.setPattern("**{.project,.classpath,plugin.xml,feature.xml,category.xml,.target,.product}"); + filters.add(filter); + return filters.toArray(new XMLValidationFilter[filters.size()]); + } +} \ No newline at end of file diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationSettings.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationSettings.java index b0abd8ce99..0fe009344b 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationSettings.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/contentmodel/settings/XMLValidationSettings.java @@ -16,7 +16,8 @@ import org.eclipse.lsp4j.PublishDiagnosticsCapabilities; /** - * XMLValidationSettings + * XML validation settings for a given file. + * */ public class XMLValidationSettings { diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java index 493dd01a16..7338c33b86 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/XMLLanguageService.java @@ -23,6 +23,7 @@ import org.eclipse.lemminx.customservice.AutoCloseTagResponse; import org.eclipse.lemminx.dom.DOMDocument; import org.eclipse.lemminx.dom.DOMParser; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; import org.eclipse.lemminx.services.extensions.XMLExtensionsRegistry; import org.eclipse.lemminx.services.extensions.diagnostics.DiagnosticsResult; @@ -174,12 +175,16 @@ public List doDiagnostics(DOMDocument xmlDocument, XMLValidationSett public CompletableFuture publishDiagnostics(DOMDocument xmlDocument, Consumer publishDiagnostics, Consumer triggerValidation, - XMLValidationSettings validationSettings, Map validationArgs, CancelChecker cancelChecker) { + XMLValidationRootSettings validationSettings, Map validationArgs, + CancelChecker cancelChecker) { String uri = xmlDocument.getDocumentURI(); TextDocument document = xmlDocument.getTextDocument(); + XMLValidationSettings validationSettingsForUri = validationSettings != null + ? validationSettings.getValidationSettings(xmlDocument.getDocumentURI()) + : null; // Process validation - DiagnosticsResult diagnostics = (DiagnosticsResult) this.doDiagnostics(xmlDocument, validationSettings, + DiagnosticsResult diagnostics = (DiagnosticsResult) this.doDiagnostics(xmlDocument, validationSettingsForUri, validationArgs, cancelChecker); cancelChecker.checkCanceled(); publishDiagnostics.accept(new PublishDiagnosticsParams(uri, diagnostics)); diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/SharedSettings.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/SharedSettings.java index 27bb85cc75..7a15f733be 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/SharedSettings.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/settings/SharedSettings.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.eclipse.lemminx.settings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; /** @@ -21,7 +22,7 @@ public class SharedSettings { private final XMLCompletionSettings completionSettings; private final XMLFoldingSettings foldingSettings; private final XMLFormattingOptions formattingSettings; - private final XMLValidationSettings validationSettings; + private final XMLValidationRootSettings validationSettings; private final XMLSymbolSettings symbolSettings; private final XMLCodeActionSettings codeActionSettings; @@ -37,7 +38,7 @@ public SharedSettings() { this.completionSettings = new XMLCompletionSettings(); this.foldingSettings = new XMLFoldingSettings(); this.formattingSettings = new XMLFormattingOptions(true); - this.validationSettings = new XMLValidationSettings(); + this.validationSettings = new XMLValidationRootSettings(); this.symbolSettings = new XMLSymbolSettings(); this.codeActionSettings = new XMLCodeActionSettings(); this.codeLensSettings = new XMLCodeLensSettings(); @@ -75,7 +76,7 @@ public XMLFormattingOptions getFormattingSettings() { return formattingSettings; } - public XMLValidationSettings getValidationSettings() { + public XMLValidationRootSettings getValidationSettings() { return validationSettings; } diff --git a/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json index 54db0ef2d5..ad71af284d 100644 --- a/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json +++ b/org.eclipse.lemminx/src/main/resources/META-INF/native-image/reflect-config.json @@ -213,6 +213,14 @@ "parameterTypes": [] }] }, + { + "name": "org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, { "name": "org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings", "allDeclaredFields": true, @@ -221,6 +229,14 @@ "parameterTypes": [] }] }, + { + "name": "org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationFilter", + "allDeclaredFields": true, + "methods": [{ + "name": "", + "parameterTypes": [] + }] + }, { "name": "org.eclipse.lemminx.utils.platform.Memory", "allDeclaredFields": true, diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java index 068aca739c..760c2514cf 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/XMLAssert.java @@ -45,7 +45,7 @@ import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; import org.eclipse.lemminx.extensions.contentmodel.settings.SchemaEnabled; import org.eclipse.lemminx.extensions.contentmodel.settings.XMLSchemaSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.extensions.generators.FileContentGeneratorManager; import org.eclipse.lemminx.extensions.generators.FileContentGeneratorSettings; import org.eclipse.lemminx.services.XMLLanguageService; @@ -612,7 +612,7 @@ public static void testDiagnosticsFor(String xml, String catalogPath, Consumer) null, expected); } - public static void testPublishDiagnosticsFor(String xml, String fileURI, XMLValidationSettings validationSettings, + public static void testPublishDiagnosticsFor(String xml, String fileURI, XMLValidationRootSettings validationSettings, Consumer configuration, PublishDiagnosticsParams... expected) { XMLLanguageService xmlLanguageService = new XMLLanguageService(); if (configuration != null) { @@ -756,7 +756,7 @@ public static void testPublishDiagnosticsFor(String xml, String fileURI, XMLLang testPublishDiagnosticsFor(xml, fileURI, null, xmlLanguageService, expected); } - public static void testPublishDiagnosticsFor(String xml, String fileURI, XMLValidationSettings validationSettings, + public static void testPublishDiagnosticsFor(String xml, String fileURI, XMLValidationRootSettings validationSettings, XMLLanguageService xmlLanguageService, PublishDiagnosticsParams... expected) { List actual = new ArrayList<>(); @@ -797,7 +797,7 @@ public static void publishDiagnostics(DOMDocument xmlDocument, List actual, XMLLanguageService languageService) { CompletableFuture error = languageService.publishDiagnostics(xmlDocument, params -> { actual.add(params); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDiagnosticsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDiagnosticsTest.java index 7a2aa10659..286bda6ce1 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDiagnosticsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDiagnosticsTest.java @@ -28,7 +28,7 @@ import org.eclipse.lemminx.extensions.contentmodel.participants.DTDErrorCode; import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSyntaxErrorCode; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lsp4j.Diagnostic; import org.eclipse.lsp4j.DiagnosticRelatedInformation; @@ -395,7 +395,7 @@ public void testDTDNotFoundWithEntitySYSTEMAndResolve() throws Exception { " <\r\n" + // [2] ""; ContentModelSettings settings = new ContentModelSettings(); - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); settings.setValidation(validation); @@ -471,7 +471,7 @@ public void MSG_SPACE_REQUIRED_BEFORE_ENTITY_NAME_IN_ENTITYDECL() throws Excepti public void diagnosticRelatedInformationWithDOCTYPE() throws Exception { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); // with related information settings.setValidation(validationSettings); @@ -505,7 +505,7 @@ public void diagnosticRelatedInformationWithDOCTYPE() throws Exception { public void diagnosticRelatedInformationWithXMLModel() throws Exception { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); // with related information settings.setValidation(validationSettings); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDoctypeDiagnosticsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDoctypeDiagnosticsTest.java index 96d50c3aec..852e9351a9 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDoctypeDiagnosticsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDDoctypeDiagnosticsTest.java @@ -19,7 +19,7 @@ import org.eclipse.lemminx.extensions.contentmodel.participants.DTDErrorCode; import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSyntaxErrorCode; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lsp4j.Diagnostic; import org.junit.jupiter.api.Test; @@ -111,7 +111,7 @@ public void doctypeNotAllowed() throws Exception { private static void testDiagnosticsDisallowDocTypeDecl(String xml, Diagnostic diagnostic) { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(false); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setDisallowDocTypeDecl(true); settings.setValidation(validationSettings); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDEntityDiagnosticsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDEntityDiagnosticsTest.java index 7018e5b49c..9690c2372a 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDEntityDiagnosticsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/DTDEntityDiagnosticsTest.java @@ -23,7 +23,7 @@ import org.eclipse.lemminx.XMLAssert; import org.eclipse.lemminx.extensions.contentmodel.participants.DTDErrorCode; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lemminx.settings.EnforceQuoteStyle; import org.eclipse.lemminx.settings.QuoteStyle; @@ -307,7 +307,7 @@ public void EntityNotDeclaredRespectsIndentSettings2() throws Exception { public void defaultEntityExpansionLimit() { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setResolveExternalEntities(true); settings.setValidation(validationSettings); @@ -346,7 +346,7 @@ public void defaultEntityExpansionLimit() { public void customEntityExpansionLimit() { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setResolveExternalEntities(true); settings.setValidation(validationSettings); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLProblemsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLProblemsTest.java index d1082f552e..1b48888be9 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLProblemsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLProblemsTest.java @@ -33,7 +33,7 @@ import org.eclipse.lemminx.extensions.contentmodel.participants.codeactions.nogrammarconstraints.GenerateXMLModelWithXSDCodeActionResolver; import org.eclipse.lemminx.extensions.contentmodel.participants.codeactions.nogrammarconstraints.GenerateXSINoNamespaceSchemaCodeActionResolver; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lemminx.services.data.DataEntryField; import org.eclipse.lemminx.settings.SharedSettings; @@ -75,10 +75,10 @@ public void noGrammarHintSelfClose() throws BadLocationException { private static void noGrammarHint(boolean selfClose) throws BadLocationException { String xml = selfClose ? "" : ""; Diagnostic d = new Diagnostic(r(0, 1, 0, 5), "No grammar constraints (DTD or XML Schema).", - DiagnosticSeverity.Hint, "test.xml", XMLSyntaxErrorCode.NoGrammarConstraints.name()); + DiagnosticSeverity.Hint, "xml", XMLSyntaxErrorCode.NoGrammarConstraints.name()); // Set noGrammar has 'hint' ContentModelSettings contentModelSettings = new ContentModelSettings(); - XMLValidationSettings problems = new XMLValidationSettings(); + XMLValidationRootSettings problems = new XMLValidationRootSettings(); problems.setNoGrammar("hint"); contentModelSettings.setValidation(problems); @@ -132,7 +132,7 @@ private static void noGrammarHint(boolean selfClose) throws BadLocationException public void noCodeActionResolverSupport() throws BadLocationException { String xml = ""; Diagnostic d = new Diagnostic(r(0, 1, 0, 5), "No grammar constraints (DTD or XML Schema).", - DiagnosticSeverity.Hint, "test.xml", XMLSyntaxErrorCode.NoGrammarConstraints.name()); + DiagnosticSeverity.Hint, "xml", XMLSyntaxErrorCode.NoGrammarConstraints.name()); SharedSettings settings = createSharedSettings(); @@ -182,7 +182,7 @@ public void noCodeActionResolverSupport() throws BadLocationException { public void withCodeActionResolverSupport() throws BadLocationException { String xml = ""; Diagnostic d = new Diagnostic(r(0, 1, 0, 5), "No grammar constraints (DTD or XML Schema).", - DiagnosticSeverity.Hint, "test.xml", XMLSyntaxErrorCode.NoGrammarConstraints.name()); + DiagnosticSeverity.Hint, "xml", XMLSyntaxErrorCode.NoGrammarConstraints.name()); SharedSettings settings = createSharedSettings(true); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java index 30d0c3318c..f980fc57b0 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSchemaDiagnosticsTest.java @@ -34,7 +34,7 @@ import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSchemaErrorCode; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; import org.eclipse.lemminx.extensions.contentmodel.settings.SchemaEnabled; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lemminx.settings.EnforceQuoteStyle; import org.eclipse.lemminx.settings.QuoteStyle; @@ -1141,7 +1141,7 @@ public void cvc_complex_type_2_3_elementBeforeText() throws BadLocationException public void diagnosticRelatedInformationWithXMLModelSchemaProblem() throws Exception { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); // with related information settings.setValidation(validationSettings); @@ -1173,7 +1173,7 @@ public void diagnosticRelatedInformationWithXMLModelSchemaProblem() throws Excep public void diagnosticRelatedInformationWithNoNamespaceSchemaLocationSchemaProblem() throws Exception { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); // with related information settings.setValidation(validationSettings); @@ -1205,7 +1205,7 @@ public void diagnosticRelatedInformationWithNoNamespaceSchemaLocationSchemaProbl public void diagnosticRelatedInformationWithNoNamespaceSchemaLocationSyntaxProblem() throws Exception { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); // with related information settings.setValidation(validationSettings); @@ -1237,7 +1237,7 @@ public void diagnosticRelatedInformationWithNoNamespaceSchemaLocationSyntaxProbl public void diagnosticRelatedInformationWithSchemaLocationSyntaxProblem() throws Exception { ContentModelSettings settings = new ContentModelSettings(); settings.setUseCache(true); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); // with related information settings.setValidation(validationSettings); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSyntaxRelatedInfoFinderTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSyntaxRelatedInfoFinderTest.java index 2d93af5a51..3aa43b2043 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSyntaxRelatedInfoFinderTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLSyntaxRelatedInfoFinderTest.java @@ -19,6 +19,7 @@ import org.eclipse.lemminx.XMLAssert; import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSyntaxErrorCode; import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lsp4j.Diagnostic; @@ -44,7 +45,7 @@ public void eTagRequiredWithoutRelatedInfo() { diagnostic.setSeverity(DiagnosticSeverity.Error); diagnostic.setSource("xml"); - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setNoGrammar("ignore"); ContentModelSettings settings = new ContentModelSettings(); settings.setValidation(validationSettings); @@ -180,7 +181,7 @@ public void markupEntityMismatchRelatedInfoWithBrokenClosingTag() { } private void assertDiagnosticsWithRelatedInfo(String xml, Diagnostic diagnostic) { - XMLValidationSettings validationSettings = new XMLValidationSettings(); + XMLValidationRootSettings validationSettings = new XMLValidationRootSettings(); validationSettings.setNoGrammar("ignore"); validationSettings.setCapabilities(new PublishDiagnosticsCapabilities(true)); ContentModelSettings settings = new ContentModelSettings(); diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnDTDTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnDTDTest.java index 7e3b9505b5..16a67032cf 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnDTDTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnDTDTest.java @@ -25,8 +25,7 @@ import org.eclipse.lemminx.extensions.contentmodel.participants.DTDErrorCode; import org.eclipse.lemminx.extensions.contentmodel.participants.ExternalResourceErrorCode; import org.eclipse.lemminx.extensions.contentmodel.participants.codeactions.DownloadDisabledResourceCodeAction; -import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lemminx.uriresolver.CacheResourcesManager; import org.eclipse.lsp4j.Diagnostic; @@ -42,7 +41,7 @@ public class XMLValidationExternalResourcesBasedOnDTDTest extends AbstractCacheB @Test public void docTypeDownloadDisabled() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -75,7 +74,7 @@ public void docTypeDownloadDisabled() throws Exception { @Test public void docTypeDownloadProblem() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -103,7 +102,8 @@ public void docTypeDownloadProblem() throws Exception { XMLAssert.testPublishDiagnosticsFor(xml, fileURI, validation, ls, pd(fileURI, new Diagnostic(r(0, 43, 0, 75), - "Error while downloading 'http://localhost:8080/sample.dtd' to '" + dtdCachePath + "' : '[java.net.ConnectException] Connection refused'.", + "Error while downloading 'http://localhost:8080/sample.dtd' to '" + dtdCachePath + + "' : '[java.net.ConnectException] Connection refused'.", DiagnosticSeverity.Error, "xml", ExternalResourceErrorCode.DownloadProblem.getCode()), new Diagnostic(r(1, 1, 1, 13), "Element type \"root-element\" must be declared.", DiagnosticSeverity.Error, "xml", DTDErrorCode.MSG_ELEMENT_NOT_DECLARED.getCode()))); @@ -112,7 +112,7 @@ public void docTypeDownloadProblem() throws Exception { @Test public void entityRefDownloadDisabled() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -150,7 +150,7 @@ public void entityRefDownloadDisabled() throws Exception { @Test public void entityRefDownloadProblem() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -183,23 +183,11 @@ public void entityRefDownloadProblem() throws Exception { XMLAssert.testPublishDiagnosticsFor(xml, fileURI, validation, ls, pd(fileURI, new Diagnostic(r(2, 32, 2, 64), - "Error while downloading 'http://localhost:8080/sample.dtd' to '" + dtdCachePath + "' : '[java.net.ConnectException] Connection refused'.", + "Error while downloading 'http://localhost:8080/sample.dtd' to '" + dtdCachePath + + "' : '[java.net.ConnectException] Connection refused'.", DiagnosticSeverity.Error, "xml", ExternalResourceErrorCode.DownloadProblem.getCode()), new Diagnostic(r(6, 1, 6, 7), "The entity \"abcd\" was referenced, but not declared.", DiagnosticSeverity.Error, "xml", DTDErrorCode.EntityNotDeclared.getCode()))); } - public static void testDiagnosticsFor(String xml, String fileURI, Diagnostic... expected) { - XMLAssert.testDiagnosticsFor(xml, null, null, fileURI, true, expected); - } - - public static void testDiagnosticsFor(String xml, String fileURI, ContentModelSettings settings, - Diagnostic... expected) { - XMLAssert.testDiagnosticsFor(xml, null, null, fileURI, true, settings, expected); - } - - public static void testDiagnosticsFor(XMLLanguageService ls, String xml, String fileURI, - ContentModelSettings settings, Diagnostic... expected) { - XMLAssert.testDiagnosticsFor(ls, xml, null, null, fileURI, true, settings, expected); - } } diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnXSDTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnXSDTest.java index 6b17b2b8af..fd3a59d55b 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnXSDTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationExternalResourcesBasedOnXSDTest.java @@ -25,8 +25,8 @@ import org.eclipse.lemminx.extensions.contentmodel.participants.ExternalResourceErrorCode; import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSchemaErrorCode; import org.eclipse.lemminx.extensions.contentmodel.participants.codeactions.DownloadDisabledResourceCodeAction; -import org.eclipse.lemminx.extensions.contentmodel.settings.ContentModelSettings; -import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; import org.eclipse.lemminx.services.XMLLanguageService; import org.eclipse.lemminx.uriresolver.CacheResourcesManager; import org.eclipse.lsp4j.Diagnostic; @@ -42,7 +42,7 @@ public class XMLValidationExternalResourcesBasedOnXSDTest extends AbstractCacheB @Test public void noNamespaceSchemaLocationDownloadDisabled() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -77,7 +77,7 @@ public void noNamespaceSchemaLocationDownloadDisabled() throws Exception { @Test public void noNamespaceSchemaLocationDownloadProblem() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -104,7 +104,8 @@ public void noNamespaceSchemaLocationDownloadProblem() throws Exception { // Downloaded error XMLAssert.testPublishDiagnosticsFor(xml, fileURI, validation, ls, pd(fileURI, new Diagnostic(r(2, 32, 2, 64), - "Error while downloading 'http://localhost:8080/sample.xsd' to '" + xsdCachePath + "' : '[java.net.ConnectException] Connection refused'.", + "Error while downloading 'http://localhost:8080/sample.xsd' to '" + xsdCachePath + + "' : '[java.net.ConnectException] Connection refused'.", DiagnosticSeverity.Error, "xml", ExternalResourceErrorCode.DownloadProblem.getCode()), new Diagnostic(r(0, 1, 0, 13), "cvc-elt.1.a: Cannot find the declaration of element 'root-element'.", DiagnosticSeverity.Error, "xml", XMLSchemaErrorCode.cvc_elt_1_a.getCode()))); @@ -113,7 +114,7 @@ public void noNamespaceSchemaLocationDownloadProblem() throws Exception { @Test public void schemaLocationDownloadDisabled() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -149,7 +150,7 @@ public void schemaLocationDownloadDisabled() throws Exception { @Test public void schemaLocationDownloadProblem() throws Exception { - XMLValidationSettings validation = new XMLValidationSettings(); + XMLValidationRootSettings validation = new XMLValidationRootSettings(); validation.setResolveExternalEntities(true); XMLLanguageService ls = new XMLLanguageService(); @@ -177,23 +178,11 @@ public void schemaLocationDownloadProblem() throws Exception { // Downloaded error XMLAssert.testPublishDiagnosticsFor(xml, fileURI, validation, ls, pd(fileURI, new Diagnostic(r(3, 37, 3, 69), - "Error while downloading 'http://localhost:8080/sample.xsd' to '" + xsdCachePath + "' : '[java.net.ConnectException] Connection refused'.", + "Error while downloading 'http://localhost:8080/sample.xsd' to '" + xsdCachePath + + "' : '[java.net.ConnectException] Connection refused'.", DiagnosticSeverity.Error, "xml", ExternalResourceErrorCode.DownloadProblem.getCode()), new Diagnostic(r(0, 1, 0, 13), "cvc-elt.1.a: Cannot find the declaration of element 'root-element'.", DiagnosticSeverity.Error, "xml", XMLSchemaErrorCode.cvc_elt_1_a.getCode()))); } - public static void testDiagnosticsFor(String xml, String fileURI, Diagnostic... expected) { - XMLAssert.testDiagnosticsFor(xml, null, null, fileURI, true, expected); - } - - public static void testDiagnosticsFor(String xml, String fileURI, ContentModelSettings settings, - Diagnostic... expected) { - XMLAssert.testDiagnosticsFor(xml, null, null, fileURI, true, settings, expected); - } - - public static void testDiagnosticsFor(XMLLanguageService ls, String xml, String fileURI, - ContentModelSettings settings, Diagnostic... expected) { - XMLAssert.testDiagnosticsFor(ls, xml, null, null, fileURI, true, settings, expected); - } } diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationFilterTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationFilterTest.java new file mode 100644 index 0000000000..33b51364d5 --- /dev/null +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/contentmodel/XMLValidationFilterTest.java @@ -0,0 +1,135 @@ +/** + * Copyright (c) 2022 Angelo ZERR + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Angelo Zerr - initial API and implementation + */ +package org.eclipse.lemminx.extensions.contentmodel; + +import static org.eclipse.lemminx.XMLAssert.pd; +import static org.eclipse.lemminx.XMLAssert.r; + +import java.util.Arrays; + +import org.eclipse.lemminx.AbstractCacheBasedTest; +import org.eclipse.lemminx.XMLAssert; +import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSyntaxErrorCode; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationFilter; +import org.eclipse.lemminx.extensions.contentmodel.settings.XMLValidationRootSettings; +import org.eclipse.lemminx.services.XMLLanguageService; +import org.eclipse.lsp4j.Diagnostic; +import org.eclipse.lsp4j.DiagnosticSeverity; +import org.junit.jupiter.api.Test; + +/** + * XML validation filter tests. + * + */ +public class XMLValidationFilterTest extends AbstractCacheBasedTest { + + @Test + public void disableValidationFilter() throws Exception { + + String xml = "