backport of commit 80fd008309

pull/38328/head
Daniel Banck 1 month ago committed by Daniel Banck
parent abf1d2a930
commit bfb3476039

@ -4,6 +4,7 @@
package command
import (
"context"
"fmt"
"io"
"net/http"
@ -11,6 +12,15 @@ import (
"os"
"path/filepath"
"testing"
"github.com/hashicorp/terraform/internal/backend"
"github.com/hashicorp/terraform/internal/backend/backendrun"
"github.com/hashicorp/terraform/internal/command/arguments"
"github.com/hashicorp/terraform/internal/configs"
"github.com/hashicorp/terraform/internal/terraform"
"github.com/hashicorp/terraform/internal/tfdiags"
backendLocal "github.com/hashicorp/terraform/internal/backend/local"
)
func cloudTestServerWithVars(t *testing.T) *httptest.Server {
@ -116,3 +126,50 @@ func cloudTestServerWithVars(t *testing.T) *httptest.Server {
return httptest.NewServer(mux)
}
// TestVariableBackend is a backend used in test that are fetching variable
// values for constant values.
type TestVariableBackend struct {
*backendLocal.Local
vars map[string]string
}
func TestNewVariableBackend(result map[string]string) backend.Backend {
return &TestVariableBackend{
Local: backendLocal.New(),
vars: result,
}
}
var _ backendrun.ConstVariableSupplier = (*TestVariableBackend)(nil)
func (b *TestVariableBackend) FetchVariables(ctx context.Context, workspace string) (map[string]arguments.UnparsedVariableValue, tfdiags.Diagnostics) {
result := make(map[string]arguments.UnparsedVariableValue)
for name, value := range b.vars {
result[name] = testUnparsedVariableValueString{
str: value,
name: name,
}
}
return result, nil
}
type testUnparsedVariableValueString struct {
str string
name string
}
func (v testUnparsedVariableValueString) ParseVariableValue(mode configs.VariableParsingMode) (*terraform.InputValue, tfdiags.Diagnostics) {
var diags tfdiags.Diagnostics
val, hclDiags := mode.Parse(v.name, v.str)
diags = diags.Append(hclDiags)
return &terraform.InputValue{
Value: val,
SourceType: terraform.ValueFromInput,
}, diags
}

Loading…
Cancel
Save