This is an automated email from the ASF dual-hosted git repository.

gnodet 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 a4d17dddcec7 Isolate Kubernetes plugin test working directories under 
target/
a4d17dddcec7 is described below

commit a4d17dddcec7af377a986f3a434a9f4ccce4f1b2
Author: Guillaume Nodet <[email protected]>
AuthorDate: Sun Mar 29 22:37:07 2026 +0200

    Isolate Kubernetes plugin test working directories under target/
    
    Kubernetes plugin tests (KubernetesRunTest, KubernetesRunCustomTest)
    were creating .camel-jbang-run/ directories in the module root, causing
    concurrent test collisions and stale files in the source tree.
    
    Extract a getRunPlatformDir() method in KubernetesRun that tests
    override to target/tests/<ClassName>, isolating each test class under
    target/. Add @AfterAll/@AfterEach cleanup and missing
    CommandLineHelper.useHomeDir("target") to KubernetesRunCustomTest.
    
    Closes #22301
---
 .../commands/kubernetes/KubernetesBaseCommand.java   |  2 --
 .../core/commands/kubernetes/KubernetesRun.java      |  6 +++++-
 .../kubernetes/KubernetesBaseTestSupport.java        |  5 +++++
 .../commands/kubernetes/KubernetesRunCustomTest.java | 20 ++++++++++++++++++--
 .../core/commands/kubernetes/KubernetesRunTest.java  |  9 +++++++--
 5 files changed, 35 insertions(+), 7 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
index 43eebadccc5d..656bf770b9ed 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseCommand.java
@@ -45,8 +45,6 @@ import picocli.CommandLine;
  */
 public abstract class KubernetesBaseCommand extends CamelCommand {
 
-    static final String RUN_PLATFORM_DIR = ".camel-jbang-run";
-
     @CommandLine.Option(names = { "--kube-config" },
                         description = "Path to the kube config file to 
initialize Kubernetes client")
     String kubeConfig;
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
index 3da2ca43b9ae..afa5a27ccaf5 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
@@ -424,8 +424,12 @@ public class KubernetesRun extends KubernetesBaseCommand {
         return 0;
     }
 
+    String getRunPlatformDir() {
+        return ".camel-jbang-run";
+    }
+
     private String getIndexedWorkingDir(String projectName) {
-        var workingDir = RUN_PLATFORM_DIR + File.separator + projectName;
+        var workingDir = getRunPlatformDir() + File.separator + projectName;
         if (devModeReloadCount > 0) {
             workingDir += "-%03d".formatted(devModeReloadCount);
         }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseTestSupport.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseTestSupport.java
index 94272ccbe7f4..9f65de0cdb37 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseTestSupport.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesBaseTestSupport.java
@@ -18,6 +18,7 @@
 package org.apache.camel.dsl.jbang.core.commands.kubernetes;
 
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
@@ -32,6 +33,7 @@ import org.apache.camel.dsl.jbang.core.common.PluginHelper;
 import org.apache.camel.dsl.jbang.core.common.PluginType;
 import org.apache.camel.dsl.jbang.core.common.StringPrinter;
 import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
+import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.StringHelper;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -41,6 +43,8 @@ import org.junit.jupiter.api.TestInstance;
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class KubernetesBaseTestSupport {
 
+    protected final String runPlatformDir = "target/tests/" + 
getClass().getSimpleName();
+
     private KubernetesMockServer k8sServer;
     protected KubernetesClient kubernetesClient;
     protected StringPrinter printer;
@@ -70,6 +74,7 @@ public class KubernetesBaseTestSupport {
     @AfterAll
     public void cleanup() {
         k8sServer.destroy();
+        FileUtil.removeDir(new File(runPlatformDir));
     }
 
     protected static InputStream getKubernetesManifestAsStream(String 
printerOutput) {
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunCustomTest.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunCustomTest.java
index bf73715716ba..712825ea4e54 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunCustomTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunCustomTest.java
@@ -44,8 +44,11 @@ import 
io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import 
org.apache.camel.dsl.jbang.core.commands.kubernetes.traits.ContainerTrait;
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
 import org.apache.camel.dsl.jbang.core.common.StringPrinter;
 import org.apache.camel.dsl.jbang.core.common.VersionHelper;
+import org.apache.camel.util.FileUtil;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -64,12 +67,20 @@ import picocli.CommandLine;
 @EnableKubernetesMockClient
 class KubernetesRunCustomTest {
 
+    final String runPlatformDir = "target/tests/" + getClass().getSimpleName();
+
     protected KubernetesMockServer server;
     protected KubernetesClient client;
     protected StringPrinter printer;
 
+    @AfterEach
+    void cleanupWorkDirs() {
+        FileUtil.removeDir(new File(runPlatformDir));
+    }
+
     @BeforeEach
     public void setup() {
+        CommandLineHelper.useHomeDir("target");
         // Set Camel version with system property value, usually set via Maven 
surefire plugin
         // In case you run this test via local Java IDE you need to provide 
the system property or a default value here
         VersionHelper.setCamelVersion(System.getProperty("camel.version", ""));
@@ -125,7 +136,7 @@ class KubernetesRunCustomTest {
         Assertions.assertEquals(0, exit, printer.getOutput());
 
         Properties materializedProps = new Properties();
-        String propsFilepath = 
".camel-jbang-run/my-route-props/src/main/resources/application.properties";
+        String propsFilepath = runPlatformDir + 
"/my-route-props/src/main/resources/application.properties";
         Assertions.assertTrue(new File(propsFilepath).exists());
         try (FileInputStream input = new FileInputStream(new 
File(propsFilepath))) {
             materializedProps.load(input);
@@ -291,7 +302,12 @@ class KubernetesRunCustomTest {
         var argsArr = Optional.ofNullable(args).orElse(new String[0]);
         var argsLst = new ArrayList<>(Arrays.asList(argsArr));
         var jbangMain = new CamelJBangMain().withPrinter(printer);
-        KubernetesRun command = new KubernetesRun(jbangMain, files);
+        KubernetesRun command = new KubernetesRun(jbangMain, files) {
+            @Override
+            String getRunPlatformDir() {
+                return runPlatformDir;
+            }
+        };
         CommandLine.populateCommand(command, argsLst.toArray(new String[0]));
         command.imageBuild = false;
         command.imagePush = false;
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunTest.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunTest.java
index ba2c5a81ec10..aafe0fa157a1 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRunTest.java
@@ -91,7 +91,7 @@ class KubernetesRunTest extends KubernetesBaseTestSupport {
         Assertions.assertEquals(0, exit);
 
         Properties materializedProps = new Properties();
-        String propsFilepath = 
".camel-jbang-run/my-route-props/src/main/resources/application.properties";
+        String propsFilepath = runPlatformDir + 
"/my-route-props/src/main/resources/application.properties";
         try (FileInputStream input = new FileInputStream(new 
File(propsFilepath))) {
             materializedProps.load(input);
         }
@@ -240,7 +240,12 @@ class KubernetesRunTest extends KubernetesBaseTestSupport {
         var argsArr = Optional.ofNullable(args).orElse(new String[0]);
         var argsLst = new ArrayList<>(Arrays.asList(argsArr));
         var jbangMain = new CamelJBangMain().withPrinter(printer);
-        KubernetesRun command = new KubernetesRun(jbangMain, files);
+        KubernetesRun command = new KubernetesRun(jbangMain, files) {
+            @Override
+            String getRunPlatformDir() {
+                return runPlatformDir;
+            }
+        };
         CommandLine.populateCommand(command, argsLst.toArray(new String[0]));
         command.imageBuild = false;
         command.imagePush = false;

Reply via email to