Files
opentf/internal/command/meta_vars_test.go
2025-04-23 07:48:41 -04:00

79 lines
1.5 KiB
Go

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package command
import (
"os"
"path/filepath"
"testing"
"github.com/opentofu/opentofu/internal/backend"
"github.com/opentofu/opentofu/internal/tofu"
)
func TestMeta_addVarsFromFile(t *testing.T) {
d := t.TempDir()
t.Chdir(d)
hclData := `foo = "bar"`
jsonData := `{"foo": "bar"}`
cases := []struct {
filename string
contents string
errors bool
}{
{
filename: "input.tfvars",
contents: hclData,
errors: false,
},
{
filename: "input.json",
contents: jsonData,
errors: false,
},
{
filename: "input_a.unknown",
contents: hclData,
errors: false,
},
{
filename: "input_b.unknown",
contents: jsonData,
errors: false,
},
{
filename: "mismatch.tfvars",
contents: jsonData,
errors: true,
},
{
filename: "mismatch.json",
contents: hclData,
errors: true,
},
}
for _, tc := range cases {
t.Run(tc.filename, func(t *testing.T) {
target := filepath.Join(d, tc.filename)
err := os.WriteFile(target, []byte(tc.contents), 0600)
if err != nil {
t.Fatalf("err: %s", err)
}
m := new(Meta)
to := make(map[string]backend.UnparsedVariableValue)
diags := m.addVarsFromFile(target, tofu.ValueFromAutoFile, to)
if tc.errors != diags.HasErrors() {
t.Log(diags.Err())
t.Errorf("Expected: %v, got %v", tc.errors, diags.HasErrors())
}
})
}
}