diff --git a/src/main/groovy/io/openliberty/tools/gradle/tasks/AbstractFeatureTask.groovy b/src/main/groovy/io/openliberty/tools/gradle/tasks/AbstractFeatureTask.groovy index 14485c7a..031621bf 100644 --- a/src/main/groovy/io/openliberty/tools/gradle/tasks/AbstractFeatureTask.groovy +++ b/src/main/groovy/io/openliberty/tools/gradle/tasks/AbstractFeatureTask.groovy @@ -110,8 +110,8 @@ public class AbstractFeatureTask extends AbstractServerTask { } private class InstallFeatureTaskUtil extends InstallFeatureUtil { - public InstallFeatureTaskUtil(File installDir, File buildDir, String from, String to, Set pluginListedEsas, List propertiesList, String openLibertyVerion, String containerName, List additionalJsons, String verify, Collection> keyMap) throws PluginScenarioException, PluginExecutionException { - super(installDir, buildDir, from, to, pluginListedEsas, propertiesList, openLibertyVerion, containerName, additionalJsons, verify, keyMap) + public InstallFeatureTaskUtil(File installDir, File buildDir, String from, String to, Set pluginListedEsas, List propertiesList, String openLibertyVerion, String containerName, List additionalJsons, String verify, Collection> keyMap, Map environmentVariables) throws PluginScenarioException, PluginExecutionException { + super(installDir, buildDir, from, to, pluginListedEsas, propertiesList, openLibertyVerion, containerName, additionalJsons, verify, keyMap, environmentVariables) setContainerEngine(this); } @@ -295,7 +295,11 @@ public class AbstractFeatureTask extends AbstractServerTask { private void createNewInstallFeatureUtil(Set pluginListedEsas, List propertiesList, String openLibertyVerion, String containerName, List additionalJsons, Collection> keyMap) throws PluginExecutionException { try { logger.info("Feature signature verify option: " + server.features.verify) - util = new InstallFeatureTaskUtil(getInstallDir(project), project.getLayout().getBuildDirectory().getAsFile().get(), server.features.from, server.features.to, pluginListedEsas, propertiesList, openLibertyVerion, containerName, additionalJsons, server.features.verify, keyMap) + Map envVars = getToolchainEnvVar() + if (envVars != null && !envVars.isEmpty() && envVars.containsKey("JAVA_HOME")) { + logger.debug("Passing toolchain JAVA_HOME to InstallFeatureUtil: " + envVars.get("JAVA_HOME")) + } + util = new InstallFeatureTaskUtil(getInstallDir(project), project.getLayout().getBuildDirectory().getAsFile().get(), server.features.from, server.features.to, pluginListedEsas, propertiesList, openLibertyVerion, containerName, additionalJsons, server.features.verify, keyMap, envVars) } catch (PluginScenarioException e) { logger.debug("Exception received: " + e.getMessage(), (Throwable) e) logger.debug("Installing features from installUtility.") diff --git a/src/test/groovy/io/openliberty/tools/gradle/InstallFeatureToolchainTest.groovy b/src/test/groovy/io/openliberty/tools/gradle/InstallFeatureToolchainTest.groovy new file mode 100644 index 00000000..066575be --- /dev/null +++ b/src/test/groovy/io/openliberty/tools/gradle/InstallFeatureToolchainTest.groovy @@ -0,0 +1,51 @@ +package io.openliberty.tools.gradle + +import org.gradle.testkit.runner.BuildResult +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Test + +import static org.junit.Assert.assertTrue + +class InstallFeatureToolchainTest extends AbstractIntegrationTest { + + static File resourceDir = new File("build/resources/test/kernel-install-feature-test") + static File buildDir = new File(integTestDir, "/install-feature-toolchain-test") + static String buildFilename = "install_features_dependencies.gradle" + + @BeforeClass + public static void setup() { + createDir(buildDir) + createTestProject(buildDir, resourceDir, buildFilename) + + File buildFile = new File(buildDir, "build.gradle") + def fileContent = buildFile.text + fileContent = fileContent.replace( + "apply plugin: 'liberty'", + "apply plugin: 'liberty'\napply plugin: 'java'\n\njava {\n toolchain {\n languageVersion = JavaLanguageVersion.of(17)\n }\n}" + ) + buildFile.text = fileContent + } + + @Before + public void before() { + runTasks(buildDir, "libertyCreate") + copyServer("server_empty.xml") + deleteDir(new File(buildDir, "build/wlp/lib/features")) + } + + @Test + public void testInstallFeatureWithToolchain() { + BuildResult result = runTasksResult(buildDir, "installFeature") + + String output = result.getOutput() + + assertTrue("Should show toolchain configured message for installFeature task", + output.contains(String.format(TOOLCHAIN_CONFIGURED, "installFeature"))) + } + + private copyServer(String serverFile) { + assertTrue(new File(resourceDir, serverFile).exists()) + copyFile(new File(resourceDir, serverFile), new File(buildDir, "build/wlp/usr/servers/defaultServer/server.xml")) + } +}