Skip to content

fix: ExpectBegin TxOptions check uses && instead of ||#351

Open
c-tonneslan wants to merge 1 commit into
DATA-DOG:masterfrom
c-tonneslan:fix/begin-options-condition
Open

fix: ExpectBegin TxOptions check uses && instead of ||#351
c-tonneslan wants to merge 1 commit into
DATA-DOG:masterfrom
c-tonneslan:fix/begin-options-condition

Conversation

@c-tonneslan

Copy link
Copy Markdown

Closes #342.

The Begin path in sqlmock.go:256 requires both `Isolation` AND `ReadOnly` to differ before the "options do not match" error fires, so a single-field mismatch silently passes:

```go
if expected.txOpts != nil &&
expected.txOpts.Isolation != opts.Isolation &&
expected.txOpts.ReadOnly != opts.ReadOnly {
```

The existing `TestContextBeginWithTxOptions` actually depended on that bug (Isolation matched, ReadOnly didn't, expectation was still considered fulfilled). Switched the conjunction to a disjunction so either-field mismatch is caught.

```
mock.ExpectBegin().WithTxOptions(sql.TxOptions{
Isolation: sql.LevelReadCommitted,
ReadOnly: true,
})
db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelReadCommitted, ReadOnly: false})
// before this PR: succeeds (wrong)
// after this PR: errors with "expected transaction options do not match"
```

Fixed the existing test to pass matching options and added two new mismatch tests (one for ReadOnly-only differs, one for Isolation-only differs). All pass on this branch, the new ones fail on master.

…OG#342)

The Begin path required both Isolation AND ReadOnly to differ before
the "options do not match" error fired, so any single-field mismatch
silently passed. The existing TestContextBeginWithTxOptions even
depended on that buggy behavior (Isolation matched, ReadOnly didn't,
expectation still considered fulfilled).

Switched the conjunction to a disjunction and fixed the existing test
to use matching options. Added two new mismatch tests (one for
Isolation-only differs, one for ReadOnly-only differs) that fail on
master and pass with the fix.

Signed-off-by: Charlie Tonneslan <cst0520@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Wrong condition to check Begin options

1 participant