| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| package command | |
| import ( | |
| "strings" | |
| "testing" | |
| ) | |
| 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 := testUiWrapped(t) | |
| 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 := testUiWrapped(t) | |
| 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 := testUiWrapped(t) | |
| 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) | |
| } | |
| }) | |
| } |