Skip to content

Commit 6847e76

Browse files
authored
Update calls to StateMgr method to use diagnostics more conventionally (#37597)
* Update call to StateMgr method to use diagnostics more explicitly * Update calling code in remote backend tests * Update calling code in non-test code to handle diags conventionally. * Fix test failure messages from using wrong variable * Additional refactoring
1 parent ffdf9f2 commit 6847e76

File tree

11 files changed

+76
-75
lines changed

11 files changed

+76
-75
lines changed

internal/backend/local/backend.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -459,8 +459,8 @@ func (b *Local) StatePaths(name string) (stateIn, stateOut, backupOut string) {
459459
// in the same files as the "new" state snapshots.
460460
func (b *Local) PathsConflictWith(other *Local) bool {
461461
otherPaths := map[string]struct{}{}
462-
otherWorkspaces, err := other.Workspaces()
463-
if err != nil {
462+
otherWorkspaces, diags := other.Workspaces()
463+
if diags.HasErrors() {
464464
// If we can't enumerate the workspaces then we'll conservatively
465465
// assume that paths _do_ overlap, since we can't be certain.
466466
return true
@@ -470,8 +470,8 @@ func (b *Local) PathsConflictWith(other *Local) bool {
470470
otherPaths[p] = struct{}{}
471471
}
472472

473-
ourWorkspaces, err := other.Workspaces()
474-
if err != nil {
473+
ourWorkspaces, diags := other.Workspaces()
474+
if diags.HasErrors() {
475475
// If we can't enumerate the workspaces then we'll conservatively
476476
// assume that paths _do_ overlap, since we can't be certain.
477477
return true

internal/backend/local/testing.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,10 @@ func TestNewLocalNoDefault() backend.Backend {
151151

152152
func (b *TestLocalNoDefaultState) Workspaces() ([]string, tfdiags.Diagnostics) {
153153
var diags tfdiags.Diagnostics
154-
workspaces, err := b.Local.Workspaces()
155-
if err != nil {
156-
return nil, diags.Append(err)
154+
workspaces, wDiags := b.Local.Workspaces()
155+
diags = diags.Append(wDiags)
156+
if wDiags.HasErrors() {
157+
return nil, diags
157158
}
158159

159160
filtered := workspaces[:0]

internal/backend/remote-state/cos/backend_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ func TestRemoteClient(t *testing.T) {
6363
be := setupBackend(t, bucket, defaultPrefix, defaultKey, false)
6464
defer teardownBackend(t, be)
6565

66-
ss, err := be.StateMgr(backend.DefaultStateName)
67-
if err != nil {
68-
t.Fatalf("unexpected error: %s", err)
66+
ss, sDiags := be.StateMgr(backend.DefaultStateName)
67+
if sDiags.HasErrors() {
68+
t.Fatalf("unexpected error: %s", sDiags.Err())
6969
}
7070

7171
rs, ok := ss.(*remote.State)
@@ -85,9 +85,9 @@ func TestRemoteClientWithPrefix(t *testing.T) {
8585
be := setupBackend(t, bucket, prefix, defaultKey, false)
8686
defer teardownBackend(t, be)
8787

88-
ss, err := be.StateMgr(backend.DefaultStateName)
89-
if err != nil {
90-
t.Fatalf("unexpected error: %s", err)
88+
ss, sDiags := be.StateMgr(backend.DefaultStateName)
89+
if sDiags.HasErrors() {
90+
t.Fatalf("unexpected error: %s", sDiags.Err())
9191
}
9292

9393
rs, ok := ss.(*remote.State)
@@ -106,9 +106,9 @@ func TestRemoteClientWithEncryption(t *testing.T) {
106106
be := setupBackend(t, bucket, defaultPrefix, defaultKey, true)
107107
defer teardownBackend(t, be)
108108

109-
ss, err := be.StateMgr(backend.DefaultStateName)
110-
if err != nil {
111-
t.Fatalf("unexpected error: %s", err)
109+
ss, sDiags := be.StateMgr(backend.DefaultStateName)
110+
if sDiags.HasErrors() {
111+
t.Fatalf("unexpected error: %s", sDiags.Err())
112112
}
113113

114114
rs, ok := ss.(*remote.State)
@@ -127,9 +127,9 @@ func TestRemoteClientWithEndpoint(t *testing.T) {
127127
be := setupBackendWithEndpoint(t, bucket, defaultPrefix, defaultKey, false)
128128
defer teardownBackend(t, be)
129129

130-
ss, err := be.StateMgr(backend.DefaultStateName)
131-
if err != nil {
132-
t.Fatalf("unexpected error: %s", err)
130+
ss, sDiags := be.StateMgr(backend.DefaultStateName)
131+
if sDiags.HasErrors() {
132+
t.Fatalf("unexpected error: %s", sDiags.Err())
133133
}
134134

135135
rs, ok := ss.(*remote.State)

internal/backend/remote-state/gcs/backend_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ func TestAccRemoteClient(t *testing.T) {
151151
be := setupBackend(t, config)
152152
defer teardownBackend(t, be, noPrefix)
153153

154-
ss, err := be.StateMgr(backend.DefaultStateName)
155-
if err != nil {
156-
t.Fatalf("be.StateMgr(%q) = %v", backend.DefaultStateName, err)
154+
ss, sDiags := be.StateMgr(backend.DefaultStateName)
155+
if sDiags.HasErrors() {
156+
t.Fatalf("be.StateMgr(%q) = %v", backend.DefaultStateName, sDiags.Err())
157157
}
158158

159159
rs, ok := ss.(*remote.State)
@@ -177,9 +177,9 @@ func TestAccRemoteClientWithEncryption(t *testing.T) {
177177
be := setupBackend(t, config)
178178
defer teardownBackend(t, be, noPrefix)
179179

180-
ss, err := be.StateMgr(backend.DefaultStateName)
181-
if err != nil {
182-
t.Fatalf("be.StateMgr(%q) = %v", backend.DefaultStateName, err)
180+
ss, sDiags := be.StateMgr(backend.DefaultStateName)
181+
if sDiags.HasErrors() {
182+
t.Fatalf("be.StateMgr(%q) = %v", backend.DefaultStateName, sDiags.Err())
183183
}
184184

185185
rs, ok := ss.(*remote.State)

internal/backend/remote-state/kubernetes/client_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ func TestRemoteClientLocks(t *testing.T) {
4747
"secret_suffix": secretSuffix,
4848
}))
4949

50-
s1, err := b1.StateMgr(backend.DefaultStateName)
51-
if err != nil {
52-
t.Fatal(err)
50+
s1, sDiags := b1.StateMgr(backend.DefaultStateName)
51+
if sDiags.HasErrors() {
52+
t.Fatal(sDiags.Err())
5353
}
5454

55-
s2, err := b2.StateMgr(backend.DefaultStateName)
56-
if err != nil {
57-
t.Fatal(err)
55+
s2, sDiags := b2.StateMgr(backend.DefaultStateName)
56+
if sDiags.HasErrors() {
57+
t.Fatal(sDiags.Err())
5858
}
5959

6060
remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client)

internal/backend/remote-state/oss/client_test.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ func TestRemoteClientLocks(t *testing.T) {
7575
createTablestoreTable(t, b1.otsClient, tableName)
7676
defer deleteTablestoreTable(t, b1.otsClient, tableName)
7777

78-
s1, err := b1.StateMgr(backend.DefaultStateName)
79-
if err != nil {
80-
t.Fatal(err)
78+
s1, sDiags := b1.StateMgr(backend.DefaultStateName)
79+
if sDiags.HasErrors() {
80+
t.Fatal(sDiags.Err())
8181
}
8282

83-
s2, err := b2.StateMgr(backend.DefaultStateName)
84-
if err != nil {
85-
t.Fatal(err)
83+
s2, sDiags := b2.StateMgr(backend.DefaultStateName)
84+
if sDiags.HasErrors() {
85+
t.Fatal(sDiags.Err())
8686
}
8787

8888
remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client)
@@ -116,18 +116,18 @@ func TestRemoteClientLocks_multipleStates(t *testing.T) {
116116
createTablestoreTable(t, b1.otsClient, tableName)
117117
defer deleteTablestoreTable(t, b1.otsClient, tableName)
118118

119-
s1, err := b1.StateMgr("s1")
120-
if err != nil {
121-
t.Fatal(err)
119+
s1, sDiags := b1.StateMgr("s1")
120+
if sDiags.HasErrors() {
121+
t.Fatal(sDiags)
122122
}
123123
if _, err := s1.Lock(statemgr.NewLockInfo()); err != nil {
124124
t.Fatal("failed to get lock for s1:", err)
125125
}
126126

127127
// s1 is now locked, s2 should not be locked as it's a different state file
128-
s2, err := b2.StateMgr("s2")
129-
if err != nil {
130-
t.Fatal(err)
128+
s2, sDiags := b2.StateMgr("s2")
129+
if sDiags.HasErrors() {
130+
t.Fatal(sDiags)
131131
}
132132
if _, err := s2.Lock(statemgr.NewLockInfo()); err != nil {
133133
t.Fatal("failed to get lock for s2:", err)
@@ -283,9 +283,9 @@ func TestRemoteClient_stateChecksum(t *testing.T) {
283283
createTablestoreTable(t, b1.otsClient, tableName)
284284
defer deleteTablestoreTable(t, b1.otsClient, tableName)
285285

286-
s1, err := b1.StateMgr(backend.DefaultStateName)
287-
if err != nil {
288-
t.Fatal(err)
286+
s1, sDiags := b1.StateMgr(backend.DefaultStateName)
287+
if sDiags.HasErrors() {
288+
t.Fatal(sDiags.Err())
289289
}
290290
client1 := s1.(*remote.State).Client
291291

@@ -308,9 +308,9 @@ func TestRemoteClient_stateChecksum(t *testing.T) {
308308
"bucket": bucketName,
309309
"prefix": path,
310310
})).(*Backend)
311-
s2, err := b2.StateMgr(backend.DefaultStateName)
312-
if err != nil {
313-
t.Fatal(err)
311+
s2, sDiags := b2.StateMgr(backend.DefaultStateName)
312+
if sDiags.HasErrors() {
313+
t.Fatal(sDiags.Err())
314314
}
315315
client2 := s2.(*remote.State).Client
316316

@@ -347,7 +347,7 @@ func TestRemoteClient_stateChecksum(t *testing.T) {
347347
// fetching an empty state through client1 should now error out due to a
348348
// mismatched checksum.
349349
if _, diags := client1.Get(); !strings.HasPrefix(diags.Err().Error(), errBadChecksumFmt[:80]) {
350-
t.Fatalf("expected state checksum error: got %s", err)
350+
t.Fatalf("expected state checksum error: got %s", diags.Err())
351351
}
352352

353353
// put the old state in place of the new, without updating the checksum
@@ -358,7 +358,7 @@ func TestRemoteClient_stateChecksum(t *testing.T) {
358358
// fetching the wrong state through client1 should now error out due to a
359359
// mismatched checksum.
360360
if _, diags := client1.Get(); !strings.HasPrefix(diags.Err().Error(), errBadChecksumFmt[:80]) {
361-
t.Fatalf("expected state checksum error: got %s", err)
361+
t.Fatalf("expected state checksum error: got %s", diags.Err())
362362
}
363363

364364
// update the state with the correct one after we Get again

internal/backend/remote-state/s3/client_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,14 @@ func TestRemoteClientLocks(t *testing.T) {
8484
createDynamoDBTable(ctx, t, b1.dynClient, bucketName)
8585
defer deleteDynamoDBTable(ctx, t, b1.dynClient, bucketName)
8686

87-
s1, err := b1.StateMgr(backend.DefaultStateName)
88-
if err != nil {
89-
t.Fatal(err)
87+
s1, sDiags := b1.StateMgr(backend.DefaultStateName)
88+
if sDiags.HasErrors() {
89+
t.Fatal(sDiags.Err())
9090
}
9191

92-
s2, err := b2.StateMgr(backend.DefaultStateName)
93-
if err != nil {
94-
t.Fatal(err)
92+
s2, sDiags := b2.StateMgr(backend.DefaultStateName)
93+
if sDiags.HasErrors() {
94+
t.Fatal(sDiags.Err())
9595
}
9696

9797
remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client)

internal/command/meta_backend.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,9 +1178,9 @@ func (m *Meta) backend_C_r_s(c *configs.Backend, cHash int, sMgr *clistate.Local
11781178

11791179
var localStates []statemgr.Full
11801180
for _, workspace := range workspaces {
1181-
localState, err := localB.StateMgr(workspace)
1182-
if err != nil {
1183-
diags = diags.Append(fmt.Errorf(errBackendLocalRead, err))
1181+
localState, sDiags := localB.StateMgr(workspace)
1182+
if sDiags.HasErrors() {
1183+
diags = diags.Append(fmt.Errorf(errBackendLocalRead, sDiags.Err()))
11841184
return nil, diags
11851185
}
11861186
if err := localState.RefreshState(); err != nil {

internal/command/meta_backend_migrate.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,10 @@ func (m *Meta) backendMigrateState_S_TFC(opts *backendMigrateOpts, sourceWorkspa
696696
if sourceWorkspaces[i] == backend.DefaultStateName {
697697
// For the default workspace we want to look to see if there is any state
698698
// before we ask for a workspace name to migrate the default workspace into.
699-
sourceState, err := opts.Source.StateMgr(backend.DefaultStateName)
700-
if err != nil {
699+
sourceState, sDiags := opts.Source.StateMgr(backend.DefaultStateName)
700+
if sDiags.HasErrors() {
701701
return fmt.Errorf(strings.TrimSpace(
702-
errMigrateSingleLoadDefault), opts.SourceType, err)
702+
errMigrateSingleLoadDefault), opts.SourceType, sDiags.Err())
703703
}
704704
// RefreshState is what actually pulls the state to be evaluated.
705705
if err := sourceState.RefreshState(); err != nil {

internal/moduletest/graph/eval_context.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -631,9 +631,9 @@ func (ec *EvalContext) LoadState(run *configs.TestRun) (*states.State, error) {
631631
// Then we'll load the state from the backend instead of just using
632632
// whatever was in the state.
633633

634-
stmgr, err := current.Backend.StateMgr(backend.DefaultStateName)
635-
if err != nil {
636-
return nil, err.Err()
634+
stmgr, sDiags := current.Backend.StateMgr(backend.DefaultStateName)
635+
if sDiags.HasErrors() {
636+
return nil, sDiags.Err()
637637
}
638638

639639
if err := stmgr.RefreshState(); err != nil {

0 commit comments

Comments
 (0)