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");
     }

Reply via email to