diff --git a/turbopack/crates/turbo-tasks-fetch/tests/test_config.trs b/turbopack/crates/turbo-tasks-fetch/tests/test_config.trs index d5d5cbf904acdd..037d1ff9fe8cb3 100644 --- a/turbopack/crates/turbo-tasks-fetch/tests/test_config.trs +++ b/turbopack/crates/turbo-tasks-fetch/tests/test_config.trs @@ -1 +1,3 @@ -turbo_tasks::TurboTasks::new(turbo_tasks_memory::MemoryBackend::new(usize::MAX)) +|_name, _initial | { + turbo_tasks::TurboTasks::new(turbo_tasks_memory::MemoryBackend::new(usize::MAX)) +} diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/test_config.trs b/turbopack/crates/turbo-tasks-macros-tests/tests/test_config.trs index d5d5cbf904acdd..037d1ff9fe8cb3 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/test_config.trs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/test_config.trs @@ -1 +1,3 @@ -turbo_tasks::TurboTasks::new(turbo_tasks_memory::MemoryBackend::new(usize::MAX)) +|_name, _initial | { + turbo_tasks::TurboTasks::new(turbo_tasks_memory::MemoryBackend::new(usize::MAX)) +} diff --git a/turbopack/crates/turbo-tasks-memory/tests/test_config.trs b/turbopack/crates/turbo-tasks-memory/tests/test_config.trs index d5d5cbf904acdd..037d1ff9fe8cb3 100644 --- a/turbopack/crates/turbo-tasks-memory/tests/test_config.trs +++ b/turbopack/crates/turbo-tasks-memory/tests/test_config.trs @@ -1 +1,3 @@ -turbo_tasks::TurboTasks::new(turbo_tasks_memory::MemoryBackend::new(usize::MAX)) +|_name, _initial | { + turbo_tasks::TurboTasks::new(turbo_tasks_memory::MemoryBackend::new(usize::MAX)) +} diff --git a/turbopack/crates/turbo-tasks-testing/src/run.rs b/turbopack/crates/turbo-tasks-testing/src/run.rs index c405af0c37f4cf..c01c52b2b4f3ae 100644 --- a/turbopack/crates/turbo-tasks-testing/src/run.rs +++ b/turbopack/crates/turbo-tasks-testing/src/run.rs @@ -10,12 +10,15 @@ use turbo_tasks::{run_once, trace::TraceRawVcs, TurboTasksApi}; pub struct Registration { execution_lock: OnceLock<()>, func: fn(), - create_turbo_tasks: fn() -> Arc, + create_turbo_tasks: fn(&str, bool) -> Arc, } impl Registration { #[doc(hidden)] - pub const fn new(create_turbo_tasks: fn() -> Arc, func: fn()) -> Self { + pub const fn new( + create_turbo_tasks: fn(&str, bool) -> Arc, + func: fn(), + ) -> Self { Registration { execution_lock: OnceLock::new(), func, @@ -30,8 +33,8 @@ impl Registration { self.execution_lock.get_or_init(self.func); } - pub fn create_turbo_tasks(&self) -> Arc { - (self.create_turbo_tasks)() + pub fn create_turbo_tasks(&self, name: &str, initial: bool) -> Arc { + (self.create_turbo_tasks)(name, initial) } } @@ -40,11 +43,12 @@ macro_rules! register { ($($other_register_fns:expr),* $(,)?) => {{ use turbo_tasks::TurboTasksApi; use std::sync::Arc; - fn create_turbo_tasks() -> Arc { - include!(concat!( + fn create_turbo_tasks(name: &str, initial: bool) -> Arc { + let inner = include!(concat!( env!("CARGO_MANIFEST_DIR"), "/tests/test_config.trs" - )) + )); + (inner)(name, initial) } fn register_impl() { $($other_register_fns();)* @@ -68,10 +72,16 @@ where T: TraceRawVcs + Send + 'static, { registration.ensure_registered(); - let tt = registration.create_turbo_tasks(); + let name = closure_to_name(&fut); + let tt = registration.create_turbo_tasks(&name, true); run_once(tt, async move { Ok(fut.await) }).await.unwrap() } +fn closure_to_name(value: &T) -> String { + let name = std::any::type_name_of_val(value); + name.replace("::{{closure}}", "").replace("::", "_") +} + pub async fn run( registration: &Registration, fut: impl Fn() -> F + Send + 'static, @@ -81,12 +91,17 @@ where T: Debug + PartialEq + Eq + TraceRawVcs + Send + 'static, { registration.ensure_registered(); - let tt = registration.create_turbo_tasks(); + + let name = closure_to_name(&fut); + let tt = registration.create_turbo_tasks(&name, true); + println!("Run #1 (without cache)"); let first = run_once(tt.clone(), fut()).await?; + println!("Run #2 (with memory cache, same TurboTasks instance)"); let second = run_once(tt, fut()).await?; assert_eq!(first, second); - let tt = registration.create_turbo_tasks(); - let third = run_once(tt, fut()).await?; + let tt = registration.create_turbo_tasks(&name, false); + println!("Run #3 (with persistent cache if available, new TurboTasks instance)"); + let third = run_once(tt.clone(), fut()).await?; assert_eq!(first, third); Ok(()) } diff --git a/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs b/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs index b5a62fbe6f28c0..c1b50136400ad7 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs @@ -14,7 +14,7 @@ fn rectangle_stress() { .build() .unwrap(); rt.block_on(async { - let tt = REGISTRATION.create_turbo_tasks(); + let tt = REGISTRATION.create_turbo_tasks("scope_stress_rectangle_stress", true); let size = std::env::var("TURBOPACK_TEST_RECTANGLE_STRESS_SIZE") .map(|size| size.parse().unwrap()) .unwrap_or(50);