From 8307479d466bd9903d7836e6031b21fb85637b73 Mon Sep 17 00:00:00 2001 From: Hendrik7889 <44064629+Hendrik7889@users.noreply.github.com> Date: Mon, 10 Aug 2026 18:59:02 +0200 Subject: [PATCH 1/5] add CoCo checker for all import types --- .../monticore/cdbasis/cocos/CDBasisCoCos.java | 7 +++ .../CDOnlyResolvableImportStatements.java | 37 ++++++++++++++ .../CDOnlyResolvableImportStatementsTest.java | 49 +++++++++++++++++++ ...CDUnresolvableMCImportStatementsInvalid.cd | 15 ++++++ ...resolvableTargetImportStatementsInvalid.cd | 15 ++++++ .../de/monticore/cdbasis/cocos/Valid.cd | 1 + 6 files changed, 124 insertions(+) create mode 100644 cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java create mode 100644 cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java create mode 100644 cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableMCImportStatementsInvalid.cd create mode 100644 cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableTargetImportStatementsInvalid.cd diff --git a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java index 91161e150..4253a0daf 100644 --- a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java +++ b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java @@ -2,6 +2,7 @@ package de.monticore.cdbasis.cocos; import de.monticore.cd.cocos.CoCoParent; +import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; import de.monticore.cdbasis._cocos.CDBasisCoCoChecker; import de.monticore.cdbasis.cocos.ebnf.*; import de.monticore.cdbasis.cocos.mcg.ModifierNotMultipleVisibilitiesCoCo; @@ -10,6 +11,7 @@ import de.monticore.cdinterfaceandenum.cocos.ebnf.CDClassImplementsNotCyclic; import de.monticore.cdinterfaceandenum.cocos.ebnf.CDClassImplementsOnlyInterfaces; import de.monticore.types.check.AbstractDerive; +import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; public class CDBasisCoCos extends CoCoParent { @@ -59,6 +61,11 @@ protected void addEbnfCoCos(CDBasisCoCoChecker checker) { // CDPackage checker.addCoCo(new CDPackageNameUnique()); checker.addCoCo(new CDPackageUniqueCDTypeNames()); + + // CDImport Statements + CDOnlyResolvableImportStatements coCo = new CDOnlyResolvableImportStatements(); + checker.addCoCo((CDBasisASTCDTargetImportStatementCoCo) coCo); + checker.addCoCo((MCBasicTypesASTMCImportStatementCoCo) coCo); } @Override diff --git a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java new file mode 100644 index 000000000..d224bc5c1 --- /dev/null +++ b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java @@ -0,0 +1,37 @@ +package de.monticore.cdbasis.cocos; + +import de.monticore.cdbasis.CDBasisMill; +import de.monticore.cdbasis._ast.ASTCDCompilationUnit; +import de.monticore.cdbasis._ast.ASTCDTargetImportStatement; +import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; +import de.monticore.cdbasis._symboltable.ICDBasisScope; +import de.monticore.grammar.MCGrammarSymbolTableHelper; +import de.monticore.symbols.basicsymbols._symboltable.TypeSymbol; +import de.monticore.types.mcbasictypes._ast.ASTMCImportStatement; +import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; +import de.se_rwth.commons.logging.Log; +import java.util.Optional; + +public class CDOnlyResolvableImportStatements + implements CDBasisASTCDTargetImportStatementCoCo, MCBasicTypesASTMCImportStatementCoCo { + + private Optional resolve(String qName) { + return CDBasisMill.globalScope().resolveType(qName); + } + + @Override + public void check(ASTCDTargetImportStatement node) { + String qName = node.getMCQualifiedName().getQName(); + if (resolve(qName).isEmpty()) { + Log.error("0xCDC40: Unresolved target import statement: " + qName); + } + } + + @Override + public void check(ASTMCImportStatement node) { + String qName = node.getMCQualifiedName().getQName(); + if (resolve(qName).isEmpty()) { + Log.error("0xCDC41: Unresolved mc import statement: " + qName); + } + } +} \ No newline at end of file diff --git a/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java b/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java new file mode 100644 index 000000000..741390769 --- /dev/null +++ b/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java @@ -0,0 +1,49 @@ +package de.monticore.testcdbasis.cocos; + +import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; +import de.monticore.cdbasis.cocos.CDOnlyResolvableImportStatements; +import de.monticore.cdbasis._ast.ASTCDCompilationUnit; +import de.monticore.testcdbasis.CDBasisTestBasis; +import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; +import de.se_rwth.commons.logging.Log; +import org.junit.jupiter.api.Test; +import java.io.IOException; +import java.util.Optional; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CDOnlyResolvableImportStatementsTest extends CDBasisTestBasis { + + @Test + public void testInvalidTargetImportStatement() throws IOException { + CDOnlyResolvableImportStatements coCo = new CDOnlyResolvableImportStatements(); + coCoChecker.addCoCo((CDBasisASTCDTargetImportStatementCoCo) coCo); + coCoChecker.addCoCo((MCBasicTypesASTMCImportStatementCoCo) coCo); + final Optional optAST = p.parse(getFilePath( + "cdbasis/cocos/CDUnresolvableTargetImportStatementsInvalid.cd")); + assertTrue(optAST.isPresent()); + final ASTCDCompilationUnit ast = optAST.get(); + Log.getFindings().clear(); + coCoChecker.checkAll(ast); + assertEquals(1, Log.getFindings().size()); + assertTrue(Log.getFindings().get(0).getMsg().startsWith("0xCDC40")); + } + + @Test + public void testInvalidMCImportStatement() throws IOException { + CDOnlyResolvableImportStatements coCo = new CDOnlyResolvableImportStatements(); + coCoChecker.addCoCo((CDBasisASTCDTargetImportStatementCoCo) coCo); + coCoChecker.addCoCo((MCBasicTypesASTMCImportStatementCoCo) coCo); + final Optional optAST = p.parse(getFilePath( + "cdbasis/cocos/CDUnresolvableMCImportStatementsInvalid.cd")); + assertTrue(optAST.isPresent()); + final ASTCDCompilationUnit ast = optAST.get(); + Log.getFindings().clear(); + coCoChecker.checkAll(ast); + assertEquals(1, Log.getFindings().size()); + assertTrue(Log.getFindings().get(0).getMsg().startsWith("0xCDC41")); + } + + @Override + public void after() {} +} diff --git a/cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableMCImportStatementsInvalid.cd b/cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableMCImportStatementsInvalid.cd new file mode 100644 index 000000000..83ef08ec8 --- /dev/null +++ b/cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableMCImportStatementsInvalid.cd @@ -0,0 +1,15 @@ +/* (c) https://github.com/MontiCore/monticore */ +import this.path.doesnt.Exist; + +classdiagram CDUnresolvableImportStatementsInvalid { + + class A { + int number = 1; + } + + class B extends A{ + derived int number = 5; + } + +} + diff --git a/cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableTargetImportStatementsInvalid.cd b/cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableTargetImportStatementsInvalid.cd new file mode 100644 index 000000000..77c9d5384 --- /dev/null +++ b/cdlang/src/test/resources/de/monticore/cdbasis/cocos/CDUnresolvableTargetImportStatementsInvalid.cd @@ -0,0 +1,15 @@ +/* (c) https://github.com/MontiCore/monticore */ +targetimport this.path.doesnt.Exist; + +classdiagram CDUnresolvableTargetImportStatementsInvalid { + + class A { + int number = 1; + } + + class B extends A{ + derived int number = 5; + } + +} + diff --git a/cdlang/src/test/resources/de/monticore/cdbasis/cocos/Valid.cd b/cdlang/src/test/resources/de/monticore/cdbasis/cocos/Valid.cd index 74530f809..659aa460e 100644 --- a/cdlang/src/test/resources/de/monticore/cdbasis/cocos/Valid.cd +++ b/cdlang/src/test/resources/de/monticore/cdbasis/cocos/Valid.cd @@ -1,4 +1,5 @@ /* (c) https://github.com/MontiCore/monticore */ +import java.util.List; classdiagram Valid { From cf775ee2f9d45498b03da83d93c0d802e4fb6a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=BCpges?= Date: Tue, 8 Sep 2026 11:08:17 +0200 Subject: [PATCH 2/5] cleanup --- .../cd4codebasis/cocos/CD4CodeBasisCoCos.java | 13 ++++++++ .../monticore/cdbasis/cocos/CDBasisCoCos.java | 7 ----- .../CDOnlyResolvableImportStatements.java | 31 ++++++++----------- .../CDOnlyResolvableImportStatementsTest.java | 12 ++++--- 4 files changed, 34 insertions(+), 29 deletions(-) diff --git a/cdlang/src/main/java/de/monticore/cd4codebasis/cocos/CD4CodeBasisCoCos.java b/cdlang/src/main/java/de/monticore/cd4codebasis/cocos/CD4CodeBasisCoCos.java index 030fd8755..b44dc3c7b 100644 --- a/cdlang/src/main/java/de/monticore/cd4codebasis/cocos/CD4CodeBasisCoCos.java +++ b/cdlang/src/main/java/de/monticore/cd4codebasis/cocos/CD4CodeBasisCoCos.java @@ -5,8 +5,11 @@ import de.monticore.cd4codebasis._cocos.CD4CodeBasisCoCoChecker; import de.monticore.cd4codebasis.cocos.ebnf.CD4CodeEnumConstantParameterMatchConstructorArguments; import de.monticore.cd4codebasis.cocos.ebnf.CDMethodSignatureParameterNamesUnique; +import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; +import de.monticore.cdbasis.cocos.CDOnlyResolvableImportStatements; import de.monticore.cdbasis.cocos.ConstructorNameEqualsClassNameCoCo; import de.monticore.types.check.AbstractDerive; +import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; public class CD4CodeBasisCoCos extends CoCoParent { @@ -28,6 +31,16 @@ protected void addCheckerForAllCoCos(CD4CodeBasisCoCoChecker checker) { addCheckerForMcg2EbnfCoCos(checker); } + @Override + protected void addMcgCoCos(CD4CodeBasisCoCoChecker checker) { + super.addMcgCoCos(checker); + + // CDImport Statements + CDOnlyResolvableImportStatements resolvableImports = new CDOnlyResolvableImportStatements(); + checker.addCoCo((CDBasisASTCDTargetImportStatementCoCo) resolvableImports); + checker.addCoCo((MCBasicTypesASTMCImportStatementCoCo) resolvableImports); + } + @Override protected void addEbnfCoCos(CD4CodeBasisCoCoChecker checker) { super.addEbnfCoCos(checker); diff --git a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java index 4253a0daf..91161e150 100644 --- a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java +++ b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDBasisCoCos.java @@ -2,7 +2,6 @@ package de.monticore.cdbasis.cocos; import de.monticore.cd.cocos.CoCoParent; -import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; import de.monticore.cdbasis._cocos.CDBasisCoCoChecker; import de.monticore.cdbasis.cocos.ebnf.*; import de.monticore.cdbasis.cocos.mcg.ModifierNotMultipleVisibilitiesCoCo; @@ -11,7 +10,6 @@ import de.monticore.cdinterfaceandenum.cocos.ebnf.CDClassImplementsNotCyclic; import de.monticore.cdinterfaceandenum.cocos.ebnf.CDClassImplementsOnlyInterfaces; import de.monticore.types.check.AbstractDerive; -import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; public class CDBasisCoCos extends CoCoParent { @@ -61,11 +59,6 @@ protected void addEbnfCoCos(CDBasisCoCoChecker checker) { // CDPackage checker.addCoCo(new CDPackageNameUnique()); checker.addCoCo(new CDPackageUniqueCDTypeNames()); - - // CDImport Statements - CDOnlyResolvableImportStatements coCo = new CDOnlyResolvableImportStatements(); - checker.addCoCo((CDBasisASTCDTargetImportStatementCoCo) coCo); - checker.addCoCo((MCBasicTypesASTMCImportStatementCoCo) coCo); } @Override diff --git a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java index d224bc5c1..b7b54c27c 100644 --- a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java +++ b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java @@ -1,37 +1,32 @@ +/* (c) https://github.com/MontiCore/monticore */ package de.monticore.cdbasis.cocos; import de.monticore.cdbasis.CDBasisMill; -import de.monticore.cdbasis._ast.ASTCDCompilationUnit; import de.monticore.cdbasis._ast.ASTCDTargetImportStatement; import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; -import de.monticore.cdbasis._symboltable.ICDBasisScope; -import de.monticore.grammar.MCGrammarSymbolTableHelper; -import de.monticore.symbols.basicsymbols._symboltable.TypeSymbol; import de.monticore.types.mcbasictypes._ast.ASTMCImportStatement; import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; import de.se_rwth.commons.logging.Log; -import java.util.Optional; - -public class CDOnlyResolvableImportStatements - implements CDBasisASTCDTargetImportStatementCoCo, MCBasicTypesASTMCImportStatementCoCo { - - private Optional resolve(String qName) { - return CDBasisMill.globalScope().resolveType(qName); - } +public class CDOnlyResolvableImportStatements implements CDBasisASTCDTargetImportStatementCoCo, + MCBasicTypesASTMCImportStatementCoCo { + @Override public void check(ASTCDTargetImportStatement node) { String qName = node.getMCQualifiedName().getQName(); - if (resolve(qName).isEmpty()) { - Log.error("0xCDC40: Unresolved target import statement: " + qName); + if (CDBasisMill.globalScope().resolveTypeMany(qName).isEmpty()) { + Log.error("0xCDC40: Unresolved target import statement: " + qName, node + .get_SourcePositionStart(), node.get_SourcePositionEnd()); } } - + @Override public void check(ASTMCImportStatement node) { String qName = node.getMCQualifiedName().getQName(); - if (resolve(qName).isEmpty()) { - Log.error("0xCDC41: Unresolved mc import statement: " + qName); + if (CDBasisMill.globalScope().resolveTypeMany(qName).isEmpty()) { + Log.error("0xCDC41: Unresolved mc import statement: " + qName, node.get_SourcePositionStart(), + node.get_SourcePositionEnd()); } } -} \ No newline at end of file + +} diff --git a/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java b/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java index 741390769..0ff77c9fd 100644 --- a/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java +++ b/cdlang/src/test/java/de/monticore/testcdbasis/cocos/CDOnlyResolvableImportStatementsTest.java @@ -1,8 +1,10 @@ +/* (c) https://github.com/MontiCore/monticore */ package de.monticore.testcdbasis.cocos; import de.monticore.cdbasis._cocos.CDBasisASTCDTargetImportStatementCoCo; import de.monticore.cdbasis.cocos.CDOnlyResolvableImportStatements; import de.monticore.cdbasis._ast.ASTCDCompilationUnit; +import de.monticore.runtime.junit.MCAssertions; import de.monticore.testcdbasis.CDBasisTestBasis; import de.monticore.types.mcbasictypes._cocos.MCBasicTypesASTMCImportStatementCoCo; import de.se_rwth.commons.logging.Log; @@ -13,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class CDOnlyResolvableImportStatementsTest extends CDBasisTestBasis { - + @Test public void testInvalidTargetImportStatement() throws IOException { CDOnlyResolvableImportStatements coCo = new CDOnlyResolvableImportStatements(); @@ -25,10 +27,10 @@ public void testInvalidTargetImportStatement() throws IOException { final ASTCDCompilationUnit ast = optAST.get(); Log.getFindings().clear(); coCoChecker.checkAll(ast); + MCAssertions.assertHasFindingsStartingWith("0xCDC40"); assertEquals(1, Log.getFindings().size()); - assertTrue(Log.getFindings().get(0).getMsg().startsWith("0xCDC40")); } - + @Test public void testInvalidMCImportStatement() throws IOException { CDOnlyResolvableImportStatements coCo = new CDOnlyResolvableImportStatements(); @@ -40,10 +42,12 @@ public void testInvalidMCImportStatement() throws IOException { final ASTCDCompilationUnit ast = optAST.get(); Log.getFindings().clear(); coCoChecker.checkAll(ast); + MCAssertions.assertHasFindingsStartingWith("0xCDC41"); assertEquals(1, Log.getFindings().size()); assertTrue(Log.getFindings().get(0).getMsg().startsWith("0xCDC41")); } - + @Override public void after() {} + } From 7d21f3baccdee02d94f6744df4b2531dc9df2ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=BCpges?= Date: Tue, 8 Sep 2026 12:09:01 +0200 Subject: [PATCH 3/5] improve coco text --- .../cocos/CDOnlyResolvableImportStatements.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java index b7b54c27c..d26908d86 100644 --- a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java +++ b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java @@ -13,19 +13,23 @@ public class CDOnlyResolvableImportStatements implements CDBasisASTCDTargetImpor @Override public void check(ASTCDTargetImportStatement node) { + if (node.isStar()) + return; // TODO: Star imports can not be checked at the moment String qName = node.getMCQualifiedName().getQName(); if (CDBasisMill.globalScope().resolveTypeMany(qName).isEmpty()) { - Log.error("0xCDC40: Unresolved target import statement: " + qName, node - .get_SourcePositionStart(), node.get_SourcePositionEnd()); + Log.warn("0xCDC40: Could not resolve target import ` " + qName + "` within the symbol path.", + node.get_SourcePositionStart(), node.get_SourcePositionEnd()); } } @Override public void check(ASTMCImportStatement node) { + if (node.isStar()) + return; // TODO: Star imports can not be checked at the moment String qName = node.getMCQualifiedName().getQName(); if (CDBasisMill.globalScope().resolveTypeMany(qName).isEmpty()) { - Log.error("0xCDC41: Unresolved mc import statement: " + qName, node.get_SourcePositionStart(), - node.get_SourcePositionEnd()); + Log.error("0xCDC41: Could not resolve import `" + qName + "` within the symbol path.", node + .get_SourcePositionStart(), node.get_SourcePositionEnd()); } } From 8b0763d5d7bfed38bc15f0f358b70842fe8c9266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=BCpges?= Date: Tue, 8 Sep 2026 16:50:33 +0200 Subject: [PATCH 4/5] Update Test --- .../cocos/CDOnlyResolvableImportStatements.java | 10 ++++++---- .../src/test/java/de/monticore/ExampleCommandTest.java | 4 +++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java index d26908d86..f0911007f 100644 --- a/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java +++ b/cdlang/src/main/java/de/monticore/cdbasis/cocos/CDOnlyResolvableImportStatements.java @@ -17,8 +17,9 @@ public void check(ASTCDTargetImportStatement node) { return; // TODO: Star imports can not be checked at the moment String qName = node.getMCQualifiedName().getQName(); if (CDBasisMill.globalScope().resolveTypeMany(qName).isEmpty()) { - Log.warn("0xCDC40: Could not resolve target import ` " + qName + "` within the symbol path.", - node.get_SourcePositionStart(), node.get_SourcePositionEnd()); + Log.warn("0xCDC40: Could not resolve target import ` " + qName + + "` within the input models or symbol path.", node.get_SourcePositionStart(), node + .get_SourcePositionEnd()); } } @@ -28,8 +29,9 @@ public void check(ASTMCImportStatement node) { return; // TODO: Star imports can not be checked at the moment String qName = node.getMCQualifiedName().getQName(); if (CDBasisMill.globalScope().resolveTypeMany(qName).isEmpty()) { - Log.error("0xCDC41: Could not resolve import `" + qName + "` within the symbol path.", node - .get_SourcePositionStart(), node.get_SourcePositionEnd()); + Log.error("0xCDC41: Could not resolve import `" + qName + + "` within the input models or symbol path.", node.get_SourcePositionStart(), node + .get_SourcePositionEnd()); } } diff --git a/cdtool/src/test/java/de/monticore/ExampleCommandTest.java b/cdtool/src/test/java/de/monticore/ExampleCommandTest.java index 9e9238adc..ac3aaf688 100644 --- a/cdtool/src/test/java/de/monticore/ExampleCommandTest.java +++ b/cdtool/src/test/java/de/monticore/ExampleCommandTest.java @@ -175,8 +175,10 @@ public void testStoringSymbolsPerPathsExample1() { tool.run(new String[] { "-i", fileName }); // Then - assertEquals(3, Log.getFindingsCount(), "Actual findings: " + Log.getFindings().toString()); + assertEquals(4, Log.getFindingsCount(), "Actual findings: " + Log.getFindings().toString()); assertEquals("0xA0324 Cannot find symbol Address", Log.getFindings().get(0).getMsg()); + assertEquals("0xCDC41: Could not resolve import `MyAddress.Address` within the input models or symbol path.", Log.getFindings().get(3).getMsg()); + Log.clearFindings(); } From 14504715ab5025ddfd113fc7d2c87751fc60f367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=BCpges?= Date: Tue, 8 Sep 2026 16:54:44 +0200 Subject: [PATCH 5/5] fmt --- cdtool/src/test/java/de/monticore/ExampleCommandTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cdtool/src/test/java/de/monticore/ExampleCommandTest.java b/cdtool/src/test/java/de/monticore/ExampleCommandTest.java index ac3aaf688..20f6c585d 100644 --- a/cdtool/src/test/java/de/monticore/ExampleCommandTest.java +++ b/cdtool/src/test/java/de/monticore/ExampleCommandTest.java @@ -177,7 +177,9 @@ public void testStoringSymbolsPerPathsExample1() { // Then assertEquals(4, Log.getFindingsCount(), "Actual findings: " + Log.getFindings().toString()); assertEquals("0xA0324 Cannot find symbol Address", Log.getFindings().get(0).getMsg()); - assertEquals("0xCDC41: Could not resolve import `MyAddress.Address` within the input models or symbol path.", Log.getFindings().get(3).getMsg()); + assertEquals( + "0xCDC41: Could not resolve import `MyAddress.Address` within the input models or symbol path.", + Log.getFindings().get(3).getMsg()); Log.clearFindings(); }