From 2776db6a2dd5ad521ee0fd5532e36a6f977bcc30 Mon Sep 17 00:00:00 2001 From: Sebastian Poxhofer <secustor@users.noreply.github.com> Date: Wed, 16 Jun 2021 13:02:04 +0200 Subject: [PATCH] fix(terraform): use path joins instead of slashes (#10461) Co-authored-by: Rhys Arkins <rhys@arkins.net> Co-authored-by: Michael Kriese <michael.kriese@visualon.de> --- lib/manager/terraform/lockfile/hash.spec.ts | 20 +++++++------------- lib/manager/terraform/lockfile/hash.ts | 5 +++-- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/manager/terraform/lockfile/hash.spec.ts b/lib/manager/terraform/lockfile/hash.spec.ts index 875ee609f8..8c17ee4c20 100644 --- a/lib/manager/terraform/lockfile/hash.spec.ts +++ b/lib/manager/terraform/lockfile/hash.spec.ts @@ -1,4 +1,5 @@ import { createReadStream } from 'fs'; +import { join } from 'upath'; import * as httpMock from '../../../../test/http-mock'; import { getFixturePath, getName, loadFixture } from '../../../../test/util'; import { TerraformProviderDatasource } from '../../../datasource/terraform-provider'; @@ -7,14 +8,11 @@ import createHashes from './hash'; const terraformProviderDatasource = new TerraformProviderDatasource(); const releaseBackendUrl = terraformProviderDatasource.defaultRegistryUrls[1]; const releaseBackendAzurerm = loadFixture('releaseBackendAzurerm_2_56_0.json'); +const cacheDir = join('/tmp/renovate/cache'); describe(getName(), () => { it('returns null if a non hashicorp release is found ', async () => { - const result = await createHashes( - 'test/gitlab', - '2.56.0', - '/tmp/renovate/cache' - ); + const result = await createHashes('test/gitlab', '2.56.0', cacheDir); expect(result).toBeNull(); }); @@ -24,11 +22,7 @@ describe(getName(), () => { .get('/terraform-provider-azurerm/2.59.0/index.json') .reply(403, ''); - const result = await createHashes( - 'hashicorp/azurerm', - '2.59.0', - '/tmp/renovate/cache' - ); + const result = await createHashes('hashicorp/azurerm', '2.59.0', cacheDir); expect(result).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -39,7 +33,7 @@ describe(getName(), () => { .get('/terraform-provider-azurerm/2.56.0/index.json') .replyWithError(''); - const result = await createHashes('hashicorp/azurerm', '2.56.0', '/tmp'); + const result = await createHashes('hashicorp/azurerm', '2.56.0', cacheDir); expect(result).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -64,7 +58,7 @@ describe(getName(), () => { ) .reply(200, readStreamDarwin); - const result = await createHashes('hashicorp/azurerm', '2.56.0', '/tmp'); + const result = await createHashes('hashicorp/azurerm', '2.56.0', cacheDir); expect(result).toBeNull(); expect(httpMock.getTrace()).toMatchSnapshot(); }); @@ -89,7 +83,7 @@ describe(getName(), () => { ) .reply(200, readStreamDarwin); - const result = await createHashes('hashicorp/azurerm', '2.56.0', '/tmp'); + const result = await createHashes('hashicorp/azurerm', '2.56.0', cacheDir); expect(result).not.toBeNull(); expect(result).toBeArrayOfSize(2); expect(result).toMatchSnapshot(); diff --git a/lib/manager/terraform/lockfile/hash.ts b/lib/manager/terraform/lockfile/hash.ts index 4d101a4717..f659a60fee 100644 --- a/lib/manager/terraform/lockfile/hash.ts +++ b/lib/manager/terraform/lockfile/hash.ts @@ -1,6 +1,7 @@ import crypto from 'crypto'; import extract from 'extract-zip'; import pMap from 'p-map'; +import { join } from 'upath'; import { TerraformProviderDatasource } from '../../../datasource/terraform-provider'; import type { TerraformBuild, @@ -80,8 +81,8 @@ export async function calculateHashes( const hashes = await pMap( builds, async (build) => { - const downloadFileName = `${cacheDir}/${build.filename}`; - const extractPath = `${cacheDir}/extract/${build.filename}`; + const downloadFileName = join(cacheDir, build.filename); + const extractPath = join(cacheDir, 'extract', build.filename); logger.trace( `Downloading archive and generating hash for ${build.name}-${build.version}...` ); -- GitLab