From 863963e7a6af7a1125c45df523c62d1d92db52e0 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Tue, 31 Aug 2021 17:33:26 -0400 Subject: [PATCH] de-linting --- internal/addrs/resource.go | 4 -- internal/backend/remote/backend.go | 18 +-------- internal/backend/remote/backend_apply_test.go | 2 +- internal/command/apply.go | 3 +- internal/command/apply_test.go | 2 + internal/command/format/diff.go | 4 +- internal/command/jsonplan/values.go | 25 ------------ internal/command/login.go | 8 +--- internal/command/meta.go | 39 ------------------- internal/command/meta_backend.go | 3 +- internal/command/refresh.go | 3 +- internal/command/state_meta.go | 2 +- internal/command/state_mv_test.go | 6 --- internal/command/views/add.go | 4 +- internal/command/views/json/output_test.go | 3 ++ internal/command/views/output.go | 4 -- internal/communicator/ssh/communicator.go | 3 +- internal/configs/provider_requirements.go | 3 +- internal/dag/marshal.go | 4 +- internal/terraform/context_plan.go | 1 + internal/terraform/graph_test.go | 14 ------- internal/terraform/resource_provider.go | 16 -------- .../terraform/resource_provider_mock_test.go | 27 ------------- tools/protobuf-compile/protobuf-compile.go | 4 +- 24 files changed, 24 insertions(+), 178 deletions(-) delete mode 100644 internal/terraform/resource_provider.go diff --git a/internal/addrs/resource.go b/internal/addrs/resource.go index a26f941c9..2c69d2f70 100644 --- a/internal/addrs/resource.go +++ b/internal/addrs/resource.go @@ -194,14 +194,10 @@ func (r AbsResource) absMoveableSigil() { // AbsResource is moveable } -type absResourceKey string - func (r AbsResource) UniqueKey() UniqueKey { return absResourceInstanceKey(r.String()) } -func (rk absResourceKey) uniqueKeySigil() {} - // AbsResourceInstance is an absolute address for a resource instance under a // given module path. type AbsResourceInstance struct { diff --git a/internal/backend/remote/backend.go b/internal/backend/remote/backend.go index 5e1187239..b4aa115a7 100644 --- a/internal/backend/remote/backend.go +++ b/internal/backend/remote/backend.go @@ -888,7 +888,7 @@ func (b *Remote) VerifyWorkspaceTerraformVersion(workspaceName string) tfdiags.D // If the workspace has remote operations disabled, the remote Terraform // version is effectively meaningless, so we'll skip version verification. - if workspace.Operations == false { + if !workspace.Operations { return nil } @@ -963,22 +963,6 @@ func (b *Remote) IsLocalOperations() bool { return b.forceLocal } -// Colorize returns the Colorize structure that can be used for colorizing -// output. This is guaranteed to always return a non-nil value and so useful -// as a helper to wrap any potentially colored strings. -// -// TODO SvH: Rename this back to Colorize as soon as we can pass -no-color. -func (b *Remote) cliColorize() *colorstring.Colorize { - if b.CLIColor != nil { - return b.CLIColor - } - - return &colorstring.Colorize{ - Colors: colorstring.DefaultColors, - Disable: true, - } -} - func generalError(msg string, err error) error { var diags tfdiags.Diagnostics diff --git a/internal/backend/remote/backend_apply_test.go b/internal/backend/remote/backend_apply_test.go index 8ba2aa271..d54914559 100644 --- a/internal/backend/remote/backend_apply_test.go +++ b/internal/backend/remote/backend_apply_test.go @@ -1594,7 +1594,7 @@ func TestRemote_applyVersionCheck(t *testing.T) { } // RUN: prepare the apply operation and run it - op, configCleanup, done := testOperationApply(t, "./testdata/apply") + op, configCleanup, _ := testOperationApply(t, "./testdata/apply") defer configCleanup() streams, done := terminal.StreamsForTesting(t) diff --git a/internal/command/apply.go b/internal/command/apply.go index d3fd56066..9d481c06b 100644 --- a/internal/command/apply.go +++ b/internal/command/apply.go @@ -45,8 +45,7 @@ func (c *ApplyCommand) Run(rawArgs []string) int { // Instantiate the view, even if there are flag errors, so that we render // diagnostics according to the desired view - var view views.Apply - view = views.NewApply(args.ViewType, c.Destroy, c.View) + view := views.NewApply(args.ViewType, c.Destroy, c.View) if diags.HasErrors() { view.Diagnostics(diags) diff --git a/internal/command/apply_test.go b/internal/command/apply_test.go index c5cc6400f..750c6b6bf 100644 --- a/internal/command/apply_test.go +++ b/internal/command/apply_test.go @@ -1779,6 +1779,7 @@ func TestApply_terraformEnvNonDefault(t *testing.T) { }, } if code := newCmd.Run([]string{"test"}); code != 0 { + t.Fatal("error creating workspace") } } @@ -1792,6 +1793,7 @@ func TestApply_terraformEnvNonDefault(t *testing.T) { }, } if code := selCmd.Run(args); code != 0 { + t.Fatal("error switching workspace") } } diff --git a/internal/command/format/diff.go b/internal/command/format/diff.go index 258c979a5..982b95980 100644 --- a/internal/command/format/diff.go +++ b/internal/command/format/diff.go @@ -70,7 +70,7 @@ func ResourceChange( buf.WriteString(color.Color(fmt.Sprintf("[bold] # %s[reset] will be [bold][red]destroyed", dispAddr))) if change.DeposedKey != states.NotDeposed { // Some extra context about this unusual situation. - buf.WriteString(color.Color(fmt.Sprint("\n # (left over from a partially-failed replacement of this instance)"))) + buf.WriteString(color.Color("\n # (left over from a partially-failed replacement of this instance)")) } default: // should never happen, since the above is exhaustive @@ -755,8 +755,6 @@ func (p *blockBodyDiffPrinter) writeNestedAttrDiff( p.buf.WriteString(" -> (known after apply)") } } - - return } func (p *blockBodyDiffPrinter) writeNestedBlockDiffs(name string, blockS *configschema.NestedBlock, old, new cty.Value, blankBefore bool, indent int, path cty.Path) int { diff --git a/internal/command/jsonplan/values.go b/internal/command/jsonplan/values.go index d79703215..5716aa67e 100644 --- a/internal/command/jsonplan/values.go +++ b/internal/command/jsonplan/values.go @@ -274,28 +274,3 @@ func marshalPlanModules( return ret, nil } - -// marshalSensitiveValues returns a map of sensitive attributes, with the value -// set to true. It returns nil if the value is nil or if there are no sensitive -// vals. -func marshalSensitiveValues(value cty.Value) map[string]bool { - if value.RawEquals(cty.NilVal) || value.IsNull() { - return nil - } - - ret := make(map[string]bool) - - it := value.ElementIterator() - for it.Next() { - k, v := it.Element() - s := jsonstate.SensitiveAsBool(v) - if !s.RawEquals(cty.False) { - ret[k.AsString()] = true - } - } - - if len(ret) == 0 { - return nil - } - return ret -} diff --git a/internal/command/login.go b/internal/command/login.go index 7233ffd09..4ede60ddb 100644 --- a/internal/command/login.go +++ b/internal/command/login.go @@ -311,13 +311,9 @@ func (c *LoginCommand) outputDefaultTFELoginSuccess(dispHostname string) { } func (c *LoginCommand) outputDefaultTFCLoginSuccess() { - c.Ui.Output( - fmt.Sprintf( - c.Colorize().Color(strings.TrimSpace(` + c.Ui.Output(c.Colorize().Color(strings.TrimSpace(` [green][bold]Success![reset] [bold]Logged in to Terraform Cloud[reset] -`)), - ) + "\n", - ) +` + "\n"))) } func (c *LoginCommand) logMOTDError(err error) { diff --git a/internal/command/meta.go b/internal/command/meta.go index 70d317779..072cfad41 100644 --- a/internal/command/meta.go +++ b/internal/command/meta.go @@ -15,8 +15,6 @@ import ( "time" plugin "github.com/hashicorp/go-plugin" - "github.com/hashicorp/hcl/v2" - "github.com/hashicorp/hcl/v2/hclsyntax" "github.com/hashicorp/terraform-svchost/disco" "github.com/hashicorp/terraform/internal/addrs" "github.com/hashicorp/terraform/internal/backend" @@ -554,43 +552,6 @@ func (m *Meta) extendedFlagSet(n string) *flag.FlagSet { return f } -// parseTargetFlags must be called for any commands supporting -target -// arguments. This method attempts to parse each -target flag into an -// addrs.Target, storing in the Meta.targets slice. -// -// If any flags cannot be parsed, we rewrap the first error diagnostic with a -// custom title to clarify the source of the error. The normal approach of -// directly returning the diags from HCL or the addrs package results in -// confusing incorrect "source" results when presented. -func (m *Meta) parseTargetFlags() tfdiags.Diagnostics { - var diags tfdiags.Diagnostics - m.targets = nil - for _, tf := range m.targetFlags { - traversal, syntaxDiags := hclsyntax.ParseTraversalAbs([]byte(tf), "", hcl.Pos{Line: 1, Column: 1}) - if syntaxDiags.HasErrors() { - diags = diags.Append(tfdiags.Sourceless( - tfdiags.Error, - fmt.Sprintf("Invalid target %q", tf), - syntaxDiags[0].Detail, - )) - continue - } - - target, targetDiags := addrs.ParseTarget(traversal) - if targetDiags.HasErrors() { - diags = diags.Append(tfdiags.Sourceless( - tfdiags.Error, - fmt.Sprintf("Invalid target %q", tf), - targetDiags[0].Description().Detail, - )) - continue - } - - m.targets = append(m.targets, target.Subject) - } - return diags -} - // process will process any -no-color entries out of the arguments. This // will potentially modify the args in-place. It will return the resulting // slice, and update the Meta and Ui. diff --git a/internal/command/meta_backend.go b/internal/command/meta_backend.go index ab7375107..71ebfbe26 100644 --- a/internal/command/meta_backend.go +++ b/internal/command/meta_backend.go @@ -12,7 +12,6 @@ import ( "strconv" "strings" - "github.com/hashicorp/errwrap" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/terraform/internal/backend" @@ -244,7 +243,7 @@ func (m *Meta) BackendForPlan(settings plans.Backend) (backend.Enhanced, tfdiags schema := b.ConfigSchema() configVal, err := settings.Config.Decode(schema.ImpliedType()) if err != nil { - diags = diags.Append(errwrap.Wrapf("saved backend configuration is invalid: {{err}}", err)) + diags = diags.Append(fmt.Errorf("saved backend configuration is invalid: %w", err)) return nil, diags } diff --git a/internal/command/refresh.go b/internal/command/refresh.go index 75cfc3458..1bb5d3933 100644 --- a/internal/command/refresh.go +++ b/internal/command/refresh.go @@ -26,8 +26,7 @@ func (c *RefreshCommand) Run(rawArgs []string) int { // Instantiate the view, even if there are flag errors, so that we render // diagnostics according to the desired view - var view views.Refresh - view = views.NewRefresh(args.ViewType, c.View) + view := views.NewRefresh(args.ViewType, c.View) if diags.HasErrors() { view.Diagnostics(diags) diff --git a/internal/command/state_meta.go b/internal/command/state_meta.go index 7fd7ce1bf..fa04245a6 100644 --- a/internal/command/state_meta.go +++ b/internal/command/state_meta.go @@ -121,7 +121,7 @@ func (c *StateMeta) lookupResourceInstanceAddr(state *states.State, allowMissing } } - if found == false && !allowMissing { + if !found && !allowMissing { diags = diags.Append(tfdiags.Sourceless( tfdiags.Error, "Unknown module", diff --git a/internal/command/state_mv_test.go b/internal/command/state_mv_test.go index f9beefd1d..1106879f4 100644 --- a/internal/command/state_mv_test.go +++ b/internal/command/state_mv_test.go @@ -9,17 +9,11 @@ import ( "github.com/google/go-cmp/cmp" "github.com/mitchellh/cli" - "github.com/mitchellh/colorstring" "github.com/hashicorp/terraform/internal/addrs" "github.com/hashicorp/terraform/internal/states" ) -var disabledColorize = &colorstring.Colorize{ - Colors: colorstring.DefaultColors, - Disable: true, -} - func TestStateMv(t *testing.T) { state := states.BuildState(func(s *states.SyncState) { s.SetResourceInstanceCurrent( diff --git a/internal/command/views/add.go b/internal/command/views/add.go index 233ae7f6e..5330bf35c 100644 --- a/internal/command/views/add.go +++ b/internal/command/views/add.go @@ -256,7 +256,7 @@ func (v *addHuman) writeConfigNestedBlock(buf *strings.Builder, name string, sch } func (v *addHuman) writeConfigNestedTypeAttribute(buf *strings.Builder, name string, schema *configschema.Attribute, indent int) error { - if schema.Required == false && v.optional == false { + if !schema.Required && !v.optional { return nil } @@ -521,7 +521,6 @@ func writeAttrTypeConstraint(buf *strings.Builder, schema *configschema.Attribut } else { buf.WriteString(fmt.Sprintf("%s\n", schema.Type.FriendlyName())) } - return } func writeBlockTypeConstraint(buf *strings.Builder, schema *configschema.NestedBlock) { @@ -530,7 +529,6 @@ func writeBlockTypeConstraint(buf *strings.Builder, schema *configschema.NestedB } else { buf.WriteString(" # OPTIONAL block\n") } - return } // copied from command/format/diff diff --git a/internal/command/views/json/output_test.go b/internal/command/views/json/output_test.go index f2c220f86..e3e9495b8 100644 --- a/internal/command/views/json/output_test.go +++ b/internal/command/views/json/output_test.go @@ -74,6 +74,9 @@ func TestOutputsFromMap(t *testing.T) { func TestOutputsFromChanges(t *testing.T) { root := addrs.RootModuleInstance num, err := plans.NewDynamicValue(cty.NumberIntVal(1234), cty.Number) + if err != nil { + t.Fatalf("unexpected error creating dynamic value: %v", err) + } str, err := plans.NewDynamicValue(cty.StringVal("1234"), cty.String) if err != nil { t.Fatalf("unexpected error creating dynamic value: %v", err) diff --git a/internal/command/views/output.go b/internal/command/views/output.go index 98686c664..6545aacee 100644 --- a/internal/command/views/output.go +++ b/internal/command/views/output.go @@ -105,10 +105,6 @@ func (v *OutputHuman) Diagnostics(diags tfdiags.Diagnostics) { // type of an output value is not important. type OutputRaw struct { view *View - - // Unit tests may set rawPrint to capture the output from the Output - // method, which would normally go to stdout directly. - rawPrint func(string) } var _ Output = (*OutputRaw)(nil) diff --git a/internal/communicator/ssh/communicator.go b/internal/communicator/ssh/communicator.go index 4de6a9040..6dff03367 100644 --- a/internal/communicator/ssh/communicator.go +++ b/internal/communicator/ssh/communicator.go @@ -19,7 +19,6 @@ import ( "time" "github.com/apparentlymart/go-shquot/shquot" - "github.com/hashicorp/errwrap" "github.com/hashicorp/terraform/internal/communicator/remote" "github.com/hashicorp/terraform/internal/provisioners" "github.com/zclconf/go-cty/cty" @@ -192,7 +191,7 @@ func (c *Communicator) Connect(o provisioners.UIOutput) (err error) { log.Printf("[DEBUG] Connection established. Handshaking for user %v", c.connInfo.User) sshConn, sshChan, req, err := ssh.NewClientConn(c.conn, hostAndPort, c.config.config) if err != nil { - err = errwrap.Wrapf(fmt.Sprintf("SSH authentication failed (%s@%s): {{err}}", c.connInfo.User, hostAndPort), err) + err = fmt.Errorf("SSH authentication failed (%s@%s): %w", c.connInfo.User, hostAndPort, err) // While in theory this should be a fatal error, some hosts may start // the ssh service before it is properly configured, or before user diff --git a/internal/configs/provider_requirements.go b/internal/configs/provider_requirements.go index 6774fbba4..c982c1a37 100644 --- a/internal/configs/provider_requirements.go +++ b/internal/configs/provider_requirements.go @@ -86,6 +86,7 @@ func decodeRequiredProvidersBlock(block *hcl.Block) (*RequiredProviders, hcl.Dia continue } + LOOP: for _, kv := range kvs { key, keyDiags := kv.Key.Value(nil) if keyDiags.HasErrors() { @@ -213,7 +214,7 @@ func decodeRequiredProvidersBlock(block *hcl.Block) (*RequiredProviders, hcl.Dia Detail: `required_providers objects can only contain "version", "source" and "configuration_aliases" attributes. To configure a provider, use a "provider" block.`, Subject: kv.Key.Range().Ptr(), }) - break + break LOOP } } diff --git a/internal/dag/marshal.go b/internal/dag/marshal.go index 0ba52152f..a78032ad3 100644 --- a/internal/dag/marshal.go +++ b/internal/dag/marshal.go @@ -160,7 +160,9 @@ func marshalVertexID(v Vertex) string { case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: return strconv.Itoa(int(val.Pointer())) case reflect.Interface: - return strconv.Itoa(int(val.InterfaceData()[1])) + // A vertex shouldn't contain another layer of interface, but handle + // this just in case. + return fmt.Sprintf("%#v", val.Interface()) } if v, ok := v.(Hashable); ok { diff --git a/internal/terraform/context_plan.go b/internal/terraform/context_plan.go index be5d30e61..7499e57d8 100644 --- a/internal/terraform/context_plan.go +++ b/internal/terraform/context_plan.go @@ -306,6 +306,7 @@ func (c *Context) prePlanFindAndApplyMoves(config *configs.Config, prevRunState break } } + //lint:ignore SA9003 TODO if !matchesTarget { // TODO: Return an error stating that a targeted plan is // only valid if it includes this address that was moved. diff --git a/internal/terraform/graph_test.go b/internal/terraform/graph_test.go index 6676aa846..5e163a021 100644 --- a/internal/terraform/graph_test.go +++ b/internal/terraform/graph_test.go @@ -6,20 +6,6 @@ import ( "github.com/hashicorp/terraform/internal/dag" ) -// testGraphContains is an assertion helper that tests that a node is -// contained in the graph. -func testGraphContains(t *testing.T, g *Graph, name string) { - for _, v := range g.Vertices() { - if dag.VertexName(v) == name { - return - } - } - - t.Fatalf( - "Expected %q in:\n\n%s", - name, g.String()) -} - // testGraphnotContains is an assertion helper that tests that a node is // NOT contained in the graph. func testGraphNotContains(t *testing.T, g *Graph, name string) { diff --git a/internal/terraform/resource_provider.go b/internal/terraform/resource_provider.go deleted file mode 100644 index d4bdfcb68..000000000 --- a/internal/terraform/resource_provider.go +++ /dev/null @@ -1,16 +0,0 @@ -package terraform - -const errPluginInit = ` -Plugins are external binaries that Terraform uses to access and manipulate -resources. The configuration provided requires plugins which can't be located, -don't satisfy the version constraints, or are otherwise incompatible. - -Terraform automatically discovers provider requirements from your -configuration, including providers used in child modules. To see the -requirements and constraints, run "terraform providers". - -%s - -Plugin reinitialization required. Please address the above error(s) and run -"terraform init". -` diff --git a/internal/terraform/resource_provider_mock_test.go b/internal/terraform/resource_provider_mock_test.go index a077ba09d..6592b0a96 100644 --- a/internal/terraform/resource_provider_mock_test.go +++ b/internal/terraform/resource_provider_mock_test.go @@ -46,33 +46,6 @@ func mockProviderWithResourceTypeSchema(name string, schema *configschema.Block) } } -// mockProviderWithProviderSchema is a test helper to create a mock provider -// from an existing ProviderSchema. -func mockProviderWithProviderSchema(providerSchema ProviderSchema) *MockProvider { - p := &MockProvider{ - GetProviderSchemaResponse: &providers.GetProviderSchemaResponse{ - Provider: providers.Schema{ - Block: providerSchema.Provider, - }, - ResourceTypes: map[string]providers.Schema{}, - DataSources: map[string]providers.Schema{}, - }, - } - - for name, schema := range providerSchema.ResourceTypes { - p.GetProviderSchemaResponse.ResourceTypes[name] = providers.Schema{ - Block: schema, - Version: int64(providerSchema.ResourceTypeSchemaVersions[name]), - } - } - - for name, schema := range providerSchema.DataSources { - p.GetProviderSchemaResponse.DataSources[name] = providers.Schema{Block: schema} - } - - return p -} - // getProviderSchemaResponseFromProviderSchema is a test helper to convert a // ProviderSchema to a GetProviderSchemaResponse for use when building a mock provider. func getProviderSchemaResponseFromProviderSchema(providerSchema *ProviderSchema) *providers.GetProviderSchemaResponse { diff --git a/tools/protobuf-compile/protobuf-compile.go b/tools/protobuf-compile/protobuf-compile.go index 19cca308a..b1efe0789 100644 --- a/tools/protobuf-compile/protobuf-compile.go +++ b/tools/protobuf-compile/protobuf-compile.go @@ -80,7 +80,7 @@ func main() { if err != nil { log.Fatal(err) } - protocGenGoGrpcExec, err := buildProtocGenGoGrpc(workDir) + _, err = buildProtocGenGoGrpc(workDir) if err != nil { log.Fatal(err) } @@ -93,7 +93,7 @@ func main() { if err != nil { log.Fatal(err) } - protocGenGoGrpcExec, err = filepath.Abs(protocGenGoExec) + protocGenGoGrpcExec, err := filepath.Abs(protocGenGoExec) if err != nil { log.Fatal(err) }