You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform/internal/command/experimental_test.go

105 lines
2.5 KiB

// Copyright IBM Corp. 2014, 2026
// 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)
}
})
}