This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 4c3667503ec5 CAMEL-24726: camel-jbang-core - ExportApiTest checks the
YAML report of camel export without reading the log (#28748)
4c3667503ec5 is described below
commit 4c3667503ec50d4e86897294527697e955564e44
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Oct 31 00:57:28 2026 +0100
CAMEL-24726: camel-jbang-core - ExportApiTest checks the YAML report of
camel export without reading the log (#28748)
Signed-off-by: Claus Ibsen <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---
.../dsl/jbang/core/commands/ExportApiTest.java | 51 +++++++++-------------
1 file changed, 20 insertions(+), 31 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportApiTest.java
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportApiTest.java
index 4edaa6673efb..af8c245a952a 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportApiTest.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportApiTest.java
@@ -35,15 +35,8 @@ import org.apache.camel.dsl.jbang.run.export.ExportContext;
import org.apache.camel.dsl.jbang.run.export.ExportRequest;
import org.apache.camel.dsl.jbang.run.export.ProjectExporter;
import org.apache.camel.spi.CamelContextTracker;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.Property;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -143,30 +136,26 @@ class ExportApiTest {
- pollEnrich:
uri: file:./order.json
""");
- List<String> logged = new CopyOnWriteArrayList<>();
- Appender appender = new AbstractAppender("report", null, null, true,
Property.EMPTY_ARRAY) {
- @Override
- public void append(LogEvent event) {
- logged.add(event.getMessage().getFormattedMessage());
- }
- };
- appender.start();
- Logger logger = (Logger)
LogManager.getLogger(YamlLoadFailureReport.class);
- // a command that ran before in this JVM may have turned the logging
off
- Level level = logger.getLevel();
- logger.setLevel(Level.ERROR);
- logger.addAppender(appender);
- try {
- ExportContext context = CliExportContext.create(new
CamelJBangMain(), new StringPrinter(), true);
- assertThatThrownBy(() -> new
ProjectExporter(context).export(request(0))).isNotNull();
- } finally {
- logger.removeAppender(appender);
- logger.setLevel(level);
- appender.stop();
- }
-
- // the report of camel validate yaml, as camel run logs it
(CAMEL-24851)
- assertThat(logged).singleElement().asString()
+ // the start failure listener of camel export, as camel run has it,
which logs the report of camel validate yaml
+ // (CAMEL-24851); the test records what it is called with, rather than
reading the log, which an earlier test in
+ // the same JVM may have reconfigured
+ List<Exception> failures = new CopyOnWriteArrayList<>();
+ List<List<String>> failedFiles = new CopyOnWriteArrayList<>();
+ ExportContext cli = CliExportContext.create(new CamelJBangMain(), new
StringPrinter(), true);
+ ExportContext context = CliExportContext.create(new CamelJBangMain(),
new StringPrinter(), true)
+ .withStartFailureListener((failure, files) -> {
+ failures.add(failure);
+ failedFiles.add(files);
+ cli.onStartFailure(failure, files);
+ });
+ assertThatThrownBy(() -> new
ProjectExporter(context).export(request(0))).isNotNull();
+
+ assertThat(failures).singleElement()
+ .satisfies(failure ->
assertThat(YamlLoadFailureReport.isYamlLoadFailure(failure))
+ .as("a YAML load failure: %s", failure).isTrue());
+ // the report that camel export logs for the files of the run
+ List<String> report =
YamlLoadFailureReport.report(YamlLoadFailureReport.yamlFiles(failedFiles.get(0)));
+ assertThat(String.join(System.lineSeparator(), report))
.startsWith("The route file did not load. camel validate yaml
says what to write:")
.contains("hello.camel.yaml", "pollEnrich");
}