From 2d72c90de1a761c82bebc93ffe7741e2ddc59bf0 Mon Sep 17 00:00:00 2001 From: Christian Mesh Date: Tue, 18 Jun 2024 05:49:10 -0400 Subject: [PATCH] Remove unused config parser (#1732) Signed-off-by: Christian Mesh --- internal/configs/parser_values.go | 48 ---------- internal/configs/parser_values_test.go | 118 ------------------------- 2 files changed, 166 deletions(-) delete mode 100644 internal/configs/parser_values.go delete mode 100644 internal/configs/parser_values_test.go diff --git a/internal/configs/parser_values.go b/internal/configs/parser_values.go deleted file mode 100644 index bdffc72f52..0000000000 --- a/internal/configs/parser_values.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) The OpenTofu Authors -// SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2023 HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package configs - -import ( - "github.com/hashicorp/hcl/v2" - "github.com/zclconf/go-cty/cty" -) - -// LoadValuesFile reads the file at the given path and parses it as a "values -// file", which is an HCL config file whose top-level attributes are treated -// as arbitrary key.value pairs. -// -// If the file cannot be read -- for example, if it does not exist -- then -// a nil map will be returned along with error diagnostics. Callers may wish -// to disregard the returned diagnostics in this case and instead generate -// their own error message(s) with additional context. -// -// If the returned diagnostics has errors when a non-nil map is returned -// then the map may be incomplete but should be valid enough for careful -// static analysis. -// -// This method wraps LoadHCLFile, and so it inherits the syntax selection -// behaviors documented for that method. -func (p *Parser) LoadValuesFile(path string) (map[string]cty.Value, hcl.Diagnostics) { - body, diags := p.LoadHCLFile(path) - if body == nil { - return nil, diags - } - - vals := make(map[string]cty.Value) - attrs, attrDiags := body.JustAttributes() - diags = append(diags, attrDiags...) - if attrs == nil { - return vals, diags - } - - for name, attr := range attrs { - val, valDiags := attr.Expr.Value(nil) - diags = append(diags, valDiags...) - vals[name] = val - } - - return vals, diags -} diff --git a/internal/configs/parser_values_test.go b/internal/configs/parser_values_test.go deleted file mode 100644 index a5192482a5..0000000000 --- a/internal/configs/parser_values_test.go +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright (c) The OpenTofu Authors -// SPDX-License-Identifier: MPL-2.0 -// Copyright (c) 2023 HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package configs - -import ( - "testing" - - "github.com/zclconf/go-cty/cty" -) - -func TestParserLoadValuesFile(t *testing.T) { - tests := map[string]struct { - Source string - Want map[string]cty.Value - DiagCount int - }{ - "empty.tfvars": { - "", - map[string]cty.Value{}, - 0, - }, - "empty.json": { - "{}", - map[string]cty.Value{}, - 0, - }, - "zerolen.json": { - "", - map[string]cty.Value{}, - 2, // syntax error and missing root object - }, - "one-number.tfvars": { - "foo = 1\n", - map[string]cty.Value{ - "foo": cty.NumberIntVal(1), - }, - 0, - }, - "one-number.tfvars.json": { - `{"foo": 1}`, - map[string]cty.Value{ - "foo": cty.NumberIntVal(1), - }, - 0, - }, - "two-bools.tfvars": { - "foo = true\nbar = false\n", - map[string]cty.Value{ - "foo": cty.True, - "bar": cty.False, - }, - 0, - }, - "two-bools.tfvars.json": { - `{"foo": true, "bar": false}`, - map[string]cty.Value{ - "foo": cty.True, - "bar": cty.False, - }, - 0, - }, - "invalid-syntax.tfvars": { - "foo bar baz\n", - map[string]cty.Value{}, - 2, // invalid block definition, and unexpected foo block (the latter due to parser recovery behavior) - }, - "block.tfvars": { - "foo = true\ninvalid {\n}\n", - map[string]cty.Value{ - "foo": cty.True, - }, - 1, // blocks are not allowed - }, - "variables.tfvars": { - "baz = true\nfoo = var.baz\n", - map[string]cty.Value{ - "baz": cty.True, - "foo": cty.DynamicVal, - }, - 1, // variables cannot be referenced here - }, - } - - for name, test := range tests { - t.Run(name, func(t *testing.T) { - p := testParser(map[string]string{ - name: test.Source, - }) - got, diags := p.LoadValuesFile(name) - if len(diags) != test.DiagCount { - t.Errorf("wrong number of diagnostics %d; want %d", len(diags), test.DiagCount) - for _, diag := range diags { - t.Logf("- %s", diag) - } - } - - if len(got) != len(test.Want) { - t.Errorf("wrong number of result keys %d; want %d", len(got), len(test.Want)) - } - - for name, gotVal := range got { - wantVal := test.Want[name] - if wantVal == cty.NilVal { - t.Errorf("unexpected result key %q", name) - continue - } - - if !gotVal.RawEquals(wantVal) { - t.Errorf("wrong value for %q\ngot: %#v\nwant: %#v", name, gotVal, wantVal) - continue - } - } - }) - } -}