mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-24 17:28:40 +00:00
Add a public gpui::TestAppContext::new method
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
f1587fbb6e
commit
a57cb2b189
2 changed files with 22 additions and 21 deletions
|
@ -111,10 +111,7 @@ pub struct TestAppContext {
|
|||
}
|
||||
|
||||
impl App {
|
||||
pub fn test<T, A: AssetSource, F: FnOnce(&mut MutableAppContext) -> T>(
|
||||
asset_source: A,
|
||||
f: F,
|
||||
) -> T {
|
||||
pub fn test<T, F: FnOnce(&mut MutableAppContext) -> T>(f: F) -> T {
|
||||
let foreground_platform = platform::test::foreground_platform();
|
||||
let platform = platform::test::platform();
|
||||
let foreground = Rc::new(executor::Foreground::test());
|
||||
|
@ -122,32 +119,20 @@ impl App {
|
|||
foreground,
|
||||
Arc::new(platform),
|
||||
Rc::new(foreground_platform),
|
||||
asset_source,
|
||||
(),
|
||||
)));
|
||||
cx.borrow_mut().weak_self = Some(Rc::downgrade(&cx));
|
||||
let mut cx = cx.borrow_mut();
|
||||
f(&mut *cx)
|
||||
}
|
||||
|
||||
pub fn test_async<T, F, A: AssetSource, Fn>(asset_source: A, f: Fn) -> T
|
||||
pub fn test_async<T, F, Fn>(f: Fn) -> T
|
||||
where
|
||||
Fn: FnOnce(TestAppContext) -> F,
|
||||
F: Future<Output = T>,
|
||||
{
|
||||
let platform = Arc::new(platform::test::platform());
|
||||
let foreground_platform = Rc::new(platform::test::foreground_platform());
|
||||
let foreground = Rc::new(executor::Foreground::test());
|
||||
let cx = TestAppContext {
|
||||
cx: Rc::new(RefCell::new(MutableAppContext::new(
|
||||
foreground.clone(),
|
||||
platform,
|
||||
foreground_platform.clone(),
|
||||
asset_source,
|
||||
))),
|
||||
foreground_platform,
|
||||
};
|
||||
cx.cx.borrow_mut().weak_self = Some(Rc::downgrade(&cx.cx));
|
||||
|
||||
let cx = TestAppContext::new(foreground.clone());
|
||||
let future = f(cx);
|
||||
smol::block_on(foreground.run(future))
|
||||
}
|
||||
|
@ -261,6 +246,22 @@ impl App {
|
|||
}
|
||||
|
||||
impl TestAppContext {
|
||||
pub fn new(foreground: Rc<executor::Foreground>) -> Self {
|
||||
let platform = Arc::new(platform::test::platform());
|
||||
let foreground_platform = Rc::new(platform::test::foreground_platform());
|
||||
let cx = TestAppContext {
|
||||
cx: Rc::new(RefCell::new(MutableAppContext::new(
|
||||
foreground.clone(),
|
||||
platform,
|
||||
foreground_platform.clone(),
|
||||
(),
|
||||
))),
|
||||
foreground_platform,
|
||||
};
|
||||
cx.cx.borrow_mut().weak_self = Some(Rc::downgrade(&cx.cx));
|
||||
cx
|
||||
}
|
||||
|
||||
pub fn dispatch_action<T: 'static + Any>(
|
||||
&self,
|
||||
window_id: usize,
|
||||
|
|
|
@ -34,7 +34,7 @@ pub fn test(args: TokenStream, function: TokenStream) -> TokenStream {
|
|||
fn #outer_fn_name() {
|
||||
#inner_fn
|
||||
|
||||
#namespace::App::test_async((), move |cx| async {
|
||||
#namespace::App::test_async(move |cx| async {
|
||||
#inner_fn_name(cx).await;
|
||||
});
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ pub fn test(args: TokenStream, function: TokenStream) -> TokenStream {
|
|||
fn #outer_fn_name() {
|
||||
#inner_fn
|
||||
|
||||
#namespace::App::test((), |cx| {
|
||||
#namespace::App::test(|cx| {
|
||||
#inner_fn_name(cx);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue