From c266711f17f589af013a7350b3e7d8b1cdbb27cf Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Fri, 27 Mar 2026 21:08:07 +0100 Subject: [PATCH] Isolate Kubernetes plugin test working directories under target/ Co-Authored-By: Claude Opus 4.6 --- .../kubernetes/KubernetesBaseCommand.java | 2 -- .../commands/kubernetes/KubernetesRun.java | 6 +++++- .../kubernetes/KubernetesBaseTestSupport.java | 5 +++++ .../kubernetes/KubernetesRunCustomTest.java | 20 +++++++++++++++++-- .../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 43eebadccc5da..656bf770b9eda 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 @@ */ 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 3da2ca43b9ae3..afa5a27ccaf5f 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 Integer doCall() throws Exception { 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 94272ccbe7f4e..9f65de0cdb373 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.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 @@ @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 void setup() { @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 bf73715716ba5..712825ea4e544 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 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 @@ @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 @@ public void runWithProperties() throws Exception { 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 @@ private KubernetesRun createCommand(List files, String... args) { 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 ba2c5a81ec10d..aafe0fa157a16 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 @@ public void verifyProperties() throws Exception { 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 @@ private KubernetesRun createCommand(List files, String... args) { 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;