terraform/internal/command/experimental_test.go
Sarah French 5be24bf1d0
Fix experimental gating of PSS feature (#37526)
* Stop `state_store` being parsed when experiments aren't enabled

* Update tests that show the feature is experimentally gated

* Refactor to use unparsed hcl.Block for diagnostics when experiments aren't enabled
2025-08-29 14:23:35 +01:00

104 lines
2.5 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package command
import (
"strings"
"testing"
"github.com/hashicorp/cli"
)
func TestInit_stateStoreBlockIsExperimental(t *testing.T) {
t.Run("init command", func(t *testing.T) {
// Create a temporary working directory with state_store in use
td := t.TempDir()
testCopyDir(t, testFixturePath("init-with-state-store"), td)
t.Chdir(td)
ui := new(cli.MockUi)
view, done := testView(t)
c := &InitCommand{
Meta: Meta{
Ui: ui,
View: view,
AllowExperimentalFeatures: false,
},
}
args := []string{}
code := c.Run(args)
testOutput := done(t)
if code != 1 {
t.Fatalf("unexpected output: \n%s", testOutput.All())
}
// Check output
output := testOutput.Stderr()
if !strings.Contains(output, `Blocks of type "state_store" are not expected here`) {
t.Fatalf("doesn't look like experiment is blocking access': %s", output)
}
})
t.Run("non-init command: plan", func(t *testing.T) {
// Create a temporary working directory with state_store in use
td := t.TempDir()
testCopyDir(t, testFixturePath("init-with-state-store"), td)
t.Chdir(td)
ui := new(cli.MockUi)
view, done := testView(t)
c := &PlanCommand{
Meta: Meta{
Ui: ui,
View: view,
AllowExperimentalFeatures: false,
},
}
args := []string{}
code := c.Run(args)
testOutput := done(t)
if code != 1 {
t.Fatalf("unexpected output: \n%s", testOutput.All())
}
// Check output
output := testOutput.Stderr()
if !strings.Contains(output, `Blocks of type "state_store" are not expected here`) {
t.Fatalf("doesn't look like experiment is blocking access': %s", output)
}
})
t.Run("non-init command: state list", func(t *testing.T) {
// Create a temporary working directory with state_store in use
td := t.TempDir()
testCopyDir(t, testFixturePath("init-with-state-store"), td)
t.Chdir(td)
ui := new(cli.MockUi)
view, done := testView(t)
c := &StateListCommand{
Meta: Meta{
Ui: ui,
View: view,
AllowExperimentalFeatures: false,
},
}
args := []string{}
code := c.Run(args)
testOutput := done(t)
if code != 1 {
t.Fatalf("unexpected output: \n%s", testOutput.All())
}
// Check output
output := ui.ErrorWriter.String()
if !strings.Contains(output, `Blocks of type "state_store" are not expected here`) {
t.Fatalf("doesn't look like experiment is blocking access': %s", output)
}
})
}