test.rs

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