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 343c0492d0ed [JBANG-IT] Adapt container-only tests to run on host 
(#28526)
343c0492d0ed is described below

commit 343c0492d0edb831e6c163278fcc5dd96f562e69
Author: Jakub Vrubel <[email protected]>
AuthorDate: Mon Nov 2 23:22:16 2026 +0100

    [JBANG-IT] Adapt container-only tests to run on host (#28526)
    
    Co-Authored-By: Claude <[email protected]>
---
 .../apache/camel/dsl/jbang/it/CamelDebugITCase.java    |  2 --
 .../org/apache/camel/dsl/jbang/it/DevModeITCase.java   |  4 +---
 .../camel/dsl/jbang/it/InfrastructureITCase.java       |  5 -----
 ...lDebugITCase.java => InfrastructureListITCase.java} | 15 +++------------
 .../org/apache/camel/dsl/jbang/it/JolokiaITCase.java   |  2 --
 .../org/apache/camel/dsl/jbang/it/OpenApiITCase.java   | 12 +++++++-----
 .../apache/camel/dsl/jbang/it/RunCommandITCase.java    | 18 ++++++++++--------
 .../camel/dsl/jbang/it/RunCommandOnMqttITCase.java     |  9 ---------
 .../it/{CamelDebugITCase.java => StubITCase.java}      | 17 +++++++----------
 .../camel/dsl/jbang/it/support/JBangTestSupport.java   | 16 ++++++++--------
 .../infra/cli/services/CliLocalProcessService.java     | 15 +++++++++++++--
 .../camel/test/infra/cli/services/CliService.java      |  8 ++++++++
 .../test/infra/cli/services/CliServiceFactory.java     | 10 ++++++++++
 13 files changed, 67 insertions(+), 66 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
index 82eb38b5efa6..910eded0830a 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
@@ -19,14 +19,12 @@ package org.apache.camel.dsl.jbang.it;
 import java.io.IOException;
 
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 
 import static org.junit.jupiter.api.condition.OS.WINDOWS;
 
 @DisabledOnOs(WINDOWS)
-@Tag("container-only")
 public class CamelDebugITCase extends JBangTestSupport {
     @Test
     public void testDebug() throws IOException {
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
index 0d22f8220b03..f30c638f2be8 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/DevModeITCase.java
@@ -31,7 +31,6 @@ import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
 import org.apache.camel.dsl.jbang.it.support.JiraIssue;
 import org.assertj.core.api.Assertions;
 import org.assertj.core.api.SoftAssertions;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
 public class DevModeITCase extends JBangTestSupport {
@@ -76,12 +75,11 @@ public class DevModeITCase extends JBangTestSupport {
 
     @Test
     @JiraIssue("CAMEL-20939")
-    @Tag("container-only")
     public void runUsingProfileTest() throws IOException {
         copyResourceInDataFolder(TestResources.HELLO_NAME);
         copyResourceInDataFolder(TestResources.TEST_PROFILE_PROP);
         containerService.copyFileInternally(mountPoint() + "/" + 
TestResources.TEST_PROFILE_PROP.getName(),
-                DEFAULT_ROUTE_FOLDER);
+                containerService.getCommandWorkDir() + "/" + 
TestResources.TEST_PROFILE_PROP.getName());
         executeBackground(String.format("run %s/%s", mountPoint(), 
TestResources.HELLO_NAME.getName()));
         checkLogContains("Hello Camel from John");
         execute("stop helloName");
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
index d7beba63fda1..790feebcdb6b 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureITCase.java
@@ -55,11 +55,6 @@ public class InfrastructureITCase extends JBangTestSupport {
         return message.split(":")[1].replaceAll("[^0-9]", "");
     }
 
-    @Test
-    public void infraListTest() {
-        checkCommandOutputsPattern("infra list", 
"ALIAS\s+IMPLEMENTATION\s+UI\s+DESCRIPTION");
-    }
-
     @DisabledIfSystemProperty(named = "ci.env.name", matches = ".*",
                               disabledReason = "Requires too much resources")
     @Test
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureListITCase.java
similarity index 65%
copy from 
dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
copy to 
dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureListITCase.java
index 82eb38b5efa6..36f56371e08f 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/InfrastructureListITCase.java
@@ -16,22 +16,13 @@
  */
 package org.apache.camel.dsl.jbang.it;
 
-import java.io.IOException;
-
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledOnOs;
 
-import static org.junit.jupiter.api.condition.OS.WINDOWS;
+public class InfrastructureListITCase extends JBangTestSupport {
 
-@DisabledOnOs(WINDOWS)
-@Tag("container-only")
-public class CamelDebugITCase extends JBangTestSupport {
     @Test
-    public void testDebug() throws IOException {
-        copyResourceInDataFolder(TestResources.ROUTE2);
-        execNohup(String.format("debug %s/route2.yaml", mountPoint()));
-        checkLogContains("Debugger JMXConnector listening at:");
+    public void infraListTest() {
+        checkCommandOutputsPattern("infra list", 
"ALIAS\\s+IMPLEMENTATION\\s+UI\\s+DESCRIPTION");
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
index addfaec8e493..65c092e322b7 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/JolokiaITCase.java
@@ -23,14 +23,12 @@ import 
org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
 import org.assertj.core.api.Assertions;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 
 import static org.junit.jupiter.api.condition.OS.WINDOWS;
 
 @DisabledOnOs(WINDOWS)
-@Tag("container-only")
 public class JolokiaITCase extends JBangTestSupport {
 
     private String hawtioPid;
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
index 326886a684b2..5c02a177b75b 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/OpenApiITCase.java
@@ -31,11 +31,13 @@ import org.apache.camel.dsl.jbang.it.support.InVersion;
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledOnOs;
 import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
 
-@Tag("container-only")
+import static org.junit.jupiter.api.condition.OS.WINDOWS;
+
+@DisabledOnOs(WINDOWS)
 public class OpenApiITCase extends JBangTestSupport {
 
     @AfterEach
@@ -116,7 +118,7 @@ public class OpenApiITCase extends JBangTestSupport {
         final String generatedPath = mountPoint() + "/petstore";
         generateProperties(Map.of("camel.jbang.runtime", "spring-boot", 
"camel.jbang.gav", "example:petstore:1.0-SNAPSHOT",
                 "camel.jbang.exportDir", generatedPath, "camel.jbang.open-api",
-                DEFAULT_ROUTE_FOLDER + "/petstore-v3.json"));
+                containerService.getCommandWorkDir() + "/petstore-v3.json"));
         execute("export");
         assertFileInDataFolderExists("petstore");
         
assertFileInDataFolderExists("petstore/src/main/resources/petstore-v3.json");
@@ -134,9 +136,9 @@ public class OpenApiITCase extends JBangTestSupport {
         execute("plugin add generate");
         execute("plugin get");
         execute("generate rest --dto --input=petstore-v3.json 
--output=rest-dsl.yaml --runtime=spring-boot --routes");
-        List<String> generatedDTO = 
containerService.listDirectory(DEFAULT_ROUTE_FOLDER + "/model").toList();
+        List<String> generatedDTO = 
containerService.listDirectory(containerService.getCommandWorkDir() + 
"/model").toList();
         Assertions.assertThat(generatedDTO).as("check generated DTO 
number").hasSize(8);
-        assertFileInContainerExists(DEFAULT_ROUTE_FOLDER + "/rest-dsl.yaml");
+        assertFileInContainerExists(containerService.getCommandWorkDir() + 
"/rest-dsl.yaml");
     }
 
     private HttpResponse<String> executeHttpRequest(final String ctxUrl, 
boolean acceptJson) {
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
index cda6a8f96d3c..6927ad6476e8 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandITCase.java
@@ -81,18 +81,20 @@ public class RunCommandITCase extends JBangTestSupport {
     }
 
     @Test
-    @Tag("container-only")
+    @DisabledOnOs(WINDOWS)
     public void runRoutesFromMultipleFilesUsingWildcardTest() {
+        final String dir1 = mountPoint() + "/tmp-one";
+        final String dir2 = mountPoint() + "/tmp-two";
         try {
-            execute("init one.yaml --directory=/tmp/one");
-            execute("init two.xml --directory=/tmp/two");
-            copyInternallyToDataFolder("/tmp/one/one.yaml");
-            copyInternallyToDataFolder("/tmp/two/two.xml");
+            execute("init one.yaml --directory=" + dir1);
+            execute("init two.xml --directory=" + dir2);
+            copyInternallyToDataFolder(dir1 + "/one.yaml");
+            copyInternallyToDataFolder(dir2 + "/two.xml");
             executeBackground(String.format("run %s/* ", mountPoint()));
             checkLogContains(DEFAULT_MSG);
             checkLogContains(DEFAULT_MSG);
         } finally {
-            execInContainer("rm -rf /tmp/one /tmp/two");
+            execInContainer("rm -rf " + dir1 + " " + dir2);
         }
     }
 
@@ -132,10 +134,10 @@ public class RunCommandITCase extends JBangTestSupport {
     }
 
     @Test
-    @Tag("container-only")
     public void runDownloadedFromGithubTest() {
         execute("init 
https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection";);
-        
Assertions.assertThat(containerService.listDirectory(DEFAULT_ROUTE_FOLDER))
+        Assertions
+                
.assertThat(containerService.listDirectory(containerService.getCommandWorkDir()))
                 .as("default route directory")
                 .contains("Echo.java", "Hello.java", "README.adoc", 
"application.properties");
         executeBackground("run *");
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
index c3e46d8f7ec5..ffb74509eb54 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/RunCommandOnMqttITCase.java
@@ -62,15 +62,6 @@ public class RunCommandOnMqttITCase extends JBangTestSupport 
{
         checkLogContains("The temperature is 21");
     }
 
-    @Test
-    public void testStub() throws IOException {
-        copyResourceInDataFolder(TestResources.STUB_ROUTE);
-        final String process = executeBackground(String.format("run %s/%s 
--stub=jms",
-                mountPoint(), TestResources.STUB_ROUTE.getName()));
-        checkCommandOutputs("cmd send --body='Hello camel from stubbed jms' " 
+ process, "Sent (success)");
-        checkCommandOutputs("cmd stub --browse", "Hello camel from stubbed 
jms", ASSERTION_WAIT_SECONDS);
-    }
-
     private String getIpAddr(final GenericContainer container) {
         return 
container.getCurrentContainerInfo().getNetworkSettings().getNetworks().entrySet()
                 .stream().filter(entry -> "127.0.0.1" != 
entry.getValue().getIpAddress())
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/StubITCase.java
similarity index 65%
copy from 
dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
copy to 
dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/StubITCase.java
index 82eb38b5efa6..0769b39aaab1 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/CamelDebugITCase.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/StubITCase.java
@@ -19,19 +19,16 @@ package org.apache.camel.dsl.jbang.it;
 import java.io.IOException;
 
 import org.apache.camel.dsl.jbang.it.support.JBangTestSupport;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledOnOs;
 
-import static org.junit.jupiter.api.condition.OS.WINDOWS;
+public class StubITCase extends JBangTestSupport {
 
-@DisabledOnOs(WINDOWS)
-@Tag("container-only")
-public class CamelDebugITCase extends JBangTestSupport {
     @Test
-    public void testDebug() throws IOException {
-        copyResourceInDataFolder(TestResources.ROUTE2);
-        execNohup(String.format("debug %s/route2.yaml", mountPoint()));
-        checkLogContains("Debugger JMXConnector listening at:");
+    public void testStub() throws IOException {
+        copyResourceInDataFolder(TestResources.STUB_ROUTE);
+        final String process = executeBackground(String.format("run %s/%s 
--stub=jms",
+                mountPoint(), TestResources.STUB_ROUTE.getName()));
+        checkCommandOutputs("cmd send --body='Hello camel from stubbed jms' " 
+ process, "Sent (success)");
+        checkCommandOutputs("cmd stub --browse", "Hello camel from stubbed 
jms", ASSERTION_WAIT_SECONDS);
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
index f2ecdbdff5e5..4c5b671430b7 100644
--- 
a/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
+++ 
b/dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/support/JBangTestSupport.java
@@ -67,9 +67,6 @@ public abstract class JBangTestSupport {
     protected static final int ASSERTION_WAIT_SECONDS
             = 
Integer.parseInt(System.getProperty("jbang.it.assert.wait.timeout", "60"));
 
-    //to use only in case of container execution, so mark with the tag 
@Tag("container-only") the test
-    protected static final String DEFAULT_ROUTE_FOLDER = "/home/jbang";
-
     public static final String DEFAULT_MSG = "Hello Camel from";
 
     protected String containerDataFolder;
@@ -103,12 +100,13 @@ public abstract class JBangTestSupport {
             } catch (Exception | AssertionError e) {
                 logger.warn("integrations did not stop within timeout: {}", 
e.getMessage());
             }
-            // Remove non-hidden files/dirs from /home/jbang to prevent 
cross-test contamination.
+            // Remove non-hidden files/dirs from the command working directory 
to prevent cross-test contamination.
             // The JBang installation baseline is entirely hidden (.jbang/, 
.bashrc, .camel-jbang/).
             try {
-                execInContainer("find /home/jbang -maxdepth 1 -mindepth 1 -not 
-name '.*' -exec rm -rf {} +");
+                execInContainer(String.format("find %s -maxdepth 1 -mindepth 1 
-not -name '.*' -exec rm -rf {} +",
+                        containerService.getCommandWorkDir()));
             } catch (Exception | AssertionError e) {
-                logger.debug("failed to clean up test files from /home/jbang: 
{}", e.getMessage());
+                logger.debug("failed to clean up test files from {}: {}", 
containerService.getCommandWorkDir(), e.getMessage());
             }
             for (String key : new String[] { "runtime", "gav", "directory" }) {
                 try {
@@ -455,7 +453,8 @@ public abstract class JBangTestSupport {
 
     protected String downloadFile(String downloadUrl) {
         String fileName = this.downloadNewFileInDataFolder(downloadUrl);
-        containerService.copyFileInternally(mountPoint() + "/" + fileName, 
DEFAULT_ROUTE_FOLDER);
+        containerService.copyFileInternally(mountPoint() + "/" + fileName,
+                containerService.getCommandWorkDir() + "/" + fileName);
         return fileName;
     }
 
@@ -475,7 +474,8 @@ public abstract class JBangTestSupport {
         this.newFileInDataFolder(fileName, contentWriter.toString());
         if (!inDataFolder) {
             containerService.executeGenericCommand(
-                    String.format("mv %s/%s %s/%s", mountPoint(), fileName, 
DEFAULT_ROUTE_FOLDER, fileName));
+                    String.format("mv %s/%s %s/%s", mountPoint(), fileName, 
containerService.getCommandWorkDir(),
+                            fileName));
         }
     }
 
diff --git 
a/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliLocalProcessService.java
 
b/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliLocalProcessService.java
index d3226cb02632..3fee87d9c654 100644
--- 
a/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliLocalProcessService.java
+++ 
b/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliLocalProcessService.java
@@ -308,7 +308,13 @@ public class CliLocalProcessService implements CliService {
     @Override
     public void copyFileInternally(String source, String destination) {
         try {
-            Files.copy(Path.of(source), Path.of(destination), 
StandardCopyOption.REPLACE_EXISTING);
+            Path src = Path.of(source);
+            Path dst = Path.of(destination);
+            // Mirror `cp` semantics: if destination is an existing directory, 
copy into it
+            if (Files.isDirectory(dst)) {
+                dst = dst.resolve(src.getFileName());
+            }
+            Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
         } catch (IOException e) {
             Assertions.fail(String.format("unable to copy file %s to %s", 
source, destination), e);
         }
@@ -525,7 +531,7 @@ public class CliLocalProcessService implements CliService {
 
     private void createMavenSettingsFile() {
         try {
-            mavenSettingsFile = Files.createTempFile(workDir, 
"maven-settings", ".xml");
+            mavenSettingsFile = 
Files.createTempFile("camel-jbang-maven-settings", ".xml");
             String settingsContent = String.format(
                     "<?xml version=\"1.0\" encoding=\"UTF-8\"?>%n"
                                                    + "<settings 
xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"%n";
@@ -553,4 +559,9 @@ public class CliLocalProcessService implements CliService {
         throw new UnsupportedOperationException("SSH is not supported for 
local process service");
     }
 
+    @Override
+    public String getCommandWorkDir() {
+        return workDir.toAbsolutePath().toString();
+    }
+
 }
diff --git 
a/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliService.java
 
b/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliService.java
index 2fd7026b7afa..99e9d7875966 100644
--- 
a/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliService.java
+++ 
b/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliService.java
@@ -86,4 +86,12 @@ public interface CliService extends BeforeEachCallback, 
AfterEachCallback, TestS
     default String getMainCommand() {
         return System.getProperty("cli.service.command", "camel");
     }
+
+    /**
+     * Returns the working directory from which camel commands are executed. 
In container mode this is the container's
+     * home directory; in local process mode it is the host working directory.
+     */
+    default String getCommandWorkDir() {
+        return "/home/jbang";
+    }
 }
diff --git 
a/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliServiceFactory.java
 
b/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliServiceFactory.java
index 11166f5e5701..cdbda487e61a 100644
--- 
a/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliServiceFactory.java
+++ 
b/test-infra/camel-test-infra-cli/src/main/java/org/apache/camel/test/infra/cli/services/CliServiceFactory.java
@@ -43,6 +43,11 @@ public final class CliServiceFactory {
             return getService().executeBackground(command);
         }
 
+        @Override
+        public String executeNohup(String command) {
+            return getService().executeNohup(command);
+        }
+
         @Override
         public String executeGenericCommand(String command) {
             return getService().executeGenericCommand(command);
@@ -97,6 +102,11 @@ public final class CliServiceFactory {
         public String getSshPassword() {
             return getService().getSshPassword();
         }
+
+        @Override
+        public String getCommandWorkDir() {
+            return getService().getCommandWorkDir();
+        }
     }
 
     private CliServiceFactory() {

Reply via email to