test.rs

 1use crate::{assets::Assets, build_window_options, build_workspace, AppState};
 2use client::{test::FakeHttpClient, ChannelList, Client, UserStore};
 3use gpui::MutableAppContext;
 4use language::LanguageRegistry;
 5use project::fs::FakeFs;
 6use settings::Settings;
 7use std::sync::Arc;
 8use theme::ThemeRegistry;
 9
10#[cfg(test)]
11#[ctor::ctor]
12fn init_logger() {
13    if std::env::var("RUST_LOG").is_ok() {
14        env_logger::init();
15    }
16}
17
18pub fn test_app_state(cx: &mut MutableAppContext) -> Arc<AppState> {
19    let settings = Settings::test(cx);
20    editor::init(cx);
21    cx.set_global(settings);
22    let themes = ThemeRegistry::new(Assets, cx.font_cache().clone());
23    let http = FakeHttpClient::with_404_response();
24    let client = Client::new(http.clone());
25    let user_store = cx.add_model(|cx| UserStore::new(client.clone(), http, cx));
26    let languages = LanguageRegistry::test();
27    languages.add(Arc::new(language::Language::new(
28        language::LanguageConfig {
29            name: "Rust".into(),
30            path_suffixes: vec!["rs".to_string()],
31            ..Default::default()
32        },
33        Some(tree_sitter_rust::language()),
34    )));
35    Arc::new(AppState {
36        themes,
37        languages: Arc::new(languages),
38        channel_list: cx.add_model(|cx| ChannelList::new(user_store.clone(), client.clone(), cx)),
39        client,
40        user_store,
41        fs: FakeFs::new(cx.background().clone()),
42        build_window_options: &build_window_options,
43        build_workspace: &build_workspace,
44    })
45}