mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-24 21:59:04 +00:00
Building project tests takes 6.5s instead of 18s that way. Release Notes: - N/A --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
78 lines
2.6 KiB
Rust
78 lines
2.6 KiB
Rust
use fs::FakeFs;
|
|
use gpui::TestAppContext;
|
|
use project::Project;
|
|
use project::ProjectPath;
|
|
use project::image_store::*;
|
|
use serde_json::json;
|
|
use settings::SettingsStore;
|
|
use util::rel_path::rel_path;
|
|
|
|
pub fn init_test(cx: &mut TestAppContext) {
|
|
zlog::init_test();
|
|
|
|
cx.update(|cx| {
|
|
let settings_store = SettingsStore::test(cx);
|
|
cx.set_global(settings_store);
|
|
});
|
|
}
|
|
|
|
#[gpui::test]
|
|
async fn test_image_not_loaded_twice(cx: &mut TestAppContext) {
|
|
init_test(cx);
|
|
let fs = FakeFs::new(cx.executor());
|
|
|
|
fs.insert_tree("/root", json!({})).await;
|
|
// Create a png file that consists of a single white pixel
|
|
fs.insert_file(
|
|
"/root/image_1.png",
|
|
vec![
|
|
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48,
|
|
0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x06, 0x00, 0x00,
|
|
0x00, 0x1F, 0x15, 0xC4, 0x89, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x44, 0x41, 0x54, 0x78,
|
|
0x9C, 0x63, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0D, 0x0A, 0x2D, 0xB4, 0x00,
|
|
0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82,
|
|
],
|
|
)
|
|
.await;
|
|
|
|
let project = Project::test(fs, ["/root".as_ref()], cx).await;
|
|
|
|
let worktree_id = cx.update(|cx| project.read(cx).worktrees(cx).next().unwrap().read(cx).id());
|
|
|
|
let project_path = ProjectPath {
|
|
worktree_id,
|
|
path: rel_path("image_1.png").into(),
|
|
};
|
|
|
|
let (task1, task2) = project.update(cx, |project, cx| {
|
|
(
|
|
project.open_image(project_path.clone(), cx),
|
|
project.open_image(project_path.clone(), cx),
|
|
)
|
|
});
|
|
|
|
let image1 = task1.await.unwrap();
|
|
let image2 = task2.await.unwrap();
|
|
|
|
assert_eq!(image1, image2);
|
|
}
|
|
|
|
#[gpui::test]
|
|
fn test_compute_metadata_from_bytes() {
|
|
// Single white pixel PNG
|
|
let png_bytes = vec![
|
|
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44,
|
|
0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F,
|
|
0x15, 0xC4, 0x89, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9C, 0x63, 0x00,
|
|
0x01, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0D, 0x0A, 0x2D, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x49,
|
|
0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82,
|
|
];
|
|
|
|
let metadata = ImageItem::compute_metadata_from_bytes(&png_bytes).unwrap();
|
|
|
|
assert_eq!(metadata.width, 1);
|
|
assert_eq!(metadata.height, 1);
|
|
assert_eq!(metadata.file_size, png_bytes.len() as u64);
|
|
assert_eq!(metadata.format, image::ImageFormat::Png);
|
|
assert!(metadata.colors.is_some());
|
|
}
|