package db import ( "errors" "testing" ) func TestIsPoisonedTxErr(t *testing.T) { cases := []struct { name string err error want bool }{ {"nil", nil, false}, {"unrelated", errors.New("disk full"), false}, {"bunny timeout", errors.New("Remote SQlite failure: `2:0:Transaction timed-out`"), true}, {"no active tx", errors.New("Remote SQlite failure: `3:1:cannot commit - no transaction is active`"), true}, {"init state", errors.New("error code = 2: Error executing statement: connection has reached an invalid state, started with Init"), true}, {"just invalid state", errors.New("generic failure: invalid state, started with Query"), true}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { if got := IsPoisonedTxErr(c.err); got != c.want { t.Errorf("IsPoisonedTxErr(%v) = %v, want %v", c.err, got, c.want) } }) } }