Skip to content

Commit 8212a23

Browse files
committed
Fix tests
1 parent e5d31b2 commit 8212a23

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

packages/sqlite_async/lib/src/impl/context.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,23 @@ final class ScopedWriteContext extends ScopedReadContext
139139
final (begin, commit, rollback) = _beginCommitRollback(transactionDepth);
140140
ScopedWriteContext? inner;
141141

142+
final innerContext = transactionDepth == 0
143+
? _context.interceptOutermostTransaction()
144+
: _context;
145+
142146
try {
143147
_isLocked = true;
144148

145149
await _context.execute(begin, const []);
146-
inner =
147-
ScopedWriteContext(_context, transactionDepth: transactionDepth + 1);
150+
151+
inner = ScopedWriteContext(innerContext,
152+
transactionDepth: transactionDepth + 1);
148153
final result = await callback(inner);
149-
await _context.execute(commit, const []);
154+
await innerContext.execute(commit, const []);
150155
return result;
151156
} catch (e) {
152157
try {
153-
await _context.execute(rollback, const []);
158+
await innerContext.execute(rollback, const []);
154159
} catch (e) {
155160
// In rare cases, a ROLLBACK may fail.
156161
// Safe to ignore.

packages/sqlite_async/lib/src/native/database/native_sqlite_connection_impl.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class SqliteConnectionImpl
138138
return _connectionMutex.lock(() async {
139139
final ctx = _context();
140140
try {
141-
return ScopedReadContext.assumeReadLock(ctx, callback);
141+
return await ScopedReadContext.assumeReadLock(ctx, callback);
142142
} finally {
143143
await ctx.close();
144144
}
@@ -161,7 +161,7 @@ class SqliteConnectionImpl
161161
return await _writeMutex.lock(() async {
162162
final ctx = _context();
163163
try {
164-
return ScopedWriteContext.assumeWriteLock(ctx, callback);
164+
return await ScopedWriteContext.assumeWriteLock(ctx, callback);
165165
} finally {
166166
await ctx.close();
167167
}

packages/sqlite_async/lib/src/web/database.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class WebDatabase
9494
Future<T> readLock<T>(Future<T> Function(SqliteReadContext tx) callback,
9595
{Duration? lockTimeout, String? debugContext}) async {
9696
if (_mutex case var mutex?) {
97-
return await mutex.lock(timeout: lockTimeout, () async {
97+
return await mutex.lock(timeout: lockTimeout, () {
9898
return ScopedReadContext.assumeReadLock(
9999
_UnscopedContext(this), callback);
100100
});
@@ -104,7 +104,7 @@ class WebDatabase
104104
CustomDatabaseMessage(CustomDatabaseMessageKind.requestSharedLock));
105105

106106
try {
107-
return ScopedReadContext.assumeReadLock(
107+
return await ScopedReadContext.assumeReadLock(
108108
_UnscopedContext(this), callback);
109109
} finally {
110110
await _database.customRequest(
@@ -124,7 +124,11 @@ class WebDatabase
124124
bool? flush}) {
125125
return writeLock((writeContext) {
126126
return ScopedWriteContext.assumeWriteLock(
127-
_UnscopedContext(this), callback);
127+
_UnscopedContext(this),
128+
(ctx) async {
129+
return await ctx.writeTransaction(callback);
130+
},
131+
);
128132
},
129133
debugContext: 'writeTransaction()',
130134
lockTimeout: lockTimeout,

packages/sqlite_async/test/basic_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void main() {
122122
['Test Data']);
123123
expect(rs.rows[0], equals(['Test Data']));
124124
});
125-
expect(await savedTx!.getAutoCommit(), equals(true));
125+
expect(await db.getAutoCommit(), equals(true));
126126
expect(savedTx!.closed, equals(true));
127127
});
128128

0 commit comments

Comments
 (0)