/
githubmirror
/
terraform
Обзор
Документация
Войти
/
githubmirror
/
terraform
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/stacks/stackmigrate/meta_test.go
93 строки
2 KB
Sarah French
fix: Block commands from using an invalid workspace name. (#38594)
27 май 2026, 16:16
Не верифицирован
27 май 2026, 16:16
81053e9
Код
Авторство
О чём код?
// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package stackmigrate import ( "os" "path/filepath" "testing" "github.com/hashicorp/terraform/internal/backend/local" ) // DefaultDataDir is the default directory for storing local data. const DefaultDataDir = ".terraform" func TestMeta_Workspace_override(t *testing.T) { defer func(value string) { os.Setenv(WorkspaceNameEnvVar, value) }(os.Getenv(WorkspaceNameEnvVar)) m := new(Meta) testCases := map[string]struct { workspace string err error }{ "": { "default", nil, }, "development": { "development", nil, }, "invalid name": { "", errInvalidWorkspaceNameEnvVar, }, } for name, tc := range testCases { t.Run(name, func(t *testing.T) { os.Setenv(WorkspaceNameEnvVar, name) workspace, err := m.Workspace() if workspace != tc.workspace { t.Errorf("Unexpected workspace\n got: %s\nwant: %s\n", workspace, tc.workspace) } if err != tc.err { t.Errorf("Unexpected error\n got: %s\nwant: %s\n", err, tc.err) } }) } } // If somehow an invalid workspace has been selected, the Meta.Workspace // method should not return an error, to ensure that we don't break any // existing workflows with invalid workspace names. func TestMeta_Workspace_invalidSelected(t *testing.T) { td := t.TempDir() t.Chdir(td) // this is an invalid workspace name workspace := "test workspace" // create the workspace directories if err := os.MkdirAll(filepath.Join(local.DefaultWorkspaceDir, workspace), 0755); err != nil { t.Fatal(err) } // create the workspace file to select it if err := os.MkdirAll(DefaultDataDir, 0755); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(DefaultDataDir, local.DefaultWorkspaceFile), []byte(workspace), 0644); err != nil { t.Fatal(err) } m := new(Meta) // Normally, errors are returned when selecting an invalid workspace. ws, err := m.Workspace() if ws != "" { t.Errorf("Unexpected workspace\n got: %s\nwant: %s\n", ws, workspace) } if err == nil { t.Errorf("Expected error but got none") } // The Meta in the command package has a field `bypassWorkspaceNameValidityCheck` that allows // a selected workspace to be invalid in specific commands (i.e. enough to enable users to recover from an invalid value). // This can be implemented in Stacks when/if needed. }