Skip to content

Commit 62c620e

Browse files
committed
use tokio OnceCell for async_db in testing
1 parent f99f316 commit 62c620e

File tree

2 files changed

+16
-25
lines changed

2 files changed

+16
-25
lines changed

src/test/mod.rs

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ pub(crate) fn assert_redirect_cached(
261261
pub(crate) struct TestEnvironment {
262262
build_queue: OnceCell<Arc<BuildQueue>>,
263263
config: OnceCell<Arc<Config>>,
264-
db: OnceCell<TestDatabase>,
264+
db: tokio::sync::OnceCell<TestDatabase>,
265265
storage: OnceCell<Arc<Storage>>,
266266
async_storage: OnceCell<Arc<AsyncStorage>>,
267267
cdn: OnceCell<Arc<CdnBackend>>,
@@ -296,7 +296,7 @@ impl TestEnvironment {
296296
Self {
297297
build_queue: OnceCell::new(),
298298
config: OnceCell::new(),
299-
db: OnceCell::new(),
299+
db: tokio::sync::OnceCell::new(),
300300
storage: OnceCell::new(),
301301
async_storage: OnceCell::new(),
302302
cdn: OnceCell::new(),
@@ -479,31 +479,22 @@ impl TestEnvironment {
479479
}
480480

481481
pub(crate) fn db(&self) -> &TestDatabase {
482-
self.db.get_or_init(|| {
483-
TestDatabase::new(&self.config(), &self.runtime(), self.instance_metrics())
484-
.expect("failed to initialize the db")
485-
})
482+
self.runtime().block_on(self.async_db())
486483
}
487484

488485
pub(crate) async fn async_db(&self) -> &TestDatabase {
489-
let config = self.config().clone();
490-
let runtime = self.runtime().clone();
491-
let instance_metrics = self.instance_metrics().clone();
492-
if self.db.get().is_none() {
493-
self.db
494-
.try_insert(
495-
self.runtime()
496-
.spawn_blocking(move || {
497-
TestDatabase::new(&config, &runtime, instance_metrics)
498-
.expect("failed to initialize the db")
499-
})
500-
.await
501-
.unwrap(),
502-
)
503-
.unwrap()
504-
} else {
505-
self.db.get().unwrap()
506-
}
486+
self.db
487+
.get_or_init(|| async {
488+
let config = self.config();
489+
let runtime = self.runtime();
490+
let instance_metrics = self.instance_metrics();
491+
self.runtime()
492+
.spawn_blocking(move || TestDatabase::new(&config, &runtime, instance_metrics))
493+
.await
494+
.unwrap()
495+
.expect("failed to initialize the db")
496+
})
497+
.await
507498
}
508499

509500
pub(crate) fn override_frontend(&self, init: impl FnOnce(&mut TestFrontend)) -> &TestFrontend {

src/web/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,7 @@ mod test {
10081008
wrapper(|env| {
10091009
release("0.1.0", env);
10101010
let metadata = env.runtime().block_on(async move {
1011-
let mut conn = env.db().async_conn().await;
1011+
let mut conn = env.async_db().await.async_conn().await;
10121012
MetaData::from_crate(&mut conn, "foo", "0.1.0", "latest").await
10131013
});
10141014
assert_eq!(

0 commit comments

Comments
 (0)