// Copyright 2016-2022, Pulumi Corporation. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package examples import ( "bytes" "os" "path/filepath" "strings" "testing" "github.com/stretchr/testify/assert" "github.com/pulumi/pulumi/pkg/v3/testing/integration" ) //nolint:paralleltest // uses parallel programtest func TestAccMinimal_withLocalState(t *testing.T) { test := getBaseOptions(). With(integration.ProgramTestOptions{ Dir: filepath.Join(getCwd(t), "minimal"), Config: map[string]string{ "name": "Pulumi", }, Secrets: map[string]string{ "secret": "this is my secret message", }, ExtraRuntimeValidation: func(t *testing.T, stackInfo integration.RuntimeValidationStackInfo) { // Simple runtime validation that just ensures the checkpoint was written and read. assert.NotNil(t, stackInfo.Deployment) }, RunBuild: true, CloudURL: integration.MakeTempBackend(t), }) integration.ProgramTest(t, &test) } //nolint:paralleltest // uses parallel programtest func TestAccDynamicProviderSimple_withLocalState(t *testing.T) { test := getBaseOptions(). With(integration.ProgramTestOptions{ Dir: filepath.Join(getCwd(t), "dynamic-provider/simple"), Config: map[string]string{ "simple:config:w": "1", "simple:config:x": "1", "simple:config:y": "1", }, CloudURL: integration.MakeTempBackend(t), }) integration.ProgramTest(t, &test) } //nolint:paralleltest // uses parallel programtest func TestAccFormattable_withLocalState(t *testing.T) { var formattableStdout, formattableStderr bytes.Buffer test := getBaseOptions(). With(integration.ProgramTestOptions{ Dir: filepath.Join(getCwd(t), "formattable"), ExtraRuntimeValidation: func(t *testing.T, stackInfo integration.RuntimeValidationStackInfo) { // Note that we're abusing this hook to validate stdout. We don't actually care about the checkpoint. stdout := formattableStdout.String() assert.False(t, strings.Contains(stdout, "MISSING")) }, Stdout: &formattableStdout, Stderr: &formattableStderr, CloudURL: integration.MakeTempBackend(t), }) integration.ProgramTest(t, &test) } func getCwd(t *testing.T) string { cwd, err := os.Getwd() if err != nil { t.FailNow() } return cwd } func getBaseOptions() integration.ProgramTestOptions { return integration.ProgramTestOptions{ Dependencies: []string{"@pulumi/pulumi"}, } }