Normalize the version before it is looked up in the tool cache

Currently the resolved version is cached. For example something like 8.0.141.
On other hand when a version is looked up in the cache the string provided
by the user is used. This may lead to unexpected behavior. 1.8 will not match
8.0.141. Normalizing the version string before looking up in the tool cache
will solve the problem. The normalized version (8.x) will match the
entry in the cache as expected.

Normalizing the string in the beginning of the flow won't hurt
as it is a valid version specification. What is more it the user can supply
the normalized version directly so the code should be able to work with it.
This commit is contained in:
Plamen Totev 2020-04-14 21:17:06 +03:00
parent 5c87b70ffe
commit 249ea4386f
2 changed files with 16 additions and 1 deletions

View file

@ -143,6 +143,20 @@ describe('installer tests', () => {
return; return;
}); });
it('Uses 1.x version of Java installed in cache', async () => {
const JavaDir: string = path.join(toolDir, 'jdk', '8.0.181', 'x64');
await io.mkdirP(JavaDir);
fs.writeFileSync(`${JavaDir}.complete`, 'hello');
// This will throw if it doesn't find it in the cache
await installer.getJava(
'1.8',
'x64',
'path shouldnt matter, found in cache',
'jdk'
);
return;
});
it('Doesnt use version of Java that was only partially installed in cache', async () => { it('Doesnt use version of Java that was only partially installed in cache', async () => {
const JavaDir: string = path.join(toolDir, 'jdk', '251.0.0', 'x64'); const JavaDir: string = path.join(toolDir, 'jdk', '251.0.0', 'x64');
await io.mkdirP(JavaDir); await io.mkdirP(JavaDir);

View file

@ -32,6 +32,8 @@ export async function getJava(
jdkFile: string, jdkFile: string,
javaPackage: string javaPackage: string
): Promise<void> { ): Promise<void> {
version = normalizeVersion(version);
let toolPath = tc.find(javaPackage, version); let toolPath = tc.find(javaPackage, version);
if (toolPath) { if (toolPath) {
@ -190,7 +192,6 @@ function getDownloadInfo(
version: string, version: string,
javaPackage: string javaPackage: string
): {version: string; url: string} { ): {version: string; url: string} {
version = normalizeVersion(version);
let extension = ''; let extension = '';
if (IS_WINDOWS) { if (IS_WINDOWS) {
extension = `-win_x64.zip`; extension = `-win_x64.zip`;