Includes prior-session patches (carry forward so the app compiles): - crates/gpui/build.rs: cross-compile manifest fix - crates/gpui/src/platform.rs: PlatformWindow::activate_with_token trait method - crates/gpui/src/window.rs: Window::activate_with_token public API - crates/gpui_linux/src/linux/wayland/window.rs: WaylandWindow::activate_with_token + activate() keyboard-serial fix Plus the focus-serial fix: - serial.rs: SerialKind::KeyboardEnter - client.rs: store wl_keyboard.enter serial; latest_serial_of() Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
75 lines
2.2 KiB
Rust
75 lines
2.2 KiB
Rust
use std::path::Path;
|
|
|
|
use language::{CodeLabel, HighlightId};
|
|
|
|
use project::lsp_store::*;
|
|
|
|
#[test]
|
|
fn test_glob_literal_prefix() {
|
|
assert_eq!(glob_literal_prefix(Path::new("**/*.js")), Path::new(""));
|
|
assert_eq!(
|
|
glob_literal_prefix(Path::new("node_modules/**/*.js")),
|
|
Path::new("node_modules")
|
|
);
|
|
assert_eq!(
|
|
glob_literal_prefix(Path::new("foo/{bar,baz}.js")),
|
|
Path::new("foo")
|
|
);
|
|
assert_eq!(
|
|
glob_literal_prefix(Path::new("foo/bar/baz.js")),
|
|
Path::new("foo/bar/baz.js")
|
|
);
|
|
|
|
#[cfg(target_os = "windows")]
|
|
{
|
|
assert_eq!(glob_literal_prefix(Path::new("**\\*.js")), Path::new(""));
|
|
assert_eq!(
|
|
glob_literal_prefix(Path::new("node_modules\\**/*.js")),
|
|
Path::new("node_modules")
|
|
);
|
|
assert_eq!(
|
|
glob_literal_prefix(Path::new("foo/{bar,baz}.js")),
|
|
Path::new("foo")
|
|
);
|
|
assert_eq!(
|
|
glob_literal_prefix(Path::new("foo\\bar\\baz.js")),
|
|
Path::new("foo/bar/baz.js")
|
|
);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_multi_len_chars_normalization() {
|
|
let mut label = CodeLabel::new(
|
|
"myElˇ (parameter) myElˇ: {\n foo: string;\n}".to_string(),
|
|
0..6,
|
|
vec![(0..6, HighlightId::new(1))],
|
|
);
|
|
ensure_uniform_list_compatible_label(&mut label);
|
|
assert_eq!(
|
|
label,
|
|
CodeLabel::new(
|
|
"myElˇ (parameter) myElˇ: { foo: string; }".to_string(),
|
|
0..6,
|
|
vec![(0..6, HighlightId::new(1))],
|
|
)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_trailing_newline_in_completion_documentation() {
|
|
let doc =
|
|
lsp::Documentation::String("Inappropriate argument value (of correct type).\n".to_string());
|
|
let completion_doc: CompletionDocumentation = doc.into();
|
|
assert!(
|
|
matches!(completion_doc, CompletionDocumentation::SingleLine(s) if s == "Inappropriate argument value (of correct type).")
|
|
);
|
|
|
|
let doc = lsp::Documentation::String(" some value \n".to_string());
|
|
let completion_doc: CompletionDocumentation = doc.into();
|
|
assert!(matches!(
|
|
completion_doc,
|
|
CompletionDocumentation::SingleLine(s) if s == "some value"
|
|
));
|
|
}
|