From 864fa80f2e0dcc27db81ed10a8523d16b81ca085 Mon Sep 17 00:00:00 2001 From: hfhbd <22521688+hfhbd@users.noreply.github.com> Date: Wed, 10 Apr 2024 20:50:12 +0200 Subject: [PATCH] Add a test for merging existing toolchains.xml --- sources/src/caching/gradle-user-home-cache.ts | 5 +- sources/src/caching/gradle-user-home-utils.ts | 5 ++ .../test/jest/predefined-toolchains.test.ts | 54 ++++++++++++++++++- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/sources/src/caching/gradle-user-home-cache.ts b/sources/src/caching/gradle-user-home-cache.ts index 48d8fdf..2984090 100644 --- a/sources/src/caching/gradle-user-home-cache.ts +++ b/sources/src/caching/gradle-user-home-cache.ts @@ -9,7 +9,7 @@ import {CacheListener} from './cache-reporting' import {saveCache, restoreCache, cacheDebug, isCacheDebuggingEnabled, tryDelete} from './cache-utils' import {CacheConfig} from '../configuration' import {GradleHomeEntryExtractor, ConfigurationCacheEntryExtractor} from './gradle-home-extry-extractor' -import {getPredefinedToolchains, readResourceFileAsString} from './gradle-user-home-utils' +import {getPredefinedToolchains, mergeToolchainContent, readResourceFileAsString} from './gradle-user-home-utils' const RESTORED_CACHE_KEY_KEY = 'restored-cache-key' @@ -233,8 +233,7 @@ export class GradleUserHomeCache { } else { // Merge into an existing toolchains.xml file const existingToolchainContent = fs.readFileSync(toolchainXmlTarget, 'utf8') - const appendedContent = preInstalledToolchains.split('').pop()! - const mergedContent = existingToolchainContent.replace('', appendedContent) + const mergedContent = mergeToolchainContent(existingToolchainContent, preInstalledToolchains) fs.writeFileSync(toolchainXmlTarget, mergedContent) core.info(`Merged default JDK locations into ${toolchainXmlTarget}`) diff --git a/sources/src/caching/gradle-user-home-utils.ts b/sources/src/caching/gradle-user-home-utils.ts index d0ec406..4d38033 100644 --- a/sources/src/caching/gradle-user-home-utils.ts +++ b/sources/src/caching/gradle-user-home-utils.ts @@ -42,3 +42,8 @@ export function getPredefinedToolchains(): string | null { toolchainsXml += `\n` return toolchainsXml } + +export function mergeToolchainContent(existingToolchainContent: string, preInstalledToolchains: string): string { + const appendedContent = preInstalledToolchains.split('').pop()! + return existingToolchainContent.replace('', appendedContent) +} diff --git a/sources/test/jest/predefined-toolchains.test.ts b/sources/test/jest/predefined-toolchains.test.ts index 0d8221d..6f88a03 100644 --- a/sources/test/jest/predefined-toolchains.test.ts +++ b/sources/test/jest/predefined-toolchains.test.ts @@ -1,4 +1,4 @@ -import {getPredefinedToolchains} from "../../src/caching/gradle-user-home-utils"; +import {getPredefinedToolchains, mergeToolchainContent} from "../../src/caching/gradle-user-home-utils"; describe('predefined-toolchains', () => { const OLD_ENV = process.env @@ -62,4 +62,56 @@ describe('predefined-toolchains', () => { `) }) }) + + it("merges with existing toolchains", async () => { + jest.resetModules() + process.env = { + "JAVA_HOME_11_X64": "/jdks/foo_11", + } + + // language=XML + const existingToolchains = + ` + + + jdk + + 8 + + + \${env.JAVA_HOME_8_X64} + + + +` + + const mergedContent = mergeToolchainContent(existingToolchains, getPredefinedToolchains()!) + expect(mergedContent).toBe( + // language=XML + ` + + + jdk + + 8 + + + \${env.JAVA_HOME_8_X64} + + + + + + jdk + + 11 + + + \${env.JAVA_HOME_11_X64} + + + + +`) + }) })