diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts index 9c943c2f..c96e6aeb 100644 --- a/__tests__/util.test.ts +++ b/__tests__/util.test.ts @@ -2,6 +2,7 @@ import * as cache from '@actions/cache'; import * as core from '@actions/core'; import { convertVersionToSemver, + getVersionFromFileContent, isVersionSatisfies, isCacheFeatureAvailable, isGhes @@ -82,6 +83,22 @@ describe('convertVersionToSemver', () => { }); }); +describe('getVersionFromFileContent', () => { + describe('.sdkmanrc', () => { + it.each([ + ['java=11.0.20.1-tem', '11.0.20'], + ['java = 11.0.20.1-tem', '11.0.20'], + ['java=11.0.20.1-tem # a comment in sdkmanrc', '11.0.20'], + ['java=11.0.20.1-tem\n#java=21.0.20.1-tem\n', '11.0.20'], // choose first match + ['java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '11.0.20'], // choose first match + ['#java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '21.0.20'] // first one is 'commented' in .sdkmanrc + ])('parsing %s should return %s', (content: string, expected: string) => { + const actual = getVersionFromFileContent(content, 'openjdk', '.sdkmanrc'); + expect(actual).toBe(expected); + }); + }); +}); + describe('isGhes', () => { const pristineEnv = process.env; diff --git a/dist/cleanup/index.js b/dist/cleanup/index.js index 79ad0b5f..063375a4 100644 --- a/dist/cleanup/index.js +++ b/dist/cleanup/index.js @@ -94706,6 +94706,9 @@ function getVersionFromFileContent(content, distributionName, versionFile) { javaVersionRegExp = /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; } + else if (versionFileName == '.sdkmanrc') { + javaVersionRegExp = /^java\s*=\s*(?[^-]+)/m; + } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; } diff --git a/dist/setup/index.js b/dist/setup/index.js index c4e8ec9e..2efeb81b 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -132741,6 +132741,9 @@ function getVersionFromFileContent(content, distributionName, versionFile) { javaVersionRegExp = /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; } + else if (versionFileName == '.sdkmanrc') { + javaVersionRegExp = /^java\s*=\s*(?[^-]+)/m; + } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; } diff --git a/src/util.ts b/src/util.ts index 9e5f2f66..7aafee07 100644 --- a/src/util.ts +++ b/src/util.ts @@ -134,6 +134,8 @@ export function getVersionFromFileContent( if (versionFileName == '.tool-versions') { javaVersionRegExp = /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; + } else if (versionFileName == '.sdkmanrc') { + javaVersionRegExp = /^java\s*=\s*(?[^-]+)/m; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; }