Unified · Split
| @@ -2140,711 +2140,711 @@ impl ToolbarItemView for ProjectSearchBar { · 2139 unmodified lines | ||
| 2140 | 2140 | } |
| 2141 | 2141 | } |
| 2142 | 2142 | |
| 2143 | −#[cfg(test)] | |
| 2144 | −pub mod tests { | |
| 2145 | − use super::*; | |
| 2146 | − use editor::DisplayPoint; | |
| 2147 | − use gpui::{color::Color, executor::Deterministic, TestAppContext}; | |
| 2148 | − use project::FakeFs; | |
| 2149 | − use semantic_index::semantic_index_settings::SemanticIndexSettings; | |
| 2150 | − use serde_json::json; | |
| 2151 | − use settings::SettingsStore; | |
| 2152 | − use std::sync::Arc; | |
| 2153 | − use theme::ThemeSettings; | |
| 2154 | − | |
| 2155 | − #[gpui::test] | |
| 2156 | − async fn test_project_search(deterministic: Arc<Deterministic>, cx: &mut TestAppContext) { | |
| 2157 | − init_test(cx); | |
| 2158 | − | |
| 2159 | − let fs = FakeFs::new(cx.background_executor()); | |
| 2160 | − fs.insert_tree( | |
| 2161 | − "/dir", | |
| 2162 | − json!({ | |
| 2163 | − "one.rs": "const ONE: usize = 1;", | |
| 2164 | − "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2165 | − "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2166 | − "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2167 | − }), | |
| 2168 | − ) | |
| 2169 | − .await; | |
| 2170 | − let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2171 | − let search = cx.add_model(|cx| ProjectSearch::new(project, cx)); | |
| 2172 | − let search_view = cx | |
| 2173 | − .add_window(|cx| ProjectSearchView::new(search.clone(), cx, None)) | |
| 2174 | − .root(cx); | |
| 2175 | − | |
| 2176 | − search_view.update(cx, |search_view, cx| { | |
| 2177 | − search_view | |
| 2178 | − .query_editor | |
| 2179 | − .update(cx, |query_editor, cx| query_editor.set_text("TWO", cx)); | |
| 2180 | − search_view.search(cx); | |
| 2181 | − }); | |
| 2182 | − deterministic.run_until_parked(); | |
| 2183 | − search_view.update(cx, |search_view, cx| { | |
| 2184 | − assert_eq!( | |
| 2185 | − search_view | |
| 2186 | − .results_editor | |
| 2187 | − .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2188 | − "\n\nconst THREE: usize = one::ONE + two::TWO;\n\n\nconst TWO: usize = one::ONE + one::ONE;" | |
| 2189 | − ); | |
| 2190 | − assert_eq!( | |
| 2191 | − search_view | |
| 2192 | − .results_editor | |
| 2193 | − .update(cx, |editor, cx| editor.all_text_background_highlights(cx)), | |
| 2194 | − &[ | |
| 2195 | − ( | |
| 2196 | − DisplayPoint::new(2, 32)..DisplayPoint::new(2, 35), | |
| 2197 | − Color::red() | |
| 2198 | − ), | |
| 2199 | − ( | |
| 2200 | − DisplayPoint::new(2, 37)..DisplayPoint::new(2, 40), | |
| 2201 | − Color::red() | |
| 2202 | − ), | |
| 2203 | − ( | |
| 2204 | − DisplayPoint::new(5, 6)..DisplayPoint::new(5, 9), | |
| 2205 | − Color::red() | |
| 2206 | − ) | |
| 2207 | − ] | |
| 2208 | − ); | |
| 2209 | − assert_eq!(search_view.active_match_index, Some(0)); | |
| 2210 | − assert_eq!( | |
| 2211 | − search_view | |
| 2212 | − .results_editor | |
| 2213 | − .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2214 | − [DisplayPoint::new(2, 32)..DisplayPoint::new(2, 35)] | |
| 2215 | − ); | |
| 2216 | − | |
| 2217 | − search_view.select_match(Direction::Next, cx); | |
| 2218 | − }); | |
| 2219 | − | |
| 2220 | − search_view.update(cx, |search_view, cx| { | |
| 2221 | − assert_eq!(search_view.active_match_index, Some(1)); | |
| 2222 | − assert_eq!( | |
| 2223 | − search_view | |
| 2224 | − .results_editor | |
| 2225 | − .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2226 | − [DisplayPoint::new(2, 37)..DisplayPoint::new(2, 40)] | |
| 2227 | − ); | |
| 2228 | − search_view.select_match(Direction::Next, cx); | |
| 2229 | − }); | |
| 2230 | − | |
| 2231 | − search_view.update(cx, |search_view, cx| { | |
| 2232 | − assert_eq!(search_view.active_match_index, Some(2)); | |
| 2233 | − assert_eq!( | |
| 2234 | − search_view | |
| 2235 | − .results_editor | |
| 2236 | − .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2237 | − [DisplayPoint::new(5, 6)..DisplayPoint::new(5, 9)] | |
| 2238 | − ); | |
| 2239 | − search_view.select_match(Direction::Next, cx); | |
| 2240 | − }); | |
| 2241 | − | |
| 2242 | − search_view.update(cx, |search_view, cx| { | |
| 2243 | − assert_eq!(search_view.active_match_index, Some(0)); | |
| 2244 | − assert_eq!( | |
| 2245 | − search_view | |
| 2246 | − .results_editor | |
| 2247 | − .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2248 | − [DisplayPoint::new(2, 32)..DisplayPoint::new(2, 35)] | |
| 2249 | − ); | |
| 2250 | − search_view.select_match(Direction::Prev, cx); | |
| 2251 | − }); | |
| 2252 | − | |
| 2253 | − search_view.update(cx, |search_view, cx| { | |
| 2254 | − assert_eq!(search_view.active_match_index, Some(2)); | |
| 2255 | − assert_eq!( | |
| 2256 | − search_view | |
| 2257 | − .results_editor | |
| 2258 | − .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2259 | − [DisplayPoint::new(5, 6)..DisplayPoint::new(5, 9)] | |
| 2260 | − ); | |
| 2261 | − search_view.select_match(Direction::Prev, cx); | |
| 2262 | − }); | |
| 2263 | − | |
| 2264 | − search_view.update(cx, |search_view, cx| { | |
| 2265 | − assert_eq!(search_view.active_match_index, Some(1)); | |
| 2266 | − assert_eq!( | |
| 2267 | − search_view | |
| 2268 | − .results_editor | |
| 2269 | − .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2270 | − [DisplayPoint::new(2, 37)..DisplayPoint::new(2, 40)] | |
| 2271 | − ); | |
| 2272 | − }); | |
| 2273 | − } | |
| 2143 | +// #[cfg(test)] | |
| 2144 | +// pub mod tests { | |
| 2145 | +// use super::*; | |
| 2146 | +// use editor::DisplayPoint; | |
| 2147 | +// use gpui::{color::Color, executor::Deterministic, TestAppContext}; | |
| 2148 | +// use project::FakeFs; | |
| 2149 | +// use semantic_index::semantic_index_settings::SemanticIndexSettings; | |
| 2150 | +// use serde_json::json; | |
| 2151 | +// use settings::SettingsStore; | |
| 2152 | +// use std::sync::Arc; | |
| 2153 | +// use theme::ThemeSettings; | |
| 2154 | + | |
| 2155 | +// #[gpui::test] | |
| 2156 | +// async fn test_project_search(deterministic: Arc<Deterministic>, cx: &mut TestAppContext) { | |
| 2157 | +// init_test(cx); | |
| 2158 | + | |
| 2159 | +// let fs = FakeFs::new(cx.background_executor()); | |
| 2160 | +// fs.insert_tree( | |
| 2161 | +// "/dir", | |
| 2162 | +// json!({ | |
| 2163 | +// "one.rs": "const ONE: usize = 1;", | |
| 2164 | +// "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2165 | +// "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2166 | +// "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2167 | +// }), | |
| 2168 | +// ) | |
| 2169 | +// .await; | |
| 2170 | +// let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2171 | +// let search = cx.add_model(|cx| ProjectSearch::new(project, cx)); | |
| 2172 | +// let search_view = cx | |
| 2173 | +// .add_window(|cx| ProjectSearchView::new(search.clone(), cx, None)) | |
| 2174 | +// .root(cx); | |
| 2175 | + | |
| 2176 | +// search_view.update(cx, |search_view, cx| { | |
| 2177 | +// search_view | |
| 2178 | +// .query_editor | |
| 2179 | +// .update(cx, |query_editor, cx| query_editor.set_text("TWO", cx)); | |
| 2180 | +// search_view.search(cx); | |
| 2181 | +// }); | |
| 2182 | +// deterministic.run_until_parked(); | |
| 2183 | +// search_view.update(cx, |search_view, cx| { | |
| 2184 | +// assert_eq!( | |
| 2185 | +// search_view | |
| 2186 | +// .results_editor | |
| 2187 | +// .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2188 | +// "\n\nconst THREE: usize = one::ONE + two::TWO;\n\n\nconst TWO: usize = one::ONE + one::ONE;" | |
| 2189 | +// ); | |
| 2190 | +// assert_eq!( | |
| 2191 | +// search_view | |
| 2192 | +// .results_editor | |
| 2193 | +// .update(cx, |editor, cx| editor.all_text_background_highlights(cx)), | |
| 2194 | +// &[ | |
| 2195 | +// ( | |
| 2196 | +// DisplayPoint::new(2, 32)..DisplayPoint::new(2, 35), | |
| 2197 | +// Color::red() | |
| 2198 | +// ), | |
| 2199 | +// ( | |
| 2200 | +// DisplayPoint::new(2, 37)..DisplayPoint::new(2, 40), | |
| 2201 | +// Color::red() | |
| 2202 | +// ), | |
| 2203 | +// ( | |
| 2204 | +// DisplayPoint::new(5, 6)..DisplayPoint::new(5, 9), | |
| 2205 | +// Color::red() | |
| 2206 | +// ) | |
| 2207 | +// ] | |
| 2208 | +// ); | |
| 2209 | +// assert_eq!(search_view.active_match_index, Some(0)); | |
| 2210 | +// assert_eq!( | |
| 2211 | +// search_view | |
| 2212 | +// .results_editor | |
| 2213 | +// .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2214 | +// [DisplayPoint::new(2, 32)..DisplayPoint::new(2, 35)] | |
| 2215 | +// ); | |
| 2274 | 2216 | |
| 2275 | − #[gpui::test] | |
| 2276 | − async fn test_project_search_focus(deterministic: Arc<Deterministic>, cx: &mut TestAppContext) { | |
| 2277 | − init_test(cx); | |
| 2278 | − | |
| 2279 | − let fs = FakeFs::new(cx.background_executor()); | |
| 2280 | − fs.insert_tree( | |
| 2281 | − "/dir", | |
| 2282 | − json!({ | |
| 2283 | − "one.rs": "const ONE: usize = 1;", | |
| 2284 | − "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2285 | − "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2286 | − "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2287 | − }), | |
| 2288 | − ) | |
| 2289 | − .await; | |
| 2290 | − let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2291 | − let window = cx.add_window(|cx| Workspace::test_new(project, cx)); | |
| 2292 | − let workspace = window.root(cx); | |
| 2293 | − | |
| 2294 | − let active_item = cx.read(|cx| { | |
| 2295 | − workspace | |
| 2296 | − .read(cx) | |
| 2297 | − .active_pane() | |
| 2298 | − .read(cx) | |
| 2299 | − .active_item() | |
| 2300 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2301 | − }); | |
| 2302 | − assert!( | |
| 2303 | − active_item.is_none(), | |
| 2304 | − "Expected no search panel to be active, but got: {active_item:?}" | |
| 2305 | − ); | |
| 2217 | +// search_view.select_match(Direction::Next, cx); | |
| 2218 | +// }); | |
| 2306 | 2219 | |
| 2307 | − workspace.update(cx, |workspace, cx| { | |
| 2308 | − ProjectSearchView::deploy(workspace, &workspace::NewSearch, cx) | |
| 2309 | − }); | |
| 2220 | +// search_view.update(cx, |search_view, cx| { | |
| 2221 | +// assert_eq!(search_view.active_match_index, Some(1)); | |
| 2222 | +// assert_eq!( | |
| 2223 | +// search_view | |
| 2224 | +// .results_editor | |
| 2225 | +// .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2226 | +// [DisplayPoint::new(2, 37)..DisplayPoint::new(2, 40)] | |
| 2227 | +// ); | |
| 2228 | +// search_view.select_match(Direction::Next, cx); | |
| 2229 | +// }); | |
| 2310 | 2230 | |
| 2311 | − let Some(search_view) = cx.read(|cx| { | |
| 2312 | − workspace | |
| 2313 | − .read(cx) | |
| 2314 | − .active_pane() | |
| 2315 | − .read(cx) | |
| 2316 | − .active_item() | |
| 2317 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2318 | − }) else { | |
| 2319 | − panic!("Search view expected to appear after new search event trigger") | |
| 2320 | − }; | |
| 2321 | − let search_view_id = search_view.id(); | |
| 2231 | +// search_view.update(cx, |search_view, cx| { | |
| 2232 | +// assert_eq!(search_view.active_match_index, Some(2)); | |
| 2233 | +// assert_eq!( | |
| 2234 | +// search_view | |
| 2235 | +// .results_editor | |
| 2236 | +// .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2237 | +// [DisplayPoint::new(5, 6)..DisplayPoint::new(5, 9)] | |
| 2238 | +// ); | |
| 2239 | +// search_view.select_match(Direction::Next, cx); | |
| 2240 | +// }); | |
| 2322 | 2241 | |
| 2323 | − cx.spawn(|mut cx| async move { | |
| 2324 | − window.dispatch_action(search_view_id, &ToggleFocus, &mut cx); | |
| 2325 | − }) | |
| 2326 | − .detach(); | |
| 2327 | − deterministic.run_until_parked(); | |
| 2328 | − search_view.update(cx, |search_view, cx| { | |
| 2329 | − assert!( | |
| 2330 | − search_view.query_editor.is_focused(cx), | |
| 2331 | − "Empty search view should be focused after the toggle focus event: no results panel to focus on", | |
| 2332 | − ); | |
| 2333 | − }); | |
| 2242 | +// search_view.update(cx, |search_view, cx| { | |
| 2243 | +// assert_eq!(search_view.active_match_index, Some(0)); | |
| 2244 | +// assert_eq!( | |
| 2245 | +// search_view | |
| 2246 | +// .results_editor | |
| 2247 | +// .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2248 | +// [DisplayPoint::new(2, 32)..DisplayPoint::new(2, 35)] | |
| 2249 | +// ); | |
| 2250 | +// search_view.select_match(Direction::Prev, cx); | |
| 2251 | +// }); | |
| 2334 | 2252 | |
| 2335 | − search_view.update(cx, |search_view, cx| { | |
| 2336 | − let query_editor = &search_view.query_editor; | |
| 2337 | − assert!( | |
| 2338 | − query_editor.is_focused(cx), | |
| 2339 | − "Search view should be focused after the new search view is activated", | |
| 2340 | − ); | |
| 2341 | − let query_text = query_editor.read(cx).text(cx); | |
| 2342 | − assert!( | |
| 2343 | − query_text.is_empty(), | |
| 2344 | − "New search query should be empty but got '{query_text}'", | |
| 2345 | − ); | |
| 2346 | − let results_text = search_view | |
| 2347 | − .results_editor | |
| 2348 | − .update(cx, |editor, cx| editor.display_text(cx)); | |
| 2349 | − assert!( | |
| 2350 | − results_text.is_empty(), | |
| 2351 | − "Empty search view should have no results but got '{results_text}'" | |
| 2352 | − ); | |
| 2353 | − }); | |
| 2253 | +// search_view.update(cx, |search_view, cx| { | |
| 2254 | +// assert_eq!(search_view.active_match_index, Some(2)); | |
| 2255 | +// assert_eq!( | |
| 2256 | +// search_view | |
| 2257 | +// .results_editor | |
| 2258 | +// .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2259 | +// [DisplayPoint::new(5, 6)..DisplayPoint::new(5, 9)] | |
| 2260 | +// ); | |
| 2261 | +// search_view.select_match(Direction::Prev, cx); | |
| 2262 | +// }); | |
| 2354 | 2263 | |
| 2355 | − search_view.update(cx, |search_view, cx| { | |
| 2356 | − search_view.query_editor.update(cx, |query_editor, cx| { | |
| 2357 | − query_editor.set_text("sOMETHINGtHATsURELYdOESnOTeXIST", cx) | |
| 2358 | − }); | |
| 2359 | − search_view.search(cx); | |
| 2360 | − }); | |
| 2361 | − deterministic.run_until_parked(); | |
| 2362 | − search_view.update(cx, |search_view, cx| { | |
| 2363 | − let results_text = search_view | |
| 2364 | − .results_editor | |
| 2365 | − .update(cx, |editor, cx| editor.display_text(cx)); | |
| 2366 | − assert!( | |
| 2367 | − results_text.is_empty(), | |
| 2368 | − "Search view for mismatching query should have no results but got '{results_text}'" | |
| 2369 | − ); | |
| 2370 | − assert!( | |
| 2371 | − search_view.query_editor.is_focused(cx), | |
| 2372 | − "Search view should be focused after mismatching query had been used in search", | |
| 2373 | − ); | |
| 2374 | − }); | |
| 2375 | − cx.spawn( | |
| 2376 | − |mut cx| async move { window.dispatch_action(search_view_id, &ToggleFocus, &mut cx) }, | |
| 2377 | − ) | |
| 2378 | − .detach(); | |
| 2379 | − deterministic.run_until_parked(); | |
| 2380 | − search_view.update(cx, |search_view, cx| { | |
| 2381 | − assert!( | |
| 2382 | − search_view.query_editor.is_focused(cx), | |
| 2383 | − "Search view with mismatching query should be focused after the toggle focus event: still no results panel to focus on", | |
| 2384 | − ); | |
| 2385 | − }); | |
| 2264 | +// search_view.update(cx, |search_view, cx| { | |
| 2265 | +// assert_eq!(search_view.active_match_index, Some(1)); | |
| 2266 | +// assert_eq!( | |
| 2267 | +// search_view | |
| 2268 | +// .results_editor | |
| 2269 | +// .update(cx, |editor, cx| editor.selections.display_ranges(cx)), | |
| 2270 | +// [DisplayPoint::new(2, 37)..DisplayPoint::new(2, 40)] | |
| 2271 | +// ); | |
| 2272 | +// }); | |
| 2273 | +// } | |
| 2386 | 2274 | |
| 2387 | − search_view.update(cx, |search_view, cx| { | |
| 2388 | − search_view | |
| 2389 | − .query_editor | |
| 2390 | − .update(cx, |query_editor, cx| query_editor.set_text("TWO", cx)); | |
| 2391 | − search_view.search(cx); | |
| 2392 | − }); | |
| 2393 | − deterministic.run_until_parked(); | |
| 2394 | − search_view.update(cx, |search_view, cx| { | |
| 2395 | − assert_eq!( | |
| 2396 | − search_view | |
| 2397 | − .results_editor | |
| 2398 | − .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2399 | − "\n\nconst THREE: usize = one::ONE + two::TWO;\n\n\nconst TWO: usize = one::ONE + one::ONE;", | |
| 2400 | − "Search view results should match the query" | |
| 2401 | − ); | |
| 2402 | − assert!( | |
| 2403 | − search_view.results_editor.is_focused(cx), | |
| 2404 | − "Search view with mismatching query should be focused after search results are available", | |
| 2405 | − ); | |
| 2406 | − }); | |
| 2407 | − cx.spawn(|mut cx| async move { | |
| 2408 | − window.dispatch_action(search_view_id, &ToggleFocus, &mut cx); | |
| 2409 | − }) | |
| 2410 | − .detach(); | |
| 2411 | − deterministic.run_until_parked(); | |
| 2412 | − search_view.update(cx, |search_view, cx| { | |
| 2413 | − assert!( | |
| 2414 | − search_view.results_editor.is_focused(cx), | |
| 2415 | − "Search view with matching query should still have its results editor focused after the toggle focus event", | |
| 2416 | − ); | |
| 2417 | − }); | |
| 2275 | +// #[gpui::test] | |
| 2276 | +// async fn test_project_search_focus(deterministic: Arc<Deterministic>, cx: &mut TestAppContext) { | |
| 2277 | +// init_test(cx); | |
| 2278 | + | |
| 2279 | +// let fs = FakeFs::new(cx.background_executor()); | |
| 2280 | +// fs.insert_tree( | |
| 2281 | +// "/dir", | |
| 2282 | +// json!({ | |
| 2283 | +// "one.rs": "const ONE: usize = 1;", | |
| 2284 | +// "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2285 | +// "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2286 | +// "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2287 | +// }), | |
| 2288 | +// ) | |
| 2289 | +// .await; | |
| 2290 | +// let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2291 | +// let window = cx.add_window(|cx| Workspace::test_new(project, cx)); | |
| 2292 | +// let workspace = window.root(cx); | |
| 2293 | + | |
| 2294 | +// let active_item = cx.read(|cx| { | |
| 2295 | +// workspace | |
| 2296 | +// .read(cx) | |
| 2297 | +// .active_pane() | |
| 2298 | +// .read(cx) | |
| 2299 | +// .active_item() | |
| 2300 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2301 | +// }); | |
| 2302 | +// assert!( | |
| 2303 | +// active_item.is_none(), | |
| 2304 | +// "Expected no search panel to be active, but got: {active_item:?}" | |
| 2305 | +// ); | |
| 2418 | 2306 | |
| 2419 | − workspace.update(cx, |workspace, cx| { | |
| 2420 | − ProjectSearchView::deploy(workspace, &workspace::NewSearch, cx) | |
| 2421 | − }); | |
| 2422 | − deterministic.run_until_parked(); | |
| 2423 | − let Some(search_view_2) = cx.read(|cx| { | |
| 2424 | − workspace | |
| 2425 | − .read(cx) | |
| 2426 | − .active_pane() | |
| 2427 | − .read(cx) | |
| 2428 | − .active_item() | |
| 2429 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2430 | − }) else { | |
| 2431 | − panic!("Search view expected to appear after new search event trigger") | |
| 2432 | − }; | |
| 2433 | − let search_view_id_2 = search_view_2.id(); | |
| 2434 | − assert_ne!( | |
| 2435 | − search_view_2, search_view, | |
| 2436 | − "New search view should be open after `workspace::NewSearch` event" | |
| 2437 | − ); | |
| 2307 | +// workspace.update(cx, |workspace, cx| { | |
| 2308 | +// ProjectSearchView::deploy(workspace, &workspace::NewSearch, cx) | |
| 2309 | +// }); | |
| 2438 | 2310 | |
| 2439 | − search_view.update(cx, |search_view, cx| { | |
| 2440 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO", "First search view should not have an updated query"); | |
| 2441 | − assert_eq!( | |
| 2442 | − search_view | |
| 2443 | − .results_editor | |
| 2444 | − .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2445 | − "\n\nconst THREE: usize = one::ONE + two::TWO;\n\n\nconst TWO: usize = one::ONE + one::ONE;", | |
| 2446 | − "Results of the first search view should not update too" | |
| 2447 | − ); | |
| 2448 | − assert!( | |
| 2449 | − !search_view.query_editor.is_focused(cx), | |
| 2450 | − "Focus should be moved away from the first search view" | |
| 2451 | − ); | |
| 2452 | − }); | |
| 2311 | +// let Some(search_view) = cx.read(|cx| { | |
| 2312 | +// workspace | |
| 2313 | +// .read(cx) | |
| 2314 | +// .active_pane() | |
| 2315 | +// .read(cx) | |
| 2316 | +// .active_item() | |
| 2317 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2318 | +// }) else { | |
| 2319 | +// panic!("Search view expected to appear after new search event trigger") | |
| 2320 | +// }; | |
| 2321 | +// let search_view_id = search_view.id(); | |
| 2322 | + | |
| 2323 | +// cx.spawn(|mut cx| async move { | |
| 2324 | +// window.dispatch_action(search_view_id, &ToggleFocus, &mut cx); | |
| 2325 | +// }) | |
| 2326 | +// .detach(); | |
| 2327 | +// deterministic.run_until_parked(); | |
| 2328 | +// search_view.update(cx, |search_view, cx| { | |
| 2329 | +// assert!( | |
| 2330 | +// search_view.query_editor.is_focused(cx), | |
| 2331 | +// "Empty search view should be focused after the toggle focus event: no results panel to focus on", | |
| 2332 | +// ); | |
| 2333 | +// }); | |
| 2453 | 2334 | |
| 2454 | − search_view_2.update(cx, |search_view_2, cx| { | |
| 2455 | − assert_eq!( | |
| 2456 | − search_view_2.query_editor.read(cx).text(cx), | |
| 2457 | − "two", | |
| 2458 | − "New search view should get the query from the text cursor was at during the event spawn (first search view's first result)" | |
| 2459 | − ); | |
| 2460 | − assert_eq!( | |
| 2461 | − search_view_2 | |
| 2462 | − .results_editor | |
| 2463 | − .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2464 | − "", | |
| 2465 | − "No search results should be in the 2nd view yet, as we did not spawn a search for it" | |
| 2466 | − ); | |
| 2467 | − assert!( | |
| 2468 | − search_view_2.query_editor.is_focused(cx), | |
| 2469 | − "Focus should be moved into query editor fo the new window" | |
| 2470 | − ); | |
| 2471 | − }); | |
| 2335 | +// search_view.update(cx, |search_view, cx| { | |
| 2336 | +// let query_editor = &search_view.query_editor; | |
| 2337 | +// assert!( | |
| 2338 | +// query_editor.is_focused(cx), | |
| 2339 | +// "Search view should be focused after the new search view is activated", | |
| 2340 | +// ); | |
| 2341 | +// let query_text = query_editor.read(cx).text(cx); | |
| 2342 | +// assert!( | |
| 2343 | +// query_text.is_empty(), | |
| 2344 | +// "New search query should be empty but got '{query_text}'", | |
| 2345 | +// ); | |
| 2346 | +// let results_text = search_view | |
| 2347 | +// .results_editor | |
| 2348 | +// .update(cx, |editor, cx| editor.display_text(cx)); | |
| 2349 | +// assert!( | |
| 2350 | +// results_text.is_empty(), | |
| 2351 | +// "Empty search view should have no results but got '{results_text}'" | |
| 2352 | +// ); | |
| 2353 | +// }); | |
| 2472 | 2354 | |
| 2473 | − search_view_2.update(cx, |search_view_2, cx| { | |
| 2474 | − search_view_2 | |
| 2475 | − .query_editor | |
| 2476 | − .update(cx, |query_editor, cx| query_editor.set_text("FOUR", cx)); | |
| 2477 | − search_view_2.search(cx); | |
| 2478 | − }); | |
| 2479 | − deterministic.run_until_parked(); | |
| 2480 | − search_view_2.update(cx, |search_view_2, cx| { | |
| 2481 | − assert_eq!( | |
| 2482 | − search_view_2 | |
| 2483 | − .results_editor | |
| 2484 | − .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2485 | − "\n\nconst FOUR: usize = one::ONE + three::THREE;", | |
| 2486 | − "New search view with the updated query should have new search results" | |
| 2487 | − ); | |
| 2488 | − assert!( | |
| 2489 | − search_view_2.results_editor.is_focused(cx), | |
| 2490 | − "Search view with mismatching query should be focused after search results are available", | |
| 2491 | − ); | |
| 2492 | − }); | |
| 2355 | +// search_view.update(cx, |search_view, cx| { | |
| 2356 | +// search_view.query_editor.update(cx, |query_editor, cx| { | |
| 2357 | +// query_editor.set_text("sOMETHINGtHATsURELYdOESnOTeXIST", cx) | |
| 2358 | +// }); | |
| 2359 | +// search_view.search(cx); | |
| 2360 | +// }); | |
| 2361 | +// deterministic.run_until_parked(); | |
| 2362 | +// search_view.update(cx, |search_view, cx| { | |
| 2363 | +// let results_text = search_view | |
| 2364 | +// .results_editor | |
| 2365 | +// .update(cx, |editor, cx| editor.display_text(cx)); | |
| 2366 | +// assert!( | |
| 2367 | +// results_text.is_empty(), | |
| 2368 | +// "Search view for mismatching query should have no results but got '{results_text}'" | |
| 2369 | +// ); | |
| 2370 | +// assert!( | |
| 2371 | +// search_view.query_editor.is_focused(cx), | |
| 2372 | +// "Search view should be focused after mismatching query had been used in search", | |
| 2373 | +// ); | |
| 2374 | +// }); | |
| 2375 | +// cx.spawn( | |
| 2376 | +// |mut cx| async move { window.dispatch_action(search_view_id, &ToggleFocus, &mut cx) }, | |
| 2377 | +// ) | |
| 2378 | +// .detach(); | |
| 2379 | +// deterministic.run_until_parked(); | |
| 2380 | +// search_view.update(cx, |search_view, cx| { | |
| 2381 | +// assert!( | |
| 2382 | +// search_view.query_editor.is_focused(cx), | |
| 2383 | +// "Search view with mismatching query should be focused after the toggle focus event: still no results panel to focus on", | |
| 2384 | +// ); | |
| 2385 | +// }); | |
| 2493 | 2386 | |
| 2494 | − cx.spawn(|mut cx| async move { | |
| 2495 | − window.dispatch_action(search_view_id_2, &ToggleFocus, &mut cx); | |
| 2496 | − }) | |
| 2497 | − .detach(); | |
| 2498 | − deterministic.run_until_parked(); | |
| 2499 | − search_view_id_2.update(cx, |search_view_2, cx| { | |
| 2500 | − assert!( | |
| 2501 | − search_view_2.results_editor.is_focused(cx), | |
| 2502 | − "Search view with matching query should switch focus to the results editor after the toggle focus event", | |
| 2503 | − ); | |
| 2504 | − }); | |
| 2505 | − } | |
| 2387 | +// search_view.update(cx, |search_view, cx| { | |
| 2388 | +// search_view | |
| 2389 | +// .query_editor | |
| 2390 | +// .update(cx, |query_editor, cx| query_editor.set_text("TWO", cx)); | |
| 2391 | +// search_view.search(cx); | |
| 2392 | +// }); | |
| 2393 | +// deterministic.run_until_parked(); | |
| 2394 | +// search_view.update(cx, |search_view, cx| { | |
| 2395 | +// assert_eq!( | |
| 2396 | +// search_view | |
| 2397 | +// .results_editor | |
| 2398 | +// .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2399 | +// "\n\nconst THREE: usize = one::ONE + two::TWO;\n\n\nconst TWO: usize = one::ONE + one::ONE;", | |
| 2400 | +// "Search view results should match the query" | |
| 2401 | +// ); | |
| 2402 | +// assert!( | |
| 2403 | +// search_view.results_editor.is_focused(cx), | |
| 2404 | +// "Search view with mismatching query should be focused after search results are available", | |
| 2405 | +// ); | |
| 2406 | +// }); | |
| 2407 | +// cx.spawn(|mut cx| async move { | |
| 2408 | +// window.dispatch_action(search_view_id, &ToggleFocus, &mut cx); | |
| 2409 | +// }) | |
| 2410 | +// .detach(); | |
| 2411 | +// deterministic.run_until_parked(); | |
| 2412 | +// search_view.update(cx, |search_view, cx| { | |
| 2413 | +// assert!( | |
| 2414 | +// search_view.results_editor.is_focused(cx), | |
| 2415 | +// "Search view with matching query should still have its results editor focused after the toggle focus event", | |
| 2416 | +// ); | |
| 2417 | +// }); | |
| 2506 | 2418 | |
| 2507 | − #[gpui::test] | |
| 2508 | − async fn test_new_project_search_in_directory( | |
| 2509 | − deterministic: Arc<Deterministic>, | |
| 2510 | − cx: &mut TestAppContext, | |
| 2511 | − ) { | |
| 2512 | − init_test(cx); | |
| 2513 | − | |
| 2514 | − let fs = FakeFs::new(cx.background_executor()); | |
| 2515 | − fs.insert_tree( | |
| 2516 | − "/dir", | |
| 2517 | − json!({ | |
| 2518 | − "a": { | |
| 2519 | − "one.rs": "const ONE: usize = 1;", | |
| 2520 | − "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2521 | − }, | |
| 2522 | − "b": { | |
| 2523 | − "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2524 | − "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2525 | − }, | |
| 2526 | − }), | |
| 2527 | − ) | |
| 2528 | − .await; | |
| 2529 | − let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2530 | − let worktree_id = project.read_with(cx, |project, cx| { | |
| 2531 | − project.worktrees(cx).next().unwrap().read(cx).id() | |
| 2532 | − }); | |
| 2533 | − let workspace = cx | |
| 2534 | − .add_window(|cx| Workspace::test_new(project, cx)) | |
| 2535 | − .root(cx); | |
| 2536 | − | |
| 2537 | − let active_item = cx.read(|cx| { | |
| 2538 | − workspace | |
| 2539 | − .read(cx) | |
| 2540 | − .active_pane() | |
| 2541 | − .read(cx) | |
| 2542 | − .active_item() | |
| 2543 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2544 | − }); | |
| 2545 | − assert!( | |
| 2546 | − active_item.is_none(), | |
| 2547 | − "Expected no search panel to be active, but got: {active_item:?}" | |
| 2548 | − ); | |
| 2419 | +// workspace.update(cx, |workspace, cx| { | |
| 2420 | +// ProjectSearchView::deploy(workspace, &workspace::NewSearch, cx) | |
| 2421 | +// }); | |
| 2422 | +// deterministic.run_until_parked(); | |
| 2423 | +// let Some(search_view_2) = cx.read(|cx| { | |
| 2424 | +// workspace | |
| 2425 | +// .read(cx) | |
| 2426 | +// .active_pane() | |
| 2427 | +// .read(cx) | |
| 2428 | +// .active_item() | |
| 2429 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2430 | +// }) else { | |
| 2431 | +// panic!("Search view expected to appear after new search event trigger") | |
| 2432 | +// }; | |
| 2433 | +// let search_view_id_2 = search_view_2.id(); | |
| 2434 | +// assert_ne!( | |
| 2435 | +// search_view_2, search_view, | |
| 2436 | +// "New search view should be open after `workspace::NewSearch` event" | |
| 2437 | +// ); | |
| 2438 | + | |
| 2439 | +// search_view.update(cx, |search_view, cx| { | |
| 2440 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO", "First search view should not have an updated query"); | |
| 2441 | +// assert_eq!( | |
| 2442 | +// search_view | |
| 2443 | +// .results_editor | |
| 2444 | +// .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2445 | +// "\n\nconst THREE: usize = one::ONE + two::TWO;\n\n\nconst TWO: usize = one::ONE + one::ONE;", | |
| 2446 | +// "Results of the first search view should not update too" | |
| 2447 | +// ); | |
| 2448 | +// assert!( | |
| 2449 | +// !search_view.query_editor.is_focused(cx), | |
| 2450 | +// "Focus should be moved away from the first search view" | |
| 2451 | +// ); | |
| 2452 | +// }); | |
| 2549 | 2453 | |
| 2550 | − let one_file_entry = cx.update(|cx| { | |
| 2551 | − workspace | |
| 2552 | − .read(cx) | |
| 2553 | − .project() | |
| 2554 | − .read(cx) | |
| 2555 | − .entry_for_path(&(worktree_id, "a/one.rs").into(), cx) | |
| 2556 | − .expect("no entry for /a/one.rs file") | |
| 2557 | − }); | |
| 2558 | − assert!(one_file_entry.is_file()); | |
| 2559 | − workspace.update(cx, |workspace, cx| { | |
| 2560 | − ProjectSearchView::new_search_in_directory(workspace, &one_file_entry, cx) | |
| 2561 | − }); | |
| 2562 | − let active_search_entry = cx.read(|cx| { | |
| 2563 | − workspace | |
| 2564 | − .read(cx) | |
| 2565 | − .active_pane() | |
| 2566 | − .read(cx) | |
| 2567 | − .active_item() | |
| 2568 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2569 | − }); | |
| 2570 | − assert!( | |
| 2571 | − active_search_entry.is_none(), | |
| 2572 | − "Expected no search panel to be active for file entry" | |
| 2573 | − ); | |
| 2454 | +// search_view_2.update(cx, |search_view_2, cx| { | |
| 2455 | +// assert_eq!( | |
| 2456 | +// search_view_2.query_editor.read(cx).text(cx), | |
| 2457 | +// "two", | |
| 2458 | +// "New search view should get the query from the text cursor was at during the event spawn (first search view's first result)" | |
| 2459 | +// ); | |
| 2460 | +// assert_eq!( | |
| 2461 | +// search_view_2 | |
| 2462 | +// .results_editor | |
| 2463 | +// .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2464 | +// "", | |
| 2465 | +// "No search results should be in the 2nd view yet, as we did not spawn a search for it" | |
| 2466 | +// ); | |
| 2467 | +// assert!( | |
| 2468 | +// search_view_2.query_editor.is_focused(cx), | |
| 2469 | +// "Focus should be moved into query editor fo the new window" | |
| 2470 | +// ); | |
| 2471 | +// }); | |
| 2574 | 2472 | |
| 2575 | − let a_dir_entry = cx.update(|cx| { | |
| 2576 | − workspace | |
| 2577 | − .read(cx) | |
| 2578 | − .project() | |
| 2579 | − .read(cx) | |
| 2580 | − .entry_for_path(&(worktree_id, "a").into(), cx) | |
| 2581 | − .expect("no entry for /a/ directory") | |
| 2582 | − }); | |
| 2583 | − assert!(a_dir_entry.is_dir()); | |
| 2584 | − workspace.update(cx, |workspace, cx| { | |
| 2585 | − ProjectSearchView::new_search_in_directory(workspace, &a_dir_entry, cx) | |
| 2586 | − }); | |
| 2473 | +// search_view_2.update(cx, |search_view_2, cx| { | |
| 2474 | +// search_view_2 | |
| 2475 | +// .query_editor | |
| 2476 | +// .update(cx, |query_editor, cx| query_editor.set_text("FOUR", cx)); | |
| 2477 | +// search_view_2.search(cx); | |
| 2478 | +// }); | |
| 2479 | +// deterministic.run_until_parked(); | |
| 2480 | +// search_view_2.update(cx, |search_view_2, cx| { | |
| 2481 | +// assert_eq!( | |
| 2482 | +// search_view_2 | |
| 2483 | +// .results_editor | |
| 2484 | +// .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2485 | +// "\n\nconst FOUR: usize = one::ONE + three::THREE;", | |
| 2486 | +// "New search view with the updated query should have new search results" | |
| 2487 | +// ); | |
| 2488 | +// assert!( | |
| 2489 | +// search_view_2.results_editor.is_focused(cx), | |
| 2490 | +// "Search view with mismatching query should be focused after search results are available", | |
| 2491 | +// ); | |
| 2492 | +// }); | |
| 2587 | 2493 | |
| 2588 | − let Some(search_view) = cx.read(|cx| { | |
| 2589 | − workspace | |
| 2590 | − .read(cx) | |
| 2591 | − .active_pane() | |
| 2592 | − .read(cx) | |
| 2593 | − .active_item() | |
| 2594 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2595 | − }) else { | |
| 2596 | − panic!("Search view expected to appear after new search in directory event trigger") | |
| 2597 | − }; | |
| 2598 | − deterministic.run_until_parked(); | |
| 2599 | − search_view.update(cx, |search_view, cx| { | |
| 2600 | − assert!( | |
| 2601 | − search_view.query_editor.is_focused(cx), | |
| 2602 | − "On new search in directory, focus should be moved into query editor" | |
| 2603 | − ); | |
| 2604 | − search_view.excluded_files_editor.update(cx, |editor, cx| { | |
| 2605 | − assert!( | |
| 2606 | − editor.display_text(cx).is_empty(), | |
| 2607 | − "New search in directory should not have any excluded files" | |
| 2608 | − ); | |
| 2609 | − }); | |
| 2610 | − search_view.included_files_editor.update(cx, |editor, cx| { | |
| 2611 | − assert_eq!( | |
| 2612 | − editor.display_text(cx), | |
| 2613 | − a_dir_entry.path.to_str().unwrap(), | |
| 2614 | − "New search in directory should have included dir entry path" | |
| 2615 | − ); | |
| 2616 | − }); | |
| 2617 | − }); | |
| 2494 | +// cx.spawn(|mut cx| async move { | |
| 2495 | +// window.dispatch_action(search_view_id_2, &ToggleFocus, &mut cx); | |
| 2496 | +// }) | |
| 2497 | +// .detach(); | |
| 2498 | +// deterministic.run_until_parked(); | |
| 2499 | +// search_view_id_2.update(cx, |search_view_2, cx| { | |
| 2500 | +// assert!( | |
| 2501 | +// search_view_2.results_editor.is_focused(cx), | |
| 2502 | +// "Search view with matching query should switch focus to the results editor after the toggle focus event", | |
| 2503 | +// ); | |
| 2504 | +// }); | |
| 2505 | +// } | |
| 2618 | 2506 | |
| 2619 | − search_view.update(cx, |search_view, cx| { | |
| 2620 | − search_view | |
| 2621 | − .query_editor | |
| 2622 | − .update(cx, |query_editor, cx| query_editor.set_text("const", cx)); | |
| 2623 | − search_view.search(cx); | |
| 2624 | − }); | |
| 2625 | − deterministic.run_until_parked(); | |
| 2626 | − search_view.update(cx, |search_view, cx| { | |
| 2627 | − assert_eq!( | |
| 2628 | − search_view | |
| 2629 | − .results_editor | |
| 2630 | − .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2631 | − "\n\nconst ONE: usize = 1;\n\n\nconst TWO: usize = one::ONE + one::ONE;", | |
| 2632 | − "New search in directory should have a filter that matches a certain directory" | |
| 2633 | − ); | |
| 2634 | − }); | |
| 2635 | − } | |
| 2507 | +// #[gpui::test] | |
| 2508 | +// async fn test_new_project_search_in_directory( | |
| 2509 | +// deterministic: Arc<Deterministic>, | |
| 2510 | +// cx: &mut TestAppContext, | |
| 2511 | +// ) { | |
| 2512 | +// init_test(cx); | |
| 2513 | + | |
| 2514 | +// let fs = FakeFs::new(cx.background_executor()); | |
| 2515 | +// fs.insert_tree( | |
| 2516 | +// "/dir", | |
| 2517 | +// json!({ | |
| 2518 | +// "a": { | |
| 2519 | +// "one.rs": "const ONE: usize = 1;", | |
| 2520 | +// "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2521 | +// }, | |
| 2522 | +// "b": { | |
| 2523 | +// "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2524 | +// "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2525 | +// }, | |
| 2526 | +// }), | |
| 2527 | +// ) | |
| 2528 | +// .await; | |
| 2529 | +// let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2530 | +// let worktree_id = project.read_with(cx, |project, cx| { | |
| 2531 | +// project.worktrees(cx).next().unwrap().read(cx).id() | |
| 2532 | +// }); | |
| 2533 | +// let workspace = cx | |
| 2534 | +// .add_window(|cx| Workspace::test_new(project, cx)) | |
| 2535 | +// .root(cx); | |
| 2536 | + | |
| 2537 | +// let active_item = cx.read(|cx| { | |
| 2538 | +// workspace | |
| 2539 | +// .read(cx) | |
| 2540 | +// .active_pane() | |
| 2541 | +// .read(cx) | |
| 2542 | +// .active_item() | |
| 2543 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2544 | +// }); | |
| 2545 | +// assert!( | |
| 2546 | +// active_item.is_none(), | |
| 2547 | +// "Expected no search panel to be active, but got: {active_item:?}" | |
| 2548 | +// ); | |
| 2549 | + | |
| 2550 | +// let one_file_entry = cx.update(|cx| { | |
| 2551 | +// workspace | |
| 2552 | +// .read(cx) | |
| 2553 | +// .project() | |
| 2554 | +// .read(cx) | |
| 2555 | +// .entry_for_path(&(worktree_id, "a/one.rs").into(), cx) | |
| 2556 | +// .expect("no entry for /a/one.rs file") | |
| 2557 | +// }); | |
| 2558 | +// assert!(one_file_entry.is_file()); | |
| 2559 | +// workspace.update(cx, |workspace, cx| { | |
| 2560 | +// ProjectSearchView::new_search_in_directory(workspace, &one_file_entry, cx) | |
| 2561 | +// }); | |
| 2562 | +// let active_search_entry = cx.read(|cx| { | |
| 2563 | +// workspace | |
| 2564 | +// .read(cx) | |
| 2565 | +// .active_pane() | |
| 2566 | +// .read(cx) | |
| 2567 | +// .active_item() | |
| 2568 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2569 | +// }); | |
| 2570 | +// assert!( | |
| 2571 | +// active_search_entry.is_none(), | |
| 2572 | +// "Expected no search panel to be active for file entry" | |
| 2573 | +// ); | |
| 2574 | + | |
| 2575 | +// let a_dir_entry = cx.update(|cx| { | |
| 2576 | +// workspace | |
| 2577 | +// .read(cx) | |
| 2578 | +// .project() | |
| 2579 | +// .read(cx) | |
| 2580 | +// .entry_for_path(&(worktree_id, "a").into(), cx) | |
| 2581 | +// .expect("no entry for /a/ directory") | |
| 2582 | +// }); | |
| 2583 | +// assert!(a_dir_entry.is_dir()); | |
| 2584 | +// workspace.update(cx, |workspace, cx| { | |
| 2585 | +// ProjectSearchView::new_search_in_directory(workspace, &a_dir_entry, cx) | |
| 2586 | +// }); | |
| 2636 | 2587 | |
| 2637 | − #[gpui::test] | |
| 2638 | − async fn test_search_query_history(cx: &mut TestAppContext) { | |
| 2639 | − init_test(cx); | |
| 2640 | − | |
| 2641 | − let fs = FakeFs::new(cx.background_executor()); | |
| 2642 | − fs.insert_tree( | |
| 2643 | − "/dir", | |
| 2644 | − json!({ | |
| 2645 | − "one.rs": "const ONE: usize = 1;", | |
| 2646 | − "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2647 | − "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2648 | − "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2649 | − }), | |
| 2650 | − ) | |
| 2651 | − .await; | |
| 2652 | − let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2653 | − let window = cx.add_window(|cx| Workspace::test_new(project, cx)); | |
| 2654 | − let workspace = window.root(cx); | |
| 2655 | − workspace.update(cx, |workspace, cx| { | |
| 2656 | − ProjectSearchView::deploy(workspace, &workspace::NewSearch, cx) | |
| 2657 | − }); | |
| 2588 | +// let Some(search_view) = cx.read(|cx| { | |
| 2589 | +// workspace | |
| 2590 | +// .read(cx) | |
| 2591 | +// .active_pane() | |
| 2592 | +// .read(cx) | |
| 2593 | +// .active_item() | |
| 2594 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2595 | +// }) else { | |
| 2596 | +// panic!("Search view expected to appear after new search in directory event trigger") | |
| 2597 | +// }; | |
| 2598 | +// deterministic.run_until_parked(); | |
| 2599 | +// search_view.update(cx, |search_view, cx| { | |
| 2600 | +// assert!( | |
| 2601 | +// search_view.query_editor.is_focused(cx), | |
| 2602 | +// "On new search in directory, focus should be moved into query editor" | |
| 2603 | +// ); | |
| 2604 | +// search_view.excluded_files_editor.update(cx, |editor, cx| { | |
| 2605 | +// assert!( | |
| 2606 | +// editor.display_text(cx).is_empty(), | |
| 2607 | +// "New search in directory should not have any excluded files" | |
| 2608 | +// ); | |
| 2609 | +// }); | |
| 2610 | +// search_view.included_files_editor.update(cx, |editor, cx| { | |
| 2611 | +// assert_eq!( | |
| 2612 | +// editor.display_text(cx), | |
| 2613 | +// a_dir_entry.path.to_str().unwrap(), | |
| 2614 | +// "New search in directory should have included dir entry path" | |
| 2615 | +// ); | |
| 2616 | +// }); | |
| 2617 | +// }); | |
| 2658 | 2618 | |
| 2659 | − let search_view = cx.read(|cx| { | |
| 2660 | − workspace | |
| 2661 | − .read(cx) | |
| 2662 | − .active_pane() | |
| 2663 | − .read(cx) | |
| 2664 | − .active_item() | |
| 2665 | − .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2666 | − .expect("Search view expected to appear after new search event trigger") | |
| 2667 | − }); | |
| 2619 | +// search_view.update(cx, |search_view, cx| { | |
| 2620 | +// search_view | |
| 2621 | +// .query_editor | |
| 2622 | +// .update(cx, |query_editor, cx| query_editor.set_text("const", cx)); | |
| 2623 | +// search_view.search(cx); | |
| 2624 | +// }); | |
| 2625 | +// deterministic.run_until_parked(); | |
| 2626 | +// search_view.update(cx, |search_view, cx| { | |
| 2627 | +// assert_eq!( | |
| 2628 | +// search_view | |
| 2629 | +// .results_editor | |
| 2630 | +// .update(cx, |editor, cx| editor.display_text(cx)), | |
| 2631 | +// "\n\nconst ONE: usize = 1;\n\n\nconst TWO: usize = one::ONE + one::ONE;", | |
| 2632 | +// "New search in directory should have a filter that matches a certain directory" | |
| 2633 | +// ); | |
| 2634 | +// }); | |
| 2635 | +// } | |
| 2668 | 2636 | |
| 2669 | − let search_bar = window.add_view(cx, |cx| { | |
| 2670 | − let mut search_bar = ProjectSearchBar::new(); | |
| 2671 | − search_bar.set_active_pane_item(Some(&search_view), cx); | |
| 2672 | − // search_bar.show(cx); | |
| 2673 | − search_bar | |
| 2674 | − }); | |
| 2637 | +// #[gpui::test] | |
| 2638 | +// async fn test_search_query_history(cx: &mut TestAppContext) { | |
| 2639 | +// init_test(cx); | |
| 2640 | + | |
| 2641 | +// let fs = FakeFs::new(cx.background_executor()); | |
| 2642 | +// fs.insert_tree( | |
| 2643 | +// "/dir", | |
| 2644 | +// json!({ | |
| 2645 | +// "one.rs": "const ONE: usize = 1;", | |
| 2646 | +// "two.rs": "const TWO: usize = one::ONE + one::ONE;", | |
| 2647 | +// "three.rs": "const THREE: usize = one::ONE + two::TWO;", | |
| 2648 | +// "four.rs": "const FOUR: usize = one::ONE + three::THREE;", | |
| 2649 | +// }), | |
| 2650 | +// ) | |
| 2651 | +// .await; | |
| 2652 | +// let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await; | |
| 2653 | +// let window = cx.add_window(|cx| Workspace::test_new(project, cx)); | |
| 2654 | +// let workspace = window.root(cx); | |
| 2655 | +// workspace.update(cx, |workspace, cx| { | |
| 2656 | +// ProjectSearchView::deploy(workspace, &workspace::NewSearch, cx) | |
| 2657 | +// }); | |
| 2675 | 2658 | |
| 2676 | − // Add 3 search items into the history + another unsubmitted one. | |
| 2677 | − search_view.update(cx, |search_view, cx| { | |
| 2678 | − search_view.search_options = SearchOptions::CASE_SENSITIVE; | |
| 2679 | − search_view | |
| 2680 | − .query_editor | |
| 2681 | − .update(cx, |query_editor, cx| query_editor.set_text("ONE", cx)); | |
| 2682 | − search_view.search(cx); | |
| 2683 | − }); | |
| 2684 | − cx.foreground().run_until_parked(); | |
| 2685 | − search_view.update(cx, |search_view, cx| { | |
| 2686 | − search_view | |
| 2687 | − .query_editor | |
| 2688 | − .update(cx, |query_editor, cx| query_editor.set_text("TWO", cx)); | |
| 2689 | − search_view.search(cx); | |
| 2690 | − }); | |
| 2691 | − cx.foreground().run_until_parked(); | |
| 2692 | − search_view.update(cx, |search_view, cx| { | |
| 2693 | − search_view | |
| 2694 | − .query_editor | |
| 2695 | − .update(cx, |query_editor, cx| query_editor.set_text("THREE", cx)); | |
| 2696 | − search_view.search(cx); | |
| 2697 | − }); | |
| 2698 | − cx.foreground().run_until_parked(); | |
| 2699 | − search_view.update(cx, |search_view, cx| { | |
| 2700 | − search_view.query_editor.update(cx, |query_editor, cx| { | |
| 2701 | − query_editor.set_text("JUST_TEXT_INPUT", cx) | |
| 2702 | − }); | |
| 2703 | − }); | |
| 2704 | − cx.foreground().run_until_parked(); | |
| 2659 | +// let search_view = cx.read(|cx| { | |
| 2660 | +// workspace | |
| 2661 | +// .read(cx) | |
| 2662 | +// .active_pane() | |
| 2663 | +// .read(cx) | |
| 2664 | +// .active_item() | |
| 2665 | +// .and_then(|item| item.downcast::<ProjectSearchView>()) | |
| 2666 | +// .expect("Search view expected to appear after new search event trigger") | |
| 2667 | +// }); | |
| 2705 | 2668 | |
| 2706 | − // Ensure that the latest input with search settings is active. | |
| 2707 | − search_view.update(cx, |search_view, cx| { | |
| 2708 | − assert_eq!( | |
| 2709 | − search_view.query_editor.read(cx).text(cx), | |
| 2710 | − "JUST_TEXT_INPUT" | |
| 2711 | − ); | |
| 2712 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2713 | − }); | |
| 2669 | +// let search_bar = window.add_view(cx, |cx| { | |
| 2670 | +// let mut search_bar = ProjectSearchBar::new(); | |
| 2671 | +// search_bar.set_active_pane_item(Some(&search_view), cx); | |
| 2672 | +// // search_bar.show(cx); | |
| 2673 | +// search_bar | |
| 2674 | +// }); | |
| 2714 | 2675 | |
| 2715 | − // Next history query after the latest should set the query to the empty string. | |
| 2716 | − search_bar.update(cx, |search_bar, cx| { | |
| 2717 | − search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2718 | − }); | |
| 2719 | − search_view.update(cx, |search_view, cx| { | |
| 2720 | − assert_eq!(search_view.query_editor.read(cx).text(cx), ""); | |
| 2721 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2722 | − }); | |
| 2723 | − search_bar.update(cx, |search_bar, cx| { | |
| 2724 | − search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2725 | − }); | |
| 2726 | − search_view.update(cx, |search_view, cx| { | |
| 2727 | − assert_eq!(search_view.query_editor.read(cx).text(cx), ""); | |
| 2728 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2729 | − }); | |
| 2676 | +// // Add 3 search items into the history + another unsubmitted one. | |
| 2677 | +// search_view.update(cx, |search_view, cx| { | |
| 2678 | +// search_view.search_options = SearchOptions::CASE_SENSITIVE; | |
| 2679 | +// search_view | |
| 2680 | +// .query_editor | |
| 2681 | +// .update(cx, |query_editor, cx| query_editor.set_text("ONE", cx)); | |
| 2682 | +// search_view.search(cx); | |
| 2683 | +// }); | |
| 2684 | +// cx.foreground().run_until_parked(); | |
| 2685 | +// search_view.update(cx, |search_view, cx| { | |
| 2686 | +// search_view | |
| 2687 | +// .query_editor | |
| 2688 | +// .update(cx, |query_editor, cx| query_editor.set_text("TWO", cx)); | |
| 2689 | +// search_view.search(cx); | |
| 2690 | +// }); | |
| 2691 | +// cx.foreground().run_until_parked(); | |
| 2692 | +// search_view.update(cx, |search_view, cx| { | |
| 2693 | +// search_view | |
| 2694 | +// .query_editor | |
| 2695 | +// .update(cx, |query_editor, cx| query_editor.set_text("THREE", cx)); | |
| 2696 | +// search_view.search(cx); | |
| 2697 | +// }); | |
| 2698 | +// cx.foreground().run_until_parked(); | |
| 2699 | +// search_view.update(cx, |search_view, cx| { | |
| 2700 | +// search_view.query_editor.update(cx, |query_editor, cx| { | |
| 2701 | +// query_editor.set_text("JUST_TEXT_INPUT", cx) | |
| 2702 | +// }); | |
| 2703 | +// }); | |
| 2704 | +// cx.foreground().run_until_parked(); | |
| 2730 | 2705 | |
| 2731 | − // First previous query for empty current query should set the query to the latest submitted one. | |
| 2732 | − search_bar.update(cx, |search_bar, cx| { | |
| 2733 | − search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2734 | − }); | |
| 2735 | − search_view.update(cx, |search_view, cx| { | |
| 2736 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "THREE"); | |
| 2737 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2738 | − }); | |
| 2706 | +// // Ensure that the latest input with search settings is active. | |
| 2707 | +// search_view.update(cx, |search_view, cx| { | |
| 2708 | +// assert_eq!( | |
| 2709 | +// search_view.query_editor.read(cx).text(cx), | |
| 2710 | +// "JUST_TEXT_INPUT" | |
| 2711 | +// ); | |
| 2712 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2713 | +// }); | |
| 2739 | 2714 | |
| 2740 | − // Further previous items should go over the history in reverse order. | |
| 2741 | − search_bar.update(cx, |search_bar, cx| { | |
| 2742 | − search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2743 | − }); | |
| 2744 | − search_view.update(cx, |search_view, cx| { | |
| 2745 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO"); | |
| 2746 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2747 | − }); | |
| 2715 | +// // Next history query after the latest should set the query to the empty string. | |
| 2716 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2717 | +// search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2718 | +// }); | |
| 2719 | +// search_view.update(cx, |search_view, cx| { | |
| 2720 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), ""); | |
| 2721 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2722 | +// }); | |
| 2723 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2724 | +// search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2725 | +// }); | |
| 2726 | +// search_view.update(cx, |search_view, cx| { | |
| 2727 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), ""); | |
| 2728 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2729 | +// }); | |
| 2748 | 2730 | |
| 2749 | − // Previous items should never go behind the first history item. | |
| 2750 | − search_bar.update(cx, |search_bar, cx| { | |
| 2751 | − search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2752 | − }); | |
| 2753 | − search_view.update(cx, |search_view, cx| { | |
| 2754 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "ONE"); | |
| 2755 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2756 | − }); | |
| 2757 | − search_bar.update(cx, |search_bar, cx| { | |
| 2758 | − search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2759 | − }); | |
| 2760 | − search_view.update(cx, |search_view, cx| { | |
| 2761 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "ONE"); | |
| 2762 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2763 | − }); | |
| 2731 | +// // First previous query for empty current query should set the query to the latest submitted one. | |
| 2732 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2733 | +// search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2734 | +// }); | |
| 2735 | +// search_view.update(cx, |search_view, cx| { | |
| 2736 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "THREE"); | |
| 2737 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2738 | +// }); | |
| 2764 | 2739 | |
| 2765 | − // Next items should go over the history in the original order. | |
| 2766 | − search_bar.update(cx, |search_bar, cx| { | |
| 2767 | − search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2768 | − }); | |
| 2769 | − search_view.update(cx, |search_view, cx| { | |
| 2770 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO"); | |
| 2771 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2772 | − }); | |
| 2740 | +// // Further previous items should go over the history in reverse order. | |
| 2741 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2742 | +// search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2743 | +// }); | |
| 2744 | +// search_view.update(cx, |search_view, cx| { | |
| 2745 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO"); | |
| 2746 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2747 | +// }); | |
| 2773 | 2748 | |
| 2774 | − search_view.update(cx, |search_view, cx| { | |
| 2775 | − search_view | |
| 2776 | − .query_editor | |
| 2777 | − .update(cx, |query_editor, cx| query_editor.set_text("TWO_NEW", cx)); | |
| 2778 | − search_view.search(cx); | |
| 2779 | − }); | |
| 2780 | − cx.foreground().run_until_parked(); | |
| 2781 | − search_view.update(cx, |search_view, cx| { | |
| 2782 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO_NEW"); | |
| 2783 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2784 | − }); | |
| 2749 | +// // Previous items should never go behind the first history item. | |
| 2750 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2751 | +// search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2752 | +// }); | |
| 2753 | +// search_view.update(cx, |search_view, cx| { | |
| 2754 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "ONE"); | |
| 2755 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2756 | +// }); | |
| 2757 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2758 | +// search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2759 | +// }); | |
| 2760 | +// search_view.update(cx, |search_view, cx| { | |
| 2761 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "ONE"); | |
| 2762 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2763 | +// }); | |
| 2785 | 2764 | |
| 2786 | − // New search input should add another entry to history and move the selection to the end of the history. | |
| 2787 | − search_bar.update(cx, |search_bar, cx| { | |
| 2788 | − search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2789 | − }); | |
| 2790 | − search_view.update(cx, |search_view, cx| { | |
| 2791 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "THREE"); | |
| 2792 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2793 | − }); | |
| 2794 | − search_bar.update(cx, |search_bar, cx| { | |
| 2795 | − search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2796 | − }); | |
| 2797 | − search_view.update(cx, |search_view, cx| { | |
| 2798 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO"); | |
| 2799 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2800 | − }); | |
| 2801 | − search_bar.update(cx, |search_bar, cx| { | |
| 2802 | − search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2803 | − }); | |
| 2804 | − search_view.update(cx, |search_view, cx| { | |
| 2805 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "THREE"); | |
| 2806 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2807 | − }); | |
| 2808 | − search_bar.update(cx, |search_bar, cx| { | |
| 2809 | − search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2810 | − }); | |
| 2811 | − search_view.update(cx, |search_view, cx| { | |
| 2812 | − assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO_NEW"); | |
| 2813 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2814 | − }); | |
| 2815 | − search_bar.update(cx, |search_bar, cx| { | |
| 2816 | − search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2817 | − }); | |
| 2818 | − search_view.update(cx, |search_view, cx| { | |
| 2819 | − assert_eq!(search_view.query_editor.read(cx).text(cx), ""); | |
| 2820 | − assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2821 | − }); | |
| 2822 | − } | |
| 2765 | +// // Next items should go over the history in the original order. | |
| 2766 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2767 | +// search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2768 | +// }); | |
| 2769 | +// search_view.update(cx, |search_view, cx| { | |
| 2770 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO"); | |
| 2771 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2772 | +// }); | |
| 2823 | 2773 | |
| 2824 | − pub fn init_test(cx: &mut TestAppContext) { | |
| 2825 | − cx.foreground().forbid_parking(); | |
| 2826 | − let fonts = cx.font_cache(); | |
| 2827 | − let mut theme = gpui::fonts::with_font_cache(fonts.clone(), theme::Theme::default); | |
| 2828 | − theme.search.match_background = Color::red(); | |
| 2774 | +// search_view.update(cx, |search_view, cx| { | |
| 2775 | +// search_view | |
| 2776 | +// .query_editor | |
| 2777 | +// .update(cx, |query_editor, cx| query_editor.set_text("TWO_NEW", cx)); | |
| 2778 | +// search_view.search(cx); | |
| 2779 | +// }); | |
| 2780 | +// cx.foreground().run_until_parked(); | |
| 2781 | +// search_view.update(cx, |search_view, cx| { | |
| 2782 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO_NEW"); | |
| 2783 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2784 | +// }); | |
| 2829 | 2785 | |
| 2830 | − cx.update(|cx| { | |
| 2831 | − cx.set_global(SettingsStore::test(cx)); | |
| 2832 | − cx.set_global(ActiveSearches::default()); | |
| 2833 | − settings::register::<SemanticIndexSettings>(cx); | |
| 2786 | +// // New search input should add another entry to history and move the selection to the end of the history. | |
| 2787 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2788 | +// search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2789 | +// }); | |
| 2790 | +// search_view.update(cx, |search_view, cx| { | |
| 2791 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "THREE"); | |
| 2792 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2793 | +// }); | |
| 2794 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2795 | +// search_bar.previous_history_query(&PreviousHistoryQuery, cx); | |
| 2796 | +// }); | |
| 2797 | +// search_view.update(cx, |search_view, cx| { | |
| 2798 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO"); | |
| 2799 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2800 | +// }); | |
| 2801 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2802 | +// search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2803 | +// }); | |
| 2804 | +// search_view.update(cx, |search_view, cx| { | |
| 2805 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "THREE"); | |
| 2806 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2807 | +// }); | |
| 2808 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2809 | +// search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2810 | +// }); | |
| 2811 | +// search_view.update(cx, |search_view, cx| { | |
| 2812 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), "TWO_NEW"); | |
| 2813 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2814 | +// }); | |
| 2815 | +// search_bar.update(cx, |search_bar, cx| { | |
| 2816 | +// search_bar.next_history_query(&NextHistoryQuery, cx); | |
| 2817 | +// }); | |
| 2818 | +// search_view.update(cx, |search_view, cx| { | |
| 2819 | +// assert_eq!(search_view.query_editor.read(cx).text(cx), ""); | |
| 2820 | +// assert_eq!(search_view.search_options, SearchOptions::CASE_SENSITIVE); | |
| 2821 | +// }); | |
| 2822 | +// } | |
| 2834 | 2823 | |
| 2835 | − theme::init((), cx); | |
| 2836 | − cx.update_global::<SettingsStore, _, _>(|store, _| { | |
| 2837 | − let mut settings = store.get::<ThemeSettings>(None).clone(); | |
| 2838 | − settings.theme = Arc::new(theme); | |
| 2839 | − store.override_global(settings) | |
| 2840 | − }); | |
| 2824 | +// pub fn init_test(cx: &mut TestAppContext) { | |
| 2825 | +// cx.foreground().forbid_parking(); | |
| 2826 | +// let fonts = cx.font_cache(); | |
| 2827 | +// let mut theme = gpui::fonts::with_font_cache(fonts.clone(), theme::Theme::default); | |
| 2828 | +// theme.search.match_background = Color::red(); | |
| 2829 | + | |
| 2830 | +// cx.update(|cx| { | |
| 2831 | +// cx.set_global(SettingsStore::test(cx)); | |
| 2832 | +// cx.set_global(ActiveSearches::default()); | |
| 2833 | +// settings::register::<SemanticIndexSettings>(cx); | |
| 2834 | + | |
| 2835 | +// theme::init((), cx); | |
| 2836 | +// cx.update_global::<SettingsStore, _, _>(|store, _| { | |
| 2837 | +// let mut settings = store.get::<ThemeSettings>(None).clone(); | |
| 2838 | +// settings.theme = Arc::new(theme); | |
| 2839 | +// store.override_global(settings) | |
| 2840 | +// }); | |
| 2841 | 2841 | |
| 2842 | − language::init(cx); | |
| 2843 | − client::init_settings(cx); | |
| 2844 | − editor::init(cx); | |
| 2845 | − workspace::init_settings(cx); | |
| 2846 | − Project::init_settings(cx); | |
| 2847 | − super::init(cx); | |
| 2848 | − }); | |
| 2849 | − } | |
| 2850 | −} | |
| 2842 | +// language::init(cx); | |
| 2843 | +// client::init_settings(cx); | |
| 2844 | +// editor::init(cx); | |
| 2845 | +// workspace::init_settings(cx); | |
| 2846 | +// Project::init_settings(cx); | |
| 2847 | +// super::init(cx); | |
| 2848 | +// }); | |
| 2849 | +// } | |
| 2850 | +// } | |