MCPcopy Index your code
hub / github.com/coder/coder / TestInTx_CapturesRollbackError

Function TestInTx_CapturesRollbackError

coderd/database/db_test.go:87–112  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

85}
86
87func TestInTx_CapturesRollbackError(t *testing.T) {
88 t.Parallel()
89
90 sqlDB, mock, err := sqlmock.New()
91 require.NoError(t, err)
92 t.Cleanup(func() { _ = sqlDB.Close() })
93
94 db := database.New(sqlDB)
95
96 callbackErr := xerrors.New("callback failed")
97 rollbackErr := xerrors.New("rollback failed")
98
99 mock.ExpectBegin()
100 mock.ExpectRollback().WillReturnError(rollbackErr)
101
102 err = db.InTx(func(_ database.Store) error {
103 return callbackErr
104 }, nil)
105 require.EqualError(t, err, "defer (rollback failed): execute transaction: callback failed")
106 require.ErrorIs(t, err, callbackErr,
107 "returned error should still match the callback error when rollback fails")
108 require.NotErrorIs(t, err, rollbackErr,
109 "rollback failure should be reported in the message, not wrapped in the error chain")
110
111 require.NoError(t, mock.ExpectationsWereMet())
112}
113
114func testSQLDB(t testing.TB) *sql.DB {
115 t.Helper()

Callers

nothing calls this directly

Calls 5

NewFunction · 0.92
NewMethod · 0.65
CleanupMethod · 0.65
CloseMethod · 0.65
InTxMethod · 0.65

Tested by

no test coverage detected