From 2101278dbc1ce65cd37594844b8b9903c2c038e3 Mon Sep 17 00:00:00 2001 From: Axel RICHARD Date: Wed, 17 Sep 2025 15:46:34 +0200 Subject: [PATCH] [1355] Add CodingRulesTests on all modules Bug: https://github.com/eclipse-syson/syson/issues/1355 Signed-off-by: Axel RICHARD --- CHANGELOG.adoc | 5 ++ .../syson-application-configuration/pom.xml | 7 +++ .../configuration/ArchitectureConstants.java | 35 +++++++++++ .../configuration/CodingRulesTests.java | 35 +++++++++++ .../application/syson-sysml-export/pom.xml | 7 +++ .../sysml/export/ArchitectureConstants.java | 35 +++++++++++ .../syson/sysml/export/CodingRulesTests.java | 35 +++++++++++ .../application/syson-sysml-import/pom.xml | 7 +++ .../syson/sysml/ArchitectureConstants.java | 35 +++++++++++ .../eclipse/syson/sysml/CodingRulesTests.java | 35 +++++++++++ .../syson-sysml-validation/pom.xml | 7 +++ .../src/test/java/.gitkeep | 0 .../validation/ArchitectureConstants.java | 35 +++++++++++ .../sysml/validation/CodingRulesTests.java | 42 +++++++++++++ .../org.eclipse.core.resources.prefs | 2 +- .../syson-direct-edit-grammar/pom.xml | 2 +- .../edit}/grammars/DirectEdit.interp | 0 .../edit}/grammars/DirectEdit.tokens | 0 .../grammars/DirectEditBaseListener.java | 2 +- .../edit}/grammars/DirectEditLexer.interp | 0 .../edit}/grammars/DirectEditLexer.java | 2 +- .../edit}/grammars/DirectEditLexer.tokens | 0 .../edit}/grammars/DirectEditListener.java | 2 +- .../edit}/grammars/DirectEditParser.java | 2 +- .../src/main/resources/DirectEdit.g4 | 2 +- backend/services/syson-services/pom.xml | 6 ++ .../services/DiagramDirectEditListener.java | 60 +++++++++---------- .../eclipse/syson/services/LabelService.java | 4 +- .../syson/services/ArchitectureConstants.java | 35 +++++++++++ .../syson/services/CodingRulesTests.java | 35 +++++++++++ .../DiagramDirectEditListenerTest.java | 4 +- .../syson-sysml-rest-api-services/pom.xml | 7 +++ .../src/test/java/.gitkeep | 0 .../sysml/rest/api/ArchitectureConstants.java | 35 +++++++++++ .../sysml/rest/api/CodingRulesTests.java | 35 +++++++++++ .../AbstractCodingRulesTests.java | 1 + .../syson/tests/GeneralPurposeTests.java | 4 +- .../views/syson-diagram-common-view/pom.xml | 7 +++ ...emUsageBorderNodeDescriptionProvider.java} | 4 +- .../common/view/ArchitectureConstants.java | 35 +++++++++++ .../diagram/common/view/CodingRulesTests.java | 42 +++++++++++++ .../syson-standard-diagrams-view/pom.xml | 7 +++ ...temUsageBorderNodeDescriptionProvider.java | 4 +- .../diagrams/view/ArchitectureConstants.java | 35 +++++++++++ .../diagrams/view/CodingRulesTests.java | 35 +++++++++++ .../views/syson-tree-explorer-view/pom.xml | 7 +++ .../explorer/view/ArchitectureConstants.java | 35 +++++++++++ .../tree/explorer/view/CodingRulesTests.java | 35 +++++++++++ .../pages/release-notes/2025.10.0.adoc | 1 + 49 files changed, 760 insertions(+), 47 deletions(-) create mode 100644 backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/ArchitectureConstants.java create mode 100644 backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/CodingRulesTests.java create mode 100644 backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/ArchitectureConstants.java create mode 100644 backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/CodingRulesTests.java create mode 100644 backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/ArchitectureConstants.java create mode 100644 backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/CodingRulesTests.java delete mode 100644 backend/application/syson-sysml-validation/src/test/java/.gitkeep create mode 100644 backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/ArchitectureConstants.java create mode 100644 backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/CodingRulesTests.java rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEdit.interp (100%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEdit.tokens (100%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEditBaseListener.java (99%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEditLexer.interp (100%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEditLexer.java (99%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEditLexer.tokens (100%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEditListener.java (99%) rename backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/{services => direct/edit}/grammars/DirectEditParser.java (99%) create mode 100644 backend/services/syson-services/src/test/java/org/eclipse/syson/services/ArchitectureConstants.java create mode 100644 backend/services/syson-services/src/test/java/org/eclipse/syson/services/CodingRulesTests.java delete mode 100644 backend/services/syson-sysml-rest-api-services/src/test/java/.gitkeep create mode 100644 backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/ArchitectureConstants.java create mode 100644 backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/CodingRulesTests.java rename backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/{AbtractItemUsageBorderNodeDescriptionProvider.java => AbstractItemUsageBorderNodeDescriptionProvider.java} (97%) create mode 100644 backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/ArchitectureConstants.java create mode 100644 backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/CodingRulesTests.java create mode 100644 backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/ArchitectureConstants.java create mode 100644 backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/CodingRulesTests.java create mode 100644 backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/ArchitectureConstants.java create mode 100644 backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/CodingRulesTests.java diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index b39fadd10..85564600b 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -49,6 +49,10 @@ Other versions, such as intermediate releases, are intended solely for testing p A default implementation is given with _org.eclipse.syson.sysml.helper.ImplicitSpecializationSwitch_. This new object offers a way to register immutable `LibraryPackage`. Any `Namespace` stored in those libraries are now cached for quick access. +- https://github.com/eclipse-syson/syson/issues/1355[#1355] [tests] Add coding rules tests on all modules. +As a consequence, some coding rules violations have been fixed. +The `org.eclipse.syson.services.grammars` package in `syson-direct-edit-grammar` has been renamed into `org.eclipse.syson.direct.edit.grammars`. +`AbtractItemUsageBorderNodeDescriptionProvider` has been renamed to `AbstractItemUsageBorderNodeDescriptionProvider`. === Dependency update @@ -77,6 +81,7 @@ Consumers may override this by providing an implementation of `org.eclipse.syson - https://github.com/eclipse-syson/syson/issues/1497[#1497] [database] Update the PostgreSQL version used in the docker image (used for tests purposes) to 15. - https://github.com/eclipse-syson/syson/issues/1502[#1502] [libraries] Update standard libraries to SysMLv2 2025-07 specification. - https://github.com/eclipse-syson/syson/issues/1432[#1432] [metamodel] Add implicit `Subclassification` or `Subsetting` when using semantic `MetadataUsage`. +- https://github.com/eclipse-syson/syson/issues/1355[#1355] [tests] Add coding rules tests on all modules. === New features diff --git a/backend/application/syson-application-configuration/pom.xml b/backend/application/syson-application-configuration/pom.xml index 206aece8d..aa260d377 100644 --- a/backend/application/syson-application-configuration/pom.xml +++ b/backend/application/syson-application-configuration/pom.xml @@ -91,6 +91,7 @@ syson-siriusweb-customnodes-metamodel-edit 2025.8.5 + org.springframework.boot spring-boot-starter-test @@ -101,6 +102,12 @@ junit-jupiter test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + diff --git a/backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/ArchitectureConstants.java b/backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/ArchitectureConstants.java new file mode 100644 index 000000000..fe57664f1 --- /dev/null +++ b/backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.configuration; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_APPLICATION_CONFIGURATION_ROOT_PACKAGE = "org.eclipse.syson.application.configuration.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_APPLICATION_CONFIGURATION_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/CodingRulesTests.java b/backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/CodingRulesTests.java new file mode 100644 index 000000000..642e91144 --- /dev/null +++ b/backend/application/syson-application-configuration/src/test/java/org/eclipse/syson/application/configuration/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.configuration; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_APPLICATION_CONFIGURATION_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/backend/application/syson-sysml-export/pom.xml b/backend/application/syson-sysml-export/pom.xml index 57cf2fa1b..fdd1eeedb 100644 --- a/backend/application/syson-sysml-export/pom.xml +++ b/backend/application/syson-sysml-export/pom.xml @@ -71,6 +71,7 @@ syson-sysml-metamodel 2025.8.5 + org.springframework.boot spring-boot-starter-test @@ -81,6 +82,12 @@ junit-jupiter test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + org.eclipse.syson diff --git a/backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/ArchitectureConstants.java b/backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/ArchitectureConstants.java new file mode 100644 index 000000000..ec6ae80b3 --- /dev/null +++ b/backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml.export; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_SYSML_EXPORT_ROOT_PACKAGE = "org.eclipse.syson.sysml.export.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_SYSML_EXPORT_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/CodingRulesTests.java b/backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/CodingRulesTests.java new file mode 100644 index 000000000..6e5872633 --- /dev/null +++ b/backend/application/syson-sysml-export/src/test/java/org/eclipse/syson/sysml/export/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml.export; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_SYSML_EXPORT_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/backend/application/syson-sysml-import/pom.xml b/backend/application/syson-sysml-import/pom.xml index ababbeec0..def82258a 100644 --- a/backend/application/syson-sysml-import/pom.xml +++ b/backend/application/syson-sysml-import/pom.xml @@ -72,6 +72,7 @@ syson-services 2025.8.5 + org.springframework.boot spring-boot-starter-test @@ -82,6 +83,12 @@ junit-jupiter test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + org.eclipse.syson diff --git a/backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/ArchitectureConstants.java b/backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/ArchitectureConstants.java new file mode 100644 index 000000000..f94115d9c --- /dev/null +++ b/backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_SYSML_IMPORT_ROOT_PACKAGE = "org.eclipse.syson.sysml.import.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_SYSML_IMPORT_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/CodingRulesTests.java b/backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/CodingRulesTests.java new file mode 100644 index 000000000..6ab56caf9 --- /dev/null +++ b/backend/application/syson-sysml-import/src/test/java/org/eclipse/syson/sysml/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_SYSML_IMPORT_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/backend/application/syson-sysml-validation/pom.xml b/backend/application/syson-sysml-validation/pom.xml index 8bb446871..c7f5c598d 100644 --- a/backend/application/syson-sysml-validation/pom.xml +++ b/backend/application/syson-sysml-validation/pom.xml @@ -81,6 +81,7 @@ syson-services 2025.8.5 + org.springframework.boot spring-boot-starter-test @@ -91,6 +92,12 @@ junit-jupiter test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + diff --git a/backend/application/syson-sysml-validation/src/test/java/.gitkeep b/backend/application/syson-sysml-validation/src/test/java/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/ArchitectureConstants.java b/backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/ArchitectureConstants.java new file mode 100644 index 000000000..fbbad849d --- /dev/null +++ b/backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml.validation; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_SYSML_VALIDATION_ROOT_PACKAGE = "org.eclipse.syson.sysml.validation.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_SYSML_VALIDATION_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/CodingRulesTests.java b/backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/CodingRulesTests.java new file mode 100644 index 000000000..f5e3940dd --- /dev/null +++ b/backend/application/syson-sysml-validation/src/test/java/org/eclipse/syson/sysml/validation/CodingRulesTests.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml.validation; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; +import org.junit.jupiter.api.Test; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_SYSML_VALIDATION_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } + + @Test + @Override + public void noMethodsShouldBeStatic() { + // SysMLv2ValidationRules contains static methods + } +} diff --git a/backend/services/syson-direct-edit-grammar/.settings/org.eclipse.core.resources.prefs b/backend/services/syson-direct-edit-grammar/.settings/org.eclipse.core.resources.prefs index 1827d38c2..cad660489 100644 --- a/backend/services/syson-direct-edit-grammar/.settings/org.eclipse.core.resources.prefs +++ b/backend/services/syson-direct-edit-grammar/.settings/org.eclipse.core.resources.prefs @@ -1,7 +1,7 @@ eclipse.preferences.version=1 encoding//src/main/generated/org/eclipse/syson/services/grammars=UTF-8 encoding//src/main/java=UTF-8 -encoding//src/main/java/org/eclipse/syson/services/grammars=UTF-8 +encoding//src/main/java/org/eclipse/syson/direct/edit/grammars=UTF-8 encoding//src/main/resources=UTF-8 encoding//src/test/java=UTF-8 encoding//src/test/resources=UTF-8 diff --git a/backend/services/syson-direct-edit-grammar/pom.xml b/backend/services/syson-direct-edit-grammar/pom.xml index 917e536f8..308728b16 100644 --- a/backend/services/syson-direct-edit-grammar/pom.xml +++ b/backend/services/syson-direct-edit-grammar/pom.xml @@ -68,7 +68,7 @@ ${antlr.version} ${basedir}/src/main/resources - ${basedir}/src/main/java/org/eclipse/syson/services/grammars + ${basedir}/src/main/java/org/eclipse/syson/direct/edit/grammars UTF-8 diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEdit.interp b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEdit.interp similarity index 100% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEdit.interp rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEdit.interp diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEdit.tokens b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEdit.tokens similarity index 100% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEdit.tokens rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEdit.tokens diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditBaseListener.java b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditBaseListener.java similarity index 99% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditBaseListener.java rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditBaseListener.java index a577fe308..855d604e9 100644 --- a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditBaseListener.java +++ b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditBaseListener.java @@ -12,7 +12,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.syson.services.grammars; +package org.eclipse.syson.direct.edit.grammars; import org.antlr.v4.runtime.ParserRuleContext; diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.interp b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.interp similarity index 100% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.interp rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.interp diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.java b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.java similarity index 99% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.java rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.java index 8bee01b91..abda3a735 100644 --- a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.java +++ b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.java @@ -12,7 +12,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.syson.services.grammars; +package org.eclipse.syson.direct.edit.grammars; import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.CharStream; diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.tokens b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.tokens similarity index 100% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditLexer.tokens rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditLexer.tokens diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditListener.java b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditListener.java similarity index 99% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditListener.java rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditListener.java index 87dd53b61..17fa4a85d 100644 --- a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditListener.java +++ b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditListener.java @@ -12,7 +12,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.syson.services.grammars; +package org.eclipse.syson.direct.edit.grammars; import org.antlr.v4.runtime.tree.ParseTreeListener; diff --git a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditParser.java b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditParser.java similarity index 99% rename from backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditParser.java rename to backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditParser.java index 89616465b..072d791a4 100644 --- a/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/services/grammars/DirectEditParser.java +++ b/backend/services/syson-direct-edit-grammar/src/main/java/org/eclipse/syson/direct/edit/grammars/DirectEditParser.java @@ -12,7 +12,7 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.syson.services.grammars; +package org.eclipse.syson.direct.edit.grammars; import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; diff --git a/backend/services/syson-direct-edit-grammar/src/main/resources/DirectEdit.g4 b/backend/services/syson-direct-edit-grammar/src/main/resources/DirectEdit.g4 index 1585e5328..5f0733860 100644 --- a/backend/services/syson-direct-edit-grammar/src/main/resources/DirectEdit.g4 +++ b/backend/services/syson-direct-edit-grammar/src/main/resources/DirectEdit.g4 @@ -25,7 +25,7 @@ grammar DirectEdit; * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -package org.eclipse.syson.services.grammars; +package org.eclipse.syson.direct.edit.grammars; } // This rule is used as a top-level rule to parse expressions on graphical nodes. diff --git a/backend/services/syson-services/pom.xml b/backend/services/syson-services/pom.xml index 5a68078b2..8bd9f3e8c 100644 --- a/backend/services/syson-services/pom.xml +++ b/backend/services/syson-services/pom.xml @@ -99,6 +99,12 @@ spring-boot-starter-test test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + org.eclipse.syson diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java index 6d9e8b7e2..e4142983e 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/DiagramDirectEditListener.java @@ -36,36 +36,36 @@ import org.eclipse.sirius.components.core.api.IFeedbackMessageService; import org.eclipse.sirius.components.representations.Message; import org.eclipse.sirius.components.representations.MessageLevel; -import org.eclipse.syson.services.grammars.DirectEditBaseListener; -import org.eclipse.syson.services.grammars.DirectEditParser.AbstractPrefixExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.BinaryOperationExprContext; -import org.eclipse.syson.services.grammars.DirectEditParser.BracketAccessExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.ConstantPrefixExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.ConstraintExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.DerivedPrefixExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.DirectionPrefixExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.EffectExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.EndPrefixExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.FeatureChainExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.FeatureExpressionsContext; -import org.eclipse.syson.services.grammars.DirectEditParser.FeatureValueExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.ListItemExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.LiteralExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.MeasurementExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.MultiplicityExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.MultiplicityExpressionMemberContext; -import org.eclipse.syson.services.grammars.DirectEditParser.NodeExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.NonuniqueMultiplicityExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.OrderedMultiplicityExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.RedefinitionExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.ReferenceExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.ShortNameContext; -import org.eclipse.syson.services.grammars.DirectEditParser.SubsettingExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.TriggerExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.TriggerExpressionNameContext; -import org.eclipse.syson.services.grammars.DirectEditParser.TypingExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.ValueExpressionContext; -import org.eclipse.syson.services.grammars.DirectEditParser.VariationPrefixExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditBaseListener; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.AbstractPrefixExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.BinaryOperationExprContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.BracketAccessExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.ConstantPrefixExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.ConstraintExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.DerivedPrefixExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.DirectionPrefixExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.EffectExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.EndPrefixExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.FeatureChainExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.FeatureExpressionsContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.FeatureValueExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.ListItemExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.LiteralExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.MeasurementExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.MultiplicityExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.MultiplicityExpressionMemberContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.NodeExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.NonuniqueMultiplicityExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.OrderedMultiplicityExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.RedefinitionExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.ReferenceExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.ShortNameContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.SubsettingExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.TriggerExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.TriggerExpressionNameContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.TypingExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.ValueExpressionContext; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser.VariationPrefixExpressionContext; import org.eclipse.syson.sysml.AcceptActionUsage; import org.eclipse.syson.sysml.ActionUsage; import org.eclipse.syson.sysml.AttributeDefinition; diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java index 3a98183fd..5f3bcf42d 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/LabelService.java @@ -23,8 +23,8 @@ import org.eclipse.sirius.components.core.api.IFeedbackMessageService; import org.eclipse.sirius.components.representations.Message; import org.eclipse.sirius.components.representations.MessageLevel; -import org.eclipse.syson.services.grammars.DirectEditLexer; -import org.eclipse.syson.services.grammars.DirectEditParser; +import org.eclipse.syson.direct.edit.grammars.DirectEditLexer; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser; import org.eclipse.syson.sysml.ActionUsage; import org.eclipse.syson.sysml.AttributeUsage; import org.eclipse.syson.sysml.Comment; diff --git a/backend/services/syson-services/src/test/java/org/eclipse/syson/services/ArchitectureConstants.java b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/ArchitectureConstants.java new file mode 100644 index 000000000..deb477069 --- /dev/null +++ b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.services; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_SERVICES_ROOT_PACKAGE = "org.eclipse.syson.services.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_SERVICES_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/services/syson-services/src/test/java/org/eclipse/syson/services/CodingRulesTests.java b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/CodingRulesTests.java new file mode 100644 index 000000000..3e0857a6e --- /dev/null +++ b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.services; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_SERVICES_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/backend/services/syson-services/src/test/java/org/eclipse/syson/services/DiagramDirectEditListenerTest.java b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/DiagramDirectEditListenerTest.java index d7a88c38d..26985ef06 100644 --- a/backend/services/syson-services/src/test/java/org/eclipse/syson/services/DiagramDirectEditListenerTest.java +++ b/backend/services/syson-services/src/test/java/org/eclipse/syson/services/DiagramDirectEditListenerTest.java @@ -25,10 +25,10 @@ import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.eclipse.sirius.components.core.api.IFeedbackMessageService; +import org.eclipse.syson.direct.edit.grammars.DirectEditLexer; +import org.eclipse.syson.direct.edit.grammars.DirectEditParser; import org.eclipse.syson.services.data.ItemAndAttributesModelTest; import org.eclipse.syson.services.data.SmallFlashlightExample; -import org.eclipse.syson.services.grammars.DirectEditLexer; -import org.eclipse.syson.services.grammars.DirectEditParser; import org.eclipse.syson.sysml.AttributeDefinition; import org.eclipse.syson.sysml.AttributeUsage; import org.eclipse.syson.sysml.ConstraintUsage; diff --git a/backend/services/syson-sysml-rest-api-services/pom.xml b/backend/services/syson-sysml-rest-api-services/pom.xml index 2cd6ccbb5..63dfad1c7 100644 --- a/backend/services/syson-sysml-rest-api-services/pom.xml +++ b/backend/services/syson-sysml-rest-api-services/pom.xml @@ -75,6 +75,7 @@ syson-services 2025.8.5 + org.springframework.boot spring-boot-starter-test @@ -85,6 +86,12 @@ junit-jupiter test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + diff --git a/backend/services/syson-sysml-rest-api-services/src/test/java/.gitkeep b/backend/services/syson-sysml-rest-api-services/src/test/java/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/ArchitectureConstants.java b/backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/ArchitectureConstants.java new file mode 100644 index 000000000..93dce6965 --- /dev/null +++ b/backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml.rest.api; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_SYSML_REST_API_ROOT_PACKAGE = "org.eclipse.syson.sysml.rest.api.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_SYSML_REST_API_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/CodingRulesTests.java b/backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/CodingRulesTests.java new file mode 100644 index 000000000..21e1f8abd --- /dev/null +++ b/backend/services/syson-sysml-rest-api-services/src/test/java/org/eclipse/syson/sysml/rest/api/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.sysml.rest.api; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_SYSML_REST_API_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/backend/tests/syson-tests/src/main/java/org/eclipse/syson/tests/architecture/AbstractCodingRulesTests.java b/backend/tests/syson-tests/src/main/java/org/eclipse/syson/tests/architecture/AbstractCodingRulesTests.java index 6c26540fb..4b021cec4 100644 --- a/backend/tests/syson-tests/src/main/java/org/eclipse/syson/tests/architecture/AbstractCodingRulesTests.java +++ b/backend/tests/syson-tests/src/main/java/org/eclipse/syson/tests/architecture/AbstractCodingRulesTests.java @@ -172,6 +172,7 @@ public void noClassesShouldUseEMF() { rule.check(this.getClasses()); } + @Test public void noClassesShouldUseEcoreUtilDelete() { ArchRule rule = ArchRuleDefinition.noClasses() .that() diff --git a/backend/tests/syson-tests/src/test/java/org/eclipse/syson/tests/GeneralPurposeTests.java b/backend/tests/syson-tests/src/test/java/org/eclipse/syson/tests/GeneralPurposeTests.java index fe1b2bd33..fccafdebf 100644 --- a/backend/tests/syson-tests/src/test/java/org/eclipse/syson/tests/GeneralPurposeTests.java +++ b/backend/tests/syson-tests/src/test/java/org/eclipse/syson/tests/GeneralPurposeTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2024 Obeo. + * Copyright (c) 2024, 2025 Obeo. * 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 @@ -112,7 +112,7 @@ public class GeneralPurposeTests { private static final List GENERATED_MODULE_PATHS = List.of( "/syson-siriusweb-customnodes-metamodel", "/syson-sysml-metamodel", - "/org/eclipse/syson/services/grammars" + "/org/eclipse/syson/direct/edit/grammars" ); /** diff --git a/backend/views/syson-diagram-common-view/pom.xml b/backend/views/syson-diagram-common-view/pom.xml index 2e47fccc6..08be3a4d2 100644 --- a/backend/views/syson-diagram-common-view/pom.xml +++ b/backend/views/syson-diagram-common-view/pom.xml @@ -90,6 +90,7 @@ syson-services 2025.8.5 + org.testcontainers junit-jupiter @@ -100,6 +101,12 @@ spring-boot-starter-test test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + diff --git a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbtractItemUsageBorderNodeDescriptionProvider.java b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbstractItemUsageBorderNodeDescriptionProvider.java similarity index 97% rename from backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbtractItemUsageBorderNodeDescriptionProvider.java rename to backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbstractItemUsageBorderNodeDescriptionProvider.java index f6caddef6..d6396b169 100644 --- a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbtractItemUsageBorderNodeDescriptionProvider.java +++ b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbstractItemUsageBorderNodeDescriptionProvider.java @@ -40,11 +40,11 @@ * * @author arthur daussy */ -public abstract class AbtractItemUsageBorderNodeDescriptionProvider extends AbstractNodeDescriptionProvider { +public abstract class AbstractItemUsageBorderNodeDescriptionProvider extends AbstractNodeDescriptionProvider { private final IDescriptionNameGenerator descriptionNameGenerator; - public AbtractItemUsageBorderNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) { + public AbstractItemUsageBorderNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) { super(colorProvider); this.descriptionNameGenerator = Objects.requireNonNull(descriptionNameGenerator); } diff --git a/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/ArchitectureConstants.java b/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/ArchitectureConstants.java new file mode 100644 index 000000000..e8a4dcf02 --- /dev/null +++ b/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.diagram.common.view; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_DIAGRAM_COMMON_VIEW_ROOT_PACKAGE = "org.eclipse.syson.diagram.common.view.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_DIAGRAM_COMMON_VIEW_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/CodingRulesTests.java b/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/CodingRulesTests.java new file mode 100644 index 000000000..5ad458e67 --- /dev/null +++ b/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/CodingRulesTests.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.diagram.common.view; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; +import org.junit.jupiter.api.Test; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_DIAGRAM_COMMON_VIEW_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } + + @Test + @Override + public void abstractClassesShouldNotContainBusinessCode() { + // We should get rid of business code in abstract classes + } +} diff --git a/backend/views/syson-standard-diagrams-view/pom.xml b/backend/views/syson-standard-diagrams-view/pom.xml index 0c420455d..f2be1647c 100644 --- a/backend/views/syson-standard-diagrams-view/pom.xml +++ b/backend/views/syson-standard-diagrams-view/pom.xml @@ -115,6 +115,7 @@ syson-diagram-common-view 2025.8.5 + org.testcontainers junit-jupiter @@ -131,6 +132,12 @@ 2025.8.5 test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/nodes/ItemUsageBorderNodeDescriptionProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/nodes/ItemUsageBorderNodeDescriptionProvider.java index e91a311cb..9199ab28b 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/nodes/ItemUsageBorderNodeDescriptionProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/nodes/ItemUsageBorderNodeDescriptionProvider.java @@ -17,7 +17,7 @@ import org.eclipse.sirius.components.view.builder.IViewDiagramElementFinder; import org.eclipse.sirius.components.view.builder.providers.IColorProvider; import org.eclipse.sirius.components.view.diagram.NodeDescription; -import org.eclipse.syson.diagram.common.view.nodes.AbtractItemUsageBorderNodeDescriptionProvider; +import org.eclipse.syson.diagram.common.view.nodes.AbstractItemUsageBorderNodeDescriptionProvider; import org.eclipse.syson.sysml.SysmlPackage; import org.eclipse.syson.util.IDescriptionNameGenerator; @@ -26,7 +26,7 @@ * * @author Arthur Daussy */ -public class ItemUsageBorderNodeDescriptionProvider extends AbtractItemUsageBorderNodeDescriptionProvider { +public class ItemUsageBorderNodeDescriptionProvider extends AbstractItemUsageBorderNodeDescriptionProvider { public ItemUsageBorderNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) { super(colorProvider, descriptionNameGenerator); diff --git a/backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/ArchitectureConstants.java b/backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/ArchitectureConstants.java new file mode 100644 index 000000000..e0adba99d --- /dev/null +++ b/backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.standard.diagrams.view; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_STANDARD_DIAGRAMS_VIEW_ROOT_PACKAGE = "org.eclipse.syson.standard.diagrams.view.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_STANDARD_DIAGRAMS_VIEW_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/CodingRulesTests.java b/backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/CodingRulesTests.java new file mode 100644 index 000000000..438bda281 --- /dev/null +++ b/backend/views/syson-standard-diagrams-view/src/test/java/org/eclipse/syson/standard/diagrams/view/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.standard.diagrams.view; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_STANDARD_DIAGRAMS_VIEW_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/backend/views/syson-tree-explorer-view/pom.xml b/backend/views/syson-tree-explorer-view/pom.xml index 320e57bbf..b39c4b286 100644 --- a/backend/views/syson-tree-explorer-view/pom.xml +++ b/backend/views/syson-tree-explorer-view/pom.xml @@ -80,6 +80,7 @@ syson-services 2025.8.5 + org.testcontainers junit-jupiter @@ -90,6 +91,12 @@ spring-boot-starter-test test + + org.eclipse.syson + syson-tests + 2025.8.5 + test + diff --git a/backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/ArchitectureConstants.java b/backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/ArchitectureConstants.java new file mode 100644 index 000000000..389d022ff --- /dev/null +++ b/backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/ArchitectureConstants.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.tree.explorer.view; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; + +/** + * Constants shared across multiple tests. + * + * @author arichard + */ +public final class ArchitectureConstants { + public static final String SYSON_TREE_EXPLORER_VIEW_ROOT_PACKAGE = "org.eclipse.syson.tree.explorer.view.."; + + public static final JavaClasses CLASSES = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages(SYSON_TREE_EXPLORER_VIEW_ROOT_PACKAGE); + + private ArchitectureConstants() { + // Prevent instantiation + } +} diff --git a/backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/CodingRulesTests.java b/backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/CodingRulesTests.java new file mode 100644 index 000000000..2e4e0e7cd --- /dev/null +++ b/backend/views/syson-tree-explorer-view/src/test/java/org/eclipse/syson/tree/explorer/view/CodingRulesTests.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.tree.explorer.view; + +import com.tngtech.archunit.core.domain.JavaClasses; + +import org.eclipse.syson.tests.architecture.AbstractCodingRulesTests; + +/** + * Coding rules tests. + * + * @author arichard + */ +public class CodingRulesTests extends AbstractCodingRulesTests { + + @Override + protected String getProjectRootPackage() { + return ArchitectureConstants.SYSON_TREE_EXPLORER_VIEW_ROOT_PACKAGE; + } + + @Override + protected JavaClasses getClasses() { + return ArchitectureConstants.CLASSES; + } +} diff --git a/doc/content/modules/user-manual/pages/release-notes/2025.10.0.adoc b/doc/content/modules/user-manual/pages/release-notes/2025.10.0.adoc index c6ca91efc..dd98ecd48 100644 --- a/doc/content/modules/user-manual/pages/release-notes/2025.10.0.adoc +++ b/doc/content/modules/user-manual/pages/release-notes/2025.10.0.adoc @@ -99,6 +99,7 @@ metadata def Function :> SemanticMetadata { #Function action a0; // a0 subset functions #Function action def A0; // A0 subclassify Functions ``` +- Add coding rules tests on all modules. == Dependency update