test(idle): cover Close error propagation and idempotency
- commit
- 9b5cbc8a46d75d945ec4bc53c6fe2a174ce7471d
- author
- brice · · 2026-10-14 09:57 UTC
- parent
- cf96431
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
1 file · +6 -4
M internal/infrastructure/idle/portal_inhibitor_test.go +6 -4
| @@ -85,11 +85,13 @@ func TestPortalInhibitorRollsBackFailedInhibit(t *testing.T) { | |||
| 85 | 85 | ||
| 86 | 86 | func TestPortalInhibitorClose(t *testing.T) { | |
| 87 | 87 | tests := []struct { | |
| 88 | - | name string | |
| 89 | - | inhibit bool | |
| 88 | + | name string | |
| 89 | + | inhibit bool | |
| 90 | + | closeErr error | |
| 90 | 91 | }{ | |
| 91 | 92 | {name: "releases active request", inhibit: true}, | |
| 92 | 93 | {name: "without active request"}, | |
| 94 | + | {name: "returns connection close error once", closeErr: errPortal}, | |
| 93 | 95 | } | |
| 94 | 96 | for _, tt := range tests { | |
| 95 | 97 | t.Run(tt.name, func(t *testing.T) { | |
| @@ -99,9 +101,9 @@ func TestPortalInhibitorClose(t *testing.T) { | |||
| 99 | 101 | portal.EXPECT().CloseRequest(testHandle).Return(nil).Once() | |
| 100 | 102 | require.NoError(t, p.Inhibit(context.Background(), "video playing")) | |
| 101 | 103 | } | |
| 102 | - | portal.EXPECT().Close().Return(nil).Once() | |
| 104 | + | portal.EXPECT().Close().Return(tt.closeErr).Once() | |
| 103 | 105 | ||
| 104 | - | require.NoError(t, p.Close()) | |
| 106 | + | require.ErrorIs(t, p.Close(), tt.closeErr) | |
| 105 | 107 | require.False(t, p.IsInhibited()) | |
| 106 | 108 | // Close is idempotent. | |
| 107 | 109 | require.NoError(t, p.Close()) | |
| @@ -85,11 +85,13 @@ func TestPortalInhibitorRollsBackFailedInhibit(t *testing.T) { | |||||
| 85 | 85 | ||||
| 86 | func TestPortalInhibitorClose(t *testing.T) { | 86 | func TestPortalInhibitorClose(t *testing.T) { | ||
| 87 | tests := []struct { | 87 | tests := []struct { | ||
| 88 | - | name string | 88 | + | name string |
| 89 | - | inhibit bool | 89 | + | inhibit bool |
| 90 | + | closeErr error | |||
| 90 | }{ | 91 | }{ | ||
| 91 | {name: "releases active request", inhibit: true}, | 92 | {name: "releases active request", inhibit: true}, | ||
| 92 | {name: "without active request"}, | 93 | {name: "without active request"}, | ||
| 94 | + | {name: "returns connection close error once", closeErr: errPortal}, | |||
| 93 | } | 95 | } | ||
| 94 | for _, tt := range tests { | 96 | for _, tt := range tests { | ||
| 95 | t.Run(tt.name, func(t *testing.T) { | 97 | t.Run(tt.name, func(t *testing.T) { | ||
| @@ -99,9 +101,9 @@ func TestPortalInhibitorClose(t *testing.T) { | |||||
| 99 | portal.EXPECT().CloseRequest(testHandle).Return(nil).Once() | 101 | portal.EXPECT().CloseRequest(testHandle).Return(nil).Once() | ||
| 100 | require.NoError(t, p.Inhibit(context.Background(), "video playing")) | 102 | require.NoError(t, p.Inhibit(context.Background(), "video playing")) | ||
| 101 | } | 103 | } | ||
| 102 | - | portal.EXPECT().Close().Return(nil).Once() | 104 | + | portal.EXPECT().Close().Return(tt.closeErr).Once() |
| 103 | 105 | ||||
| 104 | - | require.NoError(t, p.Close()) | 106 | + | require.ErrorIs(t, p.Close(), tt.closeErr) |
| 105 | require.False(t, p.IsInhibited()) | 107 | require.False(t, p.IsInhibited()) | ||
| 106 | // Close is idempotent. | 108 | // Close is idempotent. | ||
| 107 | require.NoError(t, p.Close()) | 109 | require.NoError(t, p.Close()) | ||