diff --git a/core/src/tasks/resolve-provider.ts b/core/src/tasks/resolve-provider.ts index c726344856..34e490495c 100644 --- a/core/src/tasks/resolve-provider.ts +++ b/core/src/tasks/resolve-provider.ts @@ -253,7 +253,6 @@ export class ResolveProviderTask extends BaseTask { return getProviderStatusCachePath({ gardenDirPath: this.garden.gardenDirPath, pluginName: this.plugin.name, - environmentName: this.garden.environmentName, }) } @@ -381,11 +380,9 @@ export class ResolveProviderTask extends BaseTask { export function getProviderStatusCachePath({ gardenDirPath, pluginName, - environmentName, }: { gardenDirPath: string pluginName: string - environmentName: string }) { - return join(gardenDirPath, "cache", "provider-statuses", `${pluginName}.${environmentName}.json`) + return join(gardenDirPath, "cache", "provider-statuses", `${pluginName}.json`) } diff --git a/core/test/data/exec-provider-cache/.gitignore b/core/test/data/exec-provider-cache/.gitignore new file mode 100644 index 0000000000..f8c3214fdc --- /dev/null +++ b/core/test/data/exec-provider-cache/.gitignore @@ -0,0 +1 @@ +theFile diff --git a/core/test/data/exec-provider-cache/project.garden.yml b/core/test/data/exec-provider-cache/project.garden.yml new file mode 100644 index 0000000000..d5117eccd3 --- /dev/null +++ b/core/test/data/exec-provider-cache/project.garden.yml @@ -0,0 +1,8 @@ +kind: Project +name: incident-repro +environments: + - name: one + - name: two +providers: + - name: exec + initScript: "echo '${environment.name}' > theFile" diff --git a/core/test/integ/src/plugins/exec/resolve.ts b/core/test/integ/src/plugins/exec/resolve.ts new file mode 100644 index 0000000000..650434df47 --- /dev/null +++ b/core/test/integ/src/plugins/exec/resolve.ts @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2018-2022 Garden Technologies, Inc. <info@garden.io> + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { expect } from "chai" +import { readFile } from "fs-extra" +import { join } from "node:path" +import { getDataDir, makeTestGarden, TestGarden } from "../../../../helpers" + +describe("exec provider initialization cache behaviour", () => { + let gardenOne: TestGarden + let tmpDir: string + let fileLocation: string + + beforeEach(async () => { + gardenOne = await makeTestGarden(getDataDir("exec-provider-cache"), { environmentName: "one" }) + + tmpDir = join(await gardenOne.getRepoRoot(), "project") + fileLocation = join(tmpDir, "theFile") + + await gardenOne.resolveProvider(gardenOne.log, "exec") + }) + + it("writes the environment name to theFile as configured in the initScript", async () => { + const contents = await readFile(fileLocation, { encoding: "utf-8" }) + + expect(contents).equal("one\n") + }) + + it("overwrites theFile when changing environments", async () => { + let contents = await readFile(fileLocation, { encoding: "utf-8" }) + expect(contents).equal("one\n") + + const gardenTwo = await makeTestGarden(tmpDir, { environmentName: "two", noTempDir: true }) + await gardenTwo.resolveProvider(gardenTwo.log, "exec") + + contents = await readFile(fileLocation, { encoding: "utf-8" }) + expect(contents).equal("two\n") + }) + + it("still overwrites theFile when changing environments back", async () => { + let contents = await readFile(fileLocation, { encoding: "utf-8" }) + expect(contents).equal("one\n") + + const gardenTwo = await makeTestGarden(tmpDir, { environmentName: "two", noTempDir: true }) + await gardenTwo.resolveProvider(gardenTwo.log, "exec") + + contents = await readFile(fileLocation, { encoding: "utf-8" }) + expect(contents).equal("two\n") + + const gardenOneAgain = await makeTestGarden(tmpDir, { environmentName: "one", noTempDir: true }) + await gardenOneAgain.resolveProvider(gardenOneAgain.log, "exec") + + contents = await readFile(fileLocation, { encoding: "utf-8" }) + expect(contents).equal("one\n") + }) +}) diff --git a/plugins/terraform/commands.ts b/plugins/terraform/commands.ts index fb2a0c3e2d..146c8f1799 100644 --- a/plugins/terraform/commands.ts +++ b/plugins/terraform/commands.ts @@ -45,7 +45,6 @@ function makeRootCommand(commandName: string) { const cachePath = getProviderStatusCachePath({ gardenDirPath: ctx.gardenDirPath, pluginName: provider.name, - environmentName: ctx.environmentName, }) await remove(cachePath)