Merge pull request #6901 from pulumi/vl/FixStackSettings

[auto/go] Fix stack settings save/load typo and add tests
This commit is contained in:
Vivek Lakshmanan 2021-04-28 11:35:29 -07:00 committed by GitHub
commit c0b5339cf3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 62 additions and 2 deletions

View file

@ -75,7 +75,7 @@ func (l *LocalWorkspace) SaveProjectSettings(ctx context.Context, settings *work
func (l *LocalWorkspace) StackSettings(ctx context.Context, stackName string) (*workspace.ProjectStack, error) {
name := getStackSettingsName(stackName)
for _, ext := range settingsExtensions {
stackPath := filepath.Join(l.WorkDir(), fmt.Sprintf("pulumi.%s%s", name, ext))
stackPath := filepath.Join(l.WorkDir(), fmt.Sprintf("Pulumi.%s%s", name, ext))
if _, err := os.Stat(stackPath); err != nil {
proj, err := workspace.LoadProjectStack(stackPath)
if err != nil {
@ -95,7 +95,7 @@ func (l *LocalWorkspace) SaveStackSettings(
settings *workspace.ProjectStack,
) error {
name := getStackSettingsName(stackName)
stackYamlPath := filepath.Join(l.WorkDir(), fmt.Sprintf("pulumi.%s.yaml:", name))
stackYamlPath := filepath.Join(l.WorkDir(), fmt.Sprintf("Pulumi.%s.yaml", name))
err := settings.Save(stackYamlPath)
if err != nil {
return errors.Wrapf(err, "failed to save stack setttings for %s", stackName)

View file

@ -18,6 +18,7 @@ import (
"bytes"
"context"
"fmt"
"github.com/stretchr/testify/require"
"math/rand"
"os"
"os/exec"
@ -1507,6 +1508,65 @@ func TestProjectSettingsRespected(t *testing.T) {
assert.Equal(t, *projectSettings.Description, "This is a description")
}
func TestSaveStackSettings(t *testing.T) {
ctx := context.Background()
sName := fmt.Sprintf("int_test%d", rangeIn(10000000, 99999999))
stackName := FullyQualifiedStackName(pulumiOrg, pName, sName)
opts := []LocalWorkspaceOption{
SecretsProvider("passphrase"),
EnvVars(map[string]string{
"PULUMI_CONFIG_PASSPHRASE": "password",
}),
}
// initialize
s, err := NewStackInlineSource(ctx, stackName, pName, func(ctx *pulumi.Context) error {
c := config.New(ctx, "")
ctx.Export("exp_static", pulumi.String("foo"))
ctx.Export("exp_cfg", pulumi.String(c.Get("bar")))
ctx.Export("exp_secret", c.GetSecret("buzz"))
return nil
}, opts...)
require.NoError(t, err, "failed to initialize stack, err: %v", err)
defer func() {
// -- pulumi stack rm --
err = s.Workspace().RemoveStack(ctx, s.Name())
assert.Nil(t, err, "failed to remove stack. Resources have leaked.")
}()
// first load settings for created stack
stackConfig, err := s.Workspace().StackSettings(ctx, stackName)
require.NoError(t, err)
stackConfig.SecretsProvider = "passphrase"
assert.NoError(t, s.Workspace().SaveStackSettings(ctx, stackName, stackConfig))
// -- pulumi up --
res, err := s.Up(ctx)
if err != nil {
t.Errorf("up failed, err: %v", err)
t.FailNow()
}
assert.Equal(t, "update", res.Summary.Kind)
assert.Equal(t, "succeeded", res.Summary.Result)
reloaded, err := s.workspace.StackSettings(ctx, stackName)
assert.NoError(t, err)
assert.Equal(t, stackConfig, reloaded)
// -- pulumi destroy --
dRes, err := s.Destroy(ctx)
if err != nil {
t.Errorf("destroy failed, err: %v", err)
t.FailNow()
}
assert.Equal(t, "destroy", dRes.Summary.Kind)
assert.Equal(t, "succeeded", dRes.Summary.Result)
}
func BenchmarkBulkSetConfigMixed(b *testing.B) {
ctx := context.Background()
stackName := FullyQualifiedStackName(pulumiOrg, "set_config_mixed", "dev")