Skip to content

Commit a0c59b0

Browse files
committed
fixup(runner test): add semaphore to prevent concurrent tests
1 parent 41cab4a commit a0c59b0

1 file changed

Lines changed: 20 additions & 7 deletions

File tree

src/run/runner/tests.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,24 @@ fi
304304
mod memory {
305305
use super::*;
306306

307-
async fn get_memory_executor() -> MemoryExecutor {
308-
let executor = MemoryExecutor;
309-
let system_info = SystemInfo::new().unwrap();
310-
executor.setup(&system_info, None).await.unwrap();
311-
executor
307+
async fn get_memory_executor() -> (SemaphorePermit<'static>, MemoryExecutor) {
308+
static MEMORY_INIT: OnceCell<()> = OnceCell::const_new();
309+
static MEMORY_SEMAPHORE: OnceCell<Semaphore> = OnceCell::const_new();
310+
311+
MEMORY_INIT
312+
.get_or_init(|| async {
313+
let executor = MemoryExecutor;
314+
let system_info = SystemInfo::new().unwrap();
315+
executor.setup(&system_info, None).await.unwrap();
316+
})
317+
.await;
318+
319+
let semaphore = MEMORY_SEMAPHORE
320+
.get_or_init(|| async { Semaphore::new(1) })
321+
.await;
322+
let permit = semaphore.acquire().await.unwrap();
323+
324+
(permit, MemoryExecutor)
312325
}
313326

314327
#[cfg(test)]
@@ -324,7 +337,7 @@ mod memory {
324337
#[tokio::test]
325338
async fn test_memory_executor(#[case] cmd: &str) {
326339
let (system_info, run_data, _temp_dir) = create_test_setup().await;
327-
let executor = get_memory_executor().await;
340+
let (_permit, executor) = get_memory_executor().await;
328341

329342
let config = memory_config(cmd);
330343
executor
@@ -337,7 +350,7 @@ mod memory {
337350
#[tokio::test]
338351
async fn test_memory_executor_with_env(#[case] env_case: (&str, &str)) {
339352
let (system_info, run_data, _temp_dir) = create_test_setup().await;
340-
let executor = get_memory_executor().await;
353+
let (_permit, executor) = get_memory_executor().await;
341354

342355
let (env_var, env_value) = env_case;
343356
temp_env::async_with_vars(&[(env_var, Some(env_value))], async {

0 commit comments

Comments
 (0)