This is an automated email from the ASF dual-hosted git repository. cdeppisch pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 9c452bf4bb7a2a305175194c7d2916a06a0f5236 Author: Christoph Deppisch <[email protected]> AuthorDate: Fri Apr 10 09:08:21 2026 +0200 Revert embedded JBang test plugin - Reverts changes related to CAMEL-23147 - Need to revert the embedding of the test plugin as there is no way to successfully run tests with just citrus-base dependency - The Citrus test execution via JBang Java process provides proper dependency resolution strategies - The JBang Java process also separates the Citrus runtime classpath from Camel Launcher avoiding circular dependencies between Camel and Citrus --- dsl/camel-jbang/camel-jbang-plugin-test/pom.xml | 2 +- .../dsl/jbang/core/commands/test/TestInit.java | 158 -------------- .../dsl/jbang/core/commands/test/TestPlugin.java | 148 ++++++++++++- .../dsl/jbang/core/commands/test/TestRun.java | 229 --------------------- .../main/resources/templates/citrus-feature.tmpl | 8 - .../main/resources/templates/citrus-groovy.tmpl | 5 - .../src/main/resources/templates/citrus-java.tmpl | 21 -- .../src/main/resources/templates/citrus-xml.tmpl | 12 -- .../src/main/resources/templates/citrus-yaml.tmpl | 10 - dsl/camel-jbang/camel-launcher/pom.xml | 6 +- .../dsl/jbang/launcher/CamelLauncherMain.java | 2 - 11 files changed, 145 insertions(+), 456 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/pom.xml b/dsl/camel-jbang/camel-jbang-plugin-test/pom.xml index 593ee0288eee..b660622ff8ea 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-test/pom.xml +++ b/dsl/camel-jbang/camel-jbang-plugin-test/pom.xml @@ -49,7 +49,7 @@ <dependency> <groupId>org.citrusframework</groupId> - <artifactId>citrus-base</artifactId> + <artifactId>citrus-jbang-connector</artifactId> <version>${citrus-version}</version> </dependency> diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestInit.java b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestInit.java deleted file mode 100644 index 7bc2aedbabdd..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestInit.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.dsl.jbang.core.commands.test; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; - -import org.apache.camel.dsl.jbang.core.commands.CamelCommand; -import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; -import org.apache.camel.dsl.jbang.core.commands.ExportHelper; -import org.apache.camel.util.IOHelper; -import org.citrusframework.CitrusVersion; -import picocli.CommandLine; - -/** - * Initializes a new Citrus test file from a template. Creates the test subfolder if it does not exist and writes a - * template test source for the given file type. Also creates a jbang.properties file with default Citrus dependencies - * when not already present. - */ [email protected](name = "init", - description = "Initialize a new Citrus test from a template") -public class TestInit extends CamelCommand { - - public static final String TEST_DIR = "test"; - - @CommandLine.Parameters(index = "0", description = "Test file name (e.g. MyTest.yaml, MyTest.xml, MyTest.java)") - String file; - - @CommandLine.Option(names = { "-d", "--directory" }, description = "Target directory", defaultValue = ".") - String directory; - - public TestInit(CamelJBangMain main) { - super(main); - } - - @Override - public Integer doCall() throws Exception { - // Determine file extension and base name - String ext = getFileExtension(file); - String baseName = getBaseName(file); - - if (ext.isEmpty()) { - printer().println("Cannot determine file type for: " + file); - return 1; - } - - // Load template for the file type - String template; - try (InputStream is = TestInit.class.getClassLoader().getResourceAsStream("templates/citrus-" + ext + ".tmpl")) { - if (is == null) { - printer().println("Unsupported test file type: " + ext); - return 1; - } - template = IOHelper.loadText(is); - } - - // Replace template placeholders - template = template.replaceAll("\\{\\{ \\.Name }}", baseName); - - // Determine the working directory - Path workingDir = resolveTestDir(); - if (workingDir == null) { - printer().println("Cannot create test working directory"); - return 1; - } - - // Create target directory if specified - Path targetDir; - if (".".equals(directory)) { - targetDir = workingDir; - } else { - targetDir = workingDir.resolve(directory); - Files.createDirectories(targetDir); - } - - // Create jbang properties with default dependencies if not present - createJBangProperties(workingDir); - - // Write the test file - Path testFile = targetDir.resolve(file); - Files.writeString(testFile, template); - - printer().println("Created test file: " + testFile); - return 0; - } - - /** - * Resolves and creates the test directory. Automatically uses the test subfolder as the working directory. - */ - private Path resolveTestDir() { - Path currentDir = Paths.get("."); - Path workingDir; - if (TEST_DIR.equals(currentDir.toAbsolutePath().normalize().getFileName().toString())) { - // current directory is already the test subfolder - workingDir = currentDir; - } else if (currentDir.resolve(TEST_DIR).toFile().exists()) { - // navigate to existing test subfolder - workingDir = currentDir.resolve(TEST_DIR); - } else if (currentDir.resolve(TEST_DIR).toFile().mkdirs()) { - // create test subfolder and navigate to it - workingDir = currentDir.resolve(TEST_DIR); - } else { - return null; - } - return workingDir; - } - - /** - * Creates jbang.properties with default Citrus dependencies if not already present. - */ - private void createJBangProperties(Path workingDir) { - if (!workingDir.resolve("jbang.properties").toFile().exists()) { - Path jbangProperties = workingDir.resolve("jbang.properties"); - try (InputStream is - = TestInit.class.getClassLoader().getResourceAsStream("templates/jbang-properties.tmpl")) { - String context = IOHelper.loadText(is); - context = context.replaceAll("\\{\\{ \\.CitrusVersion }}", CitrusVersion.version()); - ExportHelper.safeCopy(new ByteArrayInputStream(context.getBytes(StandardCharsets.UTF_8)), jbangProperties); - } catch (Exception e) { - printer().println("Failed to create jbang.properties for tests in: " + jbangProperties); - } - } - } - - private static String getFileExtension(String fileName) { - int dotIndex = fileName.lastIndexOf('.'); - if (dotIndex > 0 && dotIndex < fileName.length() - 1) { - return fileName.substring(dotIndex + 1); - } - return ""; - } - - private static String getBaseName(String fileName) { - int dotIndex = fileName.lastIndexOf('.'); - if (dotIndex > 0) { - return fileName.substring(0, dotIndex); - } - return fileName; - } -} diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestPlugin.java b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestPlugin.java index 085fd9cb294d..a556df43b7c3 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestPlugin.java +++ b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestPlugin.java @@ -16,12 +16,27 @@ */ package org.apache.camel.dsl.jbang.core.commands.test; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Optional; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.commands.ExportHelper; import org.apache.camel.dsl.jbang.core.common.CamelJBangPlugin; import org.apache.camel.dsl.jbang.core.common.Plugin; import org.apache.camel.dsl.jbang.core.common.PluginExporter; +import org.apache.camel.util.IOHelper; +import org.citrusframework.CitrusVersion; +import org.citrusframework.jbang.JBangSettings; +import org.citrusframework.jbang.JBangSupport; +import org.citrusframework.jbang.ProcessAndOutput; import picocli.CommandLine; @CamelJBangPlugin(name = "camel-jbang-plugin-test", firstVersion = "4.14.0") @@ -29,15 +44,138 @@ public class TestPlugin implements Plugin { @Override public void customize(CommandLine commandLine, CamelJBangMain main) { - var cmd = new CommandLine(new TestCommand(main)) - .addSubcommand("init", new CommandLine(new TestInit(main))) - .addSubcommand("run", new CommandLine(new TestRun(main))); - - commandLine.addSubcommand("test", cmd); + commandLine.setExecutionStrategy(new CitrusExecutionStrategy(main)) + .addSubcommand("test", new CommandLine(new TestCommand(main)) + .setUnmatchedArgumentsAllowed(true) + .setUnmatchedOptionsAllowedAsOptionParameters(true)); } @Override public Optional<PluginExporter> getExporter() { return Optional.of(new TestPluginExporter()); } + + /** + * Command execution strategy delegates to Citrus JBang for subcommands like init or run. Performs special command + * preparations and makes sure to run the proper Citrus version for this Camel release. + * + * @param main Camel JBang main that provides the output printer. + */ + private record CitrusExecutionStrategy(CamelJBangMain main) implements CommandLine.IExecutionStrategy { + + public static final String TEST_DIR = "test"; + + @Override + public int execute(CommandLine.ParseResult parseResult) + throws CommandLine.ExecutionException, CommandLine.ParameterException { + + String command; + List<String> args = Collections.emptyList(); + + if (parseResult.originalArgs().size() > 2) { + command = parseResult.originalArgs().get(1); + args = parseResult.originalArgs().subList(2, parseResult.originalArgs().size()); + } else if (parseResult.originalArgs().size() == 2) { + command = parseResult.originalArgs().get(1); + } else { + // run help command by default + command = "--help"; + } + + JBangSupport citrus = JBangSupport.jbang().app(JBangSettings.getApp()) + .withSystemProperty("citrus.jbang.version", CitrusVersion.version()); + + // Prepare commands + if ("init".equals(command)) { + return executeInitCommand(citrus, args); + } else if ("run".equals(command)) { + return executeRunCommand(citrus, args); + } + + return execute(citrus, command, args); + } + + /** + * Prepare and execute init command. Automatically uses test subfolder as a working directory for creating new + * tests. Automatically adds a jbang.properties configuration to add required Camel Citrus dependencies. + */ + private int executeInitCommand(JBangSupport citrus, List<String> args) { + Path currentDir = Paths.get("."); + Path workingDir; + // Automatically set test subfolder as a working directory + if (TEST_DIR.equals(currentDir.getFileName().toString())) { + // current directory is already the test subfolder + workingDir = currentDir; + } else if (currentDir.resolve(TEST_DIR).toFile().exists()) { + // navigate to existing test subfolder + workingDir = currentDir.resolve(TEST_DIR); + citrus.workingDir(workingDir); + } else if (currentDir.resolve(TEST_DIR).toFile().mkdirs()) { + // create test subfolder and navigate to it + workingDir = currentDir.resolve(TEST_DIR); + citrus.workingDir(workingDir); + } else { + throw new RuntimeCamelException("Cannot create test working directory in: " + currentDir); + } + + // Create jbang properties with default dependencies if not present + if (!workingDir.resolve("jbang.properties").toFile().exists()) { + Path jbangProperties = workingDir.resolve("jbang.properties"); + try (InputStream is + = TestPlugin.class.getClassLoader().getResourceAsStream("templates/jbang-properties.tmpl")) { + String context = IOHelper.loadText(is); + + context = context.replaceAll("\\{\\{ \\.CitrusVersion }}", CitrusVersion.version()); + + ExportHelper.safeCopy(new ByteArrayInputStream(context.getBytes(StandardCharsets.UTF_8)), jbangProperties); + } catch (Exception e) { + main.getOut().println("Failed to create jbang.properties for tests in:" + jbangProperties); + } + } + + return execute(citrus, "init", args); + } + + /** + * Prepare and execute Citrus run command. Automatically navigates to test subfolder if it is present and uses + * this as a working directory. Runs command asynchronous streaming logs to the main output of this Camel JBang + * process. + */ + private int executeRunCommand(JBangSupport citrus, List<String> args) { + Path currentDir = Paths.get("."); + List<String> runArgs = new ArrayList<>(args); + // automatically navigate to test subfolder for test execution + if (currentDir.resolve(TEST_DIR).toFile().exists()) { + // set test subfolder as working directory + citrus.workingDir(currentDir.resolve(TEST_DIR)); + + // remove test folder prefix in test file path if present + if (!args.isEmpty() && args.get(0).startsWith(TEST_DIR + "/")) { + runArgs = new ArrayList<>(args.subList(1, args.size())); + runArgs.add(0, args.get(0).substring((TEST_DIR + "/").length())); + } + } + + citrus.withOutputListener(output -> main.getOut().print(output)); + ProcessAndOutput pao = citrus.runAsync("run", runArgs); + try { + pao.waitFor(); + } catch (InterruptedException e) { + main.getOut().printErr("Interrupted while running Citrus command", e); + } + + return pao.getProcess().exitValue(); + } + + /** + * Uses given Citrus JBang instance to run the given command using the given arguments. + * + * @return exit code of the command process. + */ + private int execute(JBangSupport citrus, String command, List<String> args) { + ProcessAndOutput pao = citrus.run(command, args); + main.getOut().print(pao.getOutput()); + return pao.getProcess().exitValue(); + } + } } diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestRun.java b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestRun.java deleted file mode 100644 index 6d1094ada282..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/java/org/apache/camel/dsl/jbang/core/commands/test/TestRun.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.dsl.jbang.core.commands.test; - -import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.camel.dsl.jbang.core.commands.CamelCommand; -import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; -import org.citrusframework.TestSource; -import org.citrusframework.main.TestEngine; -import org.citrusframework.main.TestRunConfiguration; -import org.citrusframework.util.FileUtils; -import picocli.CommandLine; - -/** - * Runs Citrus test files directly using the Citrus test engine. This replaces the indirect JBang process call with a - * direct in-process test execution. - */ [email protected](name = "run", - description = "Run Citrus tests") -public class TestRun extends CamelCommand { - - public static final String TEST_DIR = "test"; - public static final String WORK_DIR = ".citrus-jbang"; - - private static final String[] ACCEPTED_FILE_EXT = { "xml", "yaml", "yml", "java", "groovy", "feature" }; - - @CommandLine.Parameters(description = "Test files or directories to run", arity = "0..*") - String[] files; - - @CommandLine.Option(names = { "--engine" }, description = "Test engine to use", defaultValue = "default") - String engine; - - @CommandLine.Option(names = { "--verbose" }, description = "Enable verbose output") - boolean verbose; - - @CommandLine.Option(names = { "-p", "--property" }, description = "Set system properties (key=value)") - String[] properties; - - @CommandLine.Option(names = { "--includes" }, description = "Test name include patterns") - String[] includes; - - public TestRun(CamelJBangMain main) { - super(main); - } - - @Override - public Integer doCall() throws Exception { - Path currentDir = Paths.get("."); - - // Determine working directory (prefer test subfolder) - Path workDir; - if (currentDir.resolve(TEST_DIR).toFile().exists()) { - workDir = currentDir.resolve(TEST_DIR); - } else { - workDir = currentDir; - } - - // Set up system properties - Map<String, String> props = new HashMap<>(); - if (properties != null) { - for (String prop : properties) { - String[] parts = prop.split("=", 2); - if (parts.length == 2) { - props.put(parts[0], parts[1]); - } - } - } - - // Apply system properties - for (Map.Entry<String, String> entry : props.entrySet()) { - System.setProperty(entry.getKey(), entry.getValue()); - } - - // Clean and create work directory - File citrusWorkDir = new File(WORK_DIR); - removeDir(citrusWorkDir); - if (!citrusWorkDir.mkdirs()) { - printer().println("Failed to create working directory " + WORK_DIR); - return 1; - } - - // Resolve test sources - List<String> testSources = new ArrayList<>(); - resolveTests(files, testSources, workDir); - - // If no explicit files given, scan current directory - if (testSources.isEmpty()) { - resolveTests(new String[] { workDir.toString() }, testSources, workDir); - } - - if (testSources.isEmpty()) { - printer().println("No test files found"); - return 1; - } - - // Build test run configuration - TestRunConfiguration configuration = getRunConfiguration(testSources, workDir); - - // Look up and run the test engine - TestEngine testEngine = TestEngine.lookup(configuration); - testEngine.run(); - - return 0; - } - - /** - * Creates a test run configuration from the resolved test sources. - */ - protected TestRunConfiguration getRunConfiguration(List<String> testSources, Path workDir) { - String ext = FileUtils.getFileExtension(testSources.get(0)); - - TestRunConfiguration configuration = new TestRunConfiguration(); - configuration.setWorkDir(workDir.toAbsolutePath().toString()); - - if (!"default".equals(engine)) { - configuration.setEngine(engine); - } else if ("feature".equals(ext)) { - configuration.setEngine("cucumber"); - } - - configuration.setVerbose(verbose); - - if (includes != null) { - configuration.setIncludes(includes); - } - - // Add test sources - List<TestSource> sources = new ArrayList<>(); - for (String source : testSources) { - String sourceExt = FileUtils.getFileExtension(source); - String baseName = FileUtils.getBaseName(new File(source).getName()); - sources.add(new TestSource(sourceExt, baseName, source)); - } - configuration.setTestSources(sources); - - return configuration; - } - - /** - * Resolves test file paths from the given arguments. Handles both individual files and directories. - */ - private void resolveTests(String[] testArgs, List<String> resolved, Path workDir) { - if (testArgs == null) { - return; - } - - for (String arg : testArgs) { - // Adjust path if it starts with test/ prefix and we're using the test subfolder - String filePath = arg; - if (filePath.startsWith(TEST_DIR + "/")) { - filePath = filePath.substring((TEST_DIR + "/").length()); - } - - File resolved0 = workDir.resolve(filePath).toFile(); - if (!resolved0.exists()) { - resolved0 = new File(filePath); - } - final File testFile = resolved0; - - if (testFile.isDirectory()) { - // Scan directory for test files - String[] dirFiles = testFile.list(); - if (dirFiles != null) { - String[] fullPaths = Arrays.stream(dirFiles) - .filter(f -> !skipFile(f)) - .map(f -> new File(testFile, f).getPath()) - .toArray(String[]::new); - resolveTests(fullPaths, resolved, workDir); - } - } else if (testFile.exists() && !skipFile(testFile.getName())) { - resolved.add(testFile.getPath()); - } - } - } - - /** - * Checks if a file should be skipped based on its extension. - */ - private boolean skipFile(String fileName) { - if (fileName.startsWith(".")) { - return true; - } - String ext = FileUtils.getFileExtension(fileName); - return Arrays.stream(ACCEPTED_FILE_EXT).noneMatch(e -> e.equals(ext)); - } - - /** - * Recursively removes a directory. - */ - private static void removeDir(File dir) { - if (dir.exists()) { - delete(dir); - } - } - - private static void delete(File file) { - if (file.isDirectory()) { - File[] children = file.listFiles(); - if (children != null) { - for (File child : children) { - delete(child); - } - } - } - file.delete(); - } -} diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-feature.tmpl b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-feature.tmpl deleted file mode 100644 index 88c4e347d8a1..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-feature.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -Feature: {{ .Name }} - - Background: - Given variables - | message | "Citrus rocks!" | - - Scenario: Print message - Then print '${message}' diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-groovy.tmpl b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-groovy.tmpl deleted file mode 100644 index 0acce60ab4cc..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-groovy.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -variables { - message = "Citrus rocks!" -} - -$(echo('${message}')) diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-java.tmpl b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-java.tmpl deleted file mode 100644 index f99d9dbac01e..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-java.tmpl +++ /dev/null @@ -1,21 +0,0 @@ -import org.citrusframework.TestActionSupport; -import org.citrusframework.TestCaseRunner; -import org.citrusframework.annotations.CitrusResource; - - -public class {{ .Name }} implements Runnable, TestActionSupport { - - @CitrusResource - TestCaseRunner t; - - @Override - public void run() { - t.given( - createVariables().variable("message", "Citrus rocks!") - ); - - t.then( - echo().message("${message}") - ); - } -} diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-xml.tmpl b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-xml.tmpl deleted file mode 100644 index e394315b7f6b..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-xml.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -<test name="{{ .Name }}" author="Citrus" status="FINAL" xmlns="http://citrusframework.org/schema/xml/testcase" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://citrusframework.org/schema/xml/testcase http://citrusframework.org/schema/xml/testcase/citrus-testcase.xsd"> - <description>Sample test in XML</description> - <variables> - <variable name="message" value="Citrus rocks!"/> - </variables> - - <actions> - <echo message="${message}"/> - </actions> -</test> diff --git a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-yaml.tmpl b/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-yaml.tmpl deleted file mode 100644 index c88c44624115..000000000000 --- a/dsl/camel-jbang/camel-jbang-plugin-test/src/main/resources/templates/citrus-yaml.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -name: {{ .Name }} -author: Citrus -status: FINAL -description: Sample test in YAML -variables: - - name: message - value: Citrus rocks! -actions: - - echo: - message: "${message}" diff --git a/dsl/camel-jbang/camel-launcher/pom.xml b/dsl/camel-jbang/camel-launcher/pom.xml index 902f8f633b05..eea6b53355d8 100644 --- a/dsl/camel-jbang/camel-launcher/pom.xml +++ b/dsl/camel-jbang/camel-launcher/pom.xml @@ -66,16 +66,12 @@ <!-- Pre-installed plugins --> <!-- the edit plugin is not pre-installed --> <!-- the route-parser plugin is not pre-installed --> + <!-- the citrus test plugin cannot be embedded --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jbang-plugin-generate</artifactId> <version>${project.version}</version> </dependency> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-jbang-plugin-test</artifactId> - <version>${project.version}</version> - </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jbang-plugin-kubernetes</artifactId> diff --git a/dsl/camel-jbang/camel-launcher/src/main/java/org/apache/camel/dsl/jbang/launcher/CamelLauncherMain.java b/dsl/camel-jbang/camel-launcher/src/main/java/org/apache/camel/dsl/jbang/launcher/CamelLauncherMain.java index 8acfc37760ae..594c916bfb81 100644 --- a/dsl/camel-jbang/camel-launcher/src/main/java/org/apache/camel/dsl/jbang/launcher/CamelLauncherMain.java +++ b/dsl/camel-jbang/camel-launcher/src/main/java/org/apache/camel/dsl/jbang/launcher/CamelLauncherMain.java @@ -19,7 +19,6 @@ package org.apache.camel.dsl.jbang.launcher; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; import org.apache.camel.dsl.jbang.core.commands.generate.GeneratePlugin; import org.apache.camel.dsl.jbang.core.commands.kubernetes.KubernetesPlugin; -import org.apache.camel.dsl.jbang.core.commands.test.TestPlugin; import org.apache.camel.dsl.jbang.core.commands.validate.ValidatePlugin; import picocli.CommandLine; @@ -33,7 +32,6 @@ public class CamelLauncherMain extends CamelJBangMain { // install embedded plugins new GeneratePlugin().customize(commandLine, this); new KubernetesPlugin().customize(commandLine, this); - new TestPlugin().customize(commandLine, this); new ValidatePlugin().customize(commandLine, this); }
