Bring back zed.rs tests (#3907)

At present 3 tests still fail; 2 are related to keymap issues that (I
believe) @maxbrunsfeld is working on. The other one
(`test_open_paths_action`) I'll look into. edit: done
This PR also fixes workspace unregistration, as we've put the code to do
that behind `debug_assert`
(https://github.com/zed-industries/zed/pull/3907/files#diff-041673bbd1947a35d45945636c0055429dfc8b5985faf93f8a8a960c9ad31e28L649).
Release Notes:
- N/A
This commit is contained in:
Piotr Osiewicz 2024-01-08 12:29:54 +01:00 committed by GitHub
parent d475f1373a
commit 53564fb269
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 2132 additions and 1869 deletions

View file

@ -532,6 +532,33 @@ impl<'a> VisualTestContext {
}
self.background_executor.run_until_parked();
}
/// Returns true if the window was closed.
pub fn simulate_close(&mut self) -> bool {
let handler = self
.cx
.update_window(self.window, |_, cx| {
cx.window
.platform_window
.as_test()
.unwrap()
.0
.lock()
.should_close_handler
.take()
})
.unwrap();
if let Some(mut handler) = handler {
let should_close = handler();
self.cx
.update_window(self.window, |_, cx| {
cx.window.platform_window.on_should_close(handler);
})
.unwrap();
should_close
} else {
false
}
}
}
impl Context for VisualTestContext {

View file

@ -266,7 +266,7 @@ impl Platform for TestPlatform {
}
fn local_timezone(&self) -> time::UtcOffset {
unimplemented!()
time::UtcOffset::UTC
}
fn path_for_auxiliary_executable(&self, _name: &str) -> Result<std::path::PathBuf> {

View file

@ -18,7 +18,7 @@ pub struct TestWindowState {
pub(crate) edited: bool,
platform: Weak<TestPlatform>,
sprite_atlas: Arc<dyn PlatformAtlas>,
pub(crate) should_close_handler: Option<Box<dyn FnMut() -> bool>>,
input_callback: Option<Box<dyn FnMut(InputEvent) -> bool>>,
active_status_change_callback: Option<Box<dyn FnMut(bool)>>,
resize_callback: Option<Box<dyn FnMut(Size<Pixels>, f32)>>,
@ -44,7 +44,7 @@ impl TestWindow {
sprite_atlas: Arc::new(TestAtlas::new()),
title: Default::default(),
edited: false,
should_close_handler: None,
input_callback: None,
active_status_change_callback: None,
resize_callback: None,
@ -117,6 +117,9 @@ impl TestWindow {
self.0.lock().input_handler = Some(input_handler);
}
pub fn edited(&self) -> bool {
self.0.lock().edited
}
}
impl PlatformWindow for TestWindow {
@ -235,8 +238,8 @@ impl PlatformWindow for TestWindow {
self.0.lock().moved_callback = Some(callback)
}
fn on_should_close(&self, _callback: Box<dyn FnMut() -> bool>) {
unimplemented!()
fn on_should_close(&self, callback: Box<dyn FnMut() -> bool>) {
self.0.lock().should_close_handler = Some(callback);
}
fn on_close(&self, _callback: Box<dyn FnOnce()>) {

View file

@ -6,7 +6,7 @@ use crate::{
};
use anyhow::{Context, Result};
use std::{
any::TypeId,
any::{type_name, TypeId},
fmt,
hash::{Hash, Hasher},
};
@ -104,6 +104,14 @@ impl<V> Clone for View<V> {
}
}
impl<T> std::fmt::Debug for View<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct(&format!("View<{}>", type_name::<T>()))
.field("entity_id", &self.model.entity_id)
.finish_non_exhaustive()
}
}
impl<V> Hash for View<V> {
fn hash<H: Hasher>(&self, state: &mut H) {
self.model.hash(state);

View file

@ -658,7 +658,7 @@ impl Workspace {
cx.on_release(|this, window, cx| {
this.app_state.workspace_store.update(cx, |store, _| {
let window = window.downcast::<Self>().unwrap();
debug_assert!(store.workspaces.remove(&window));
store.workspaces.remove(&window);
})
}),
];

View file

@ -146,8 +146,7 @@ uuid.workspace = true
[dev-dependencies]
call = { path = "../call", features = ["test-support"] }
# client = { path = "../client", features = ["test-support"] }
# editor = { path = "../editor", features = ["test-support"] }
# gpui = { path = "../gpui", features = ["test-support"] }
editor = { path = "../editor", features = ["test-support"] }
gpui = { path = "../gpui", features = ["test-support"] }
language = { path = "../language", features = ["test-support"] }
# lsp = { path = "../lsp", features = ["test-support"] }
@ -156,7 +155,7 @@ project = { path = "../project", features = ["test-support"] }
# settings = { path = "../settings", features = ["test-support"] }
text = { path = "../text", features = ["test-support"] }
# util = { path = "../util", features = ["test-support"] }
# workspace = { path = "../workspace", features = ["test-support"] }
workspace = { path = "../workspace", features = ["test-support"] }
unindent.workspace = true
[package.metadata.bundle-dev]

File diff suppressed because it is too large Load diff