Initial public release of Warp.

Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
David Stern
2026-04-28 08:43:33 -05:00
commit 0dbd3d567a
4982 changed files with 1431549 additions and 0 deletions
+118
View File
@@ -0,0 +1,118 @@
use std::fs;
use std::path::Path;
use super::migrate_config_dir_via_symlinks;
fn is_symlink_to(link: &Path, expected_target: &Path) -> bool {
match fs::read_link(link) {
Ok(target) => target == expected_target,
Err(_) => false,
}
}
#[test]
fn creates_symlinks_for_top_level_entries() {
let tmp = tempfile::tempdir().unwrap();
let old_dir = tmp.path().join(".warp");
let new_dir = tmp.path().join(".warp-preview");
fs::create_dir(&old_dir).unwrap();
fs::write(old_dir.join("keybindings.yaml"), "bindings").unwrap();
fs::create_dir(old_dir.join("themes")).unwrap();
fs::write(old_dir.join("themes").join("dark.yaml"), "theme").unwrap();
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
assert!(new_dir.is_dir());
assert!(is_symlink_to(
&new_dir.join("keybindings.yaml"),
&old_dir.join("keybindings.yaml"),
));
assert!(is_symlink_to(
&new_dir.join("themes"),
&old_dir.join("themes"),
));
// Content is reachable through the symlink.
assert_eq!(
fs::read_to_string(new_dir.join("keybindings.yaml")).unwrap(),
"bindings",
);
}
#[test]
fn skips_when_new_dir_already_exists() {
let tmp = tempfile::tempdir().unwrap();
let old_dir = tmp.path().join(".warp");
let new_dir = tmp.path().join(".warp-preview");
fs::create_dir(&old_dir).unwrap();
fs::write(old_dir.join("keybindings.yaml"), "bindings").unwrap();
fs::create_dir(&new_dir).unwrap();
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
// new_dir should remain empty — no symlinks created.
assert_eq!(fs::read_dir(&new_dir).unwrap().count(), 0);
}
#[test]
fn skips_when_old_dir_does_not_exist() {
let tmp = tempfile::tempdir().unwrap();
let old_dir = tmp.path().join(".warp");
let new_dir = tmp.path().join(".warp-preview");
// old_dir intentionally not created.
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
assert!(!new_dir.exists());
}
#[test]
fn skips_ds_store_and_dot_underscore_files() {
let tmp = tempfile::tempdir().unwrap();
let old_dir = tmp.path().join(".warp");
let new_dir = tmp.path().join(".warp-preview");
fs::create_dir(&old_dir).unwrap();
fs::write(old_dir.join(".DS_Store"), "metadata").unwrap();
fs::write(old_dir.join("._somefile"), "resource fork").unwrap();
fs::write(old_dir.join("keybindings.yaml"), "bindings").unwrap();
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
assert!(!new_dir.join(".DS_Store").exists());
assert!(!new_dir.join("._somefile").exists());
assert!(new_dir.join("keybindings.yaml").exists());
}
#[test]
fn skips_excluded_files() {
let tmp = tempfile::tempdir().unwrap();
let old_dir = tmp.path().join(".warp");
let new_dir = tmp.path().join(".warp-preview");
fs::create_dir(&old_dir).unwrap();
fs::write(old_dir.join("settings.toml"), "[settings]").unwrap();
fs::write(old_dir.join("keybindings.yaml"), "bindings").unwrap();
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
assert!(!new_dir.join("settings.toml").exists());
assert!(new_dir.join("keybindings.yaml").exists());
}
#[test]
fn is_idempotent() {
let tmp = tempfile::tempdir().unwrap();
let old_dir = tmp.path().join(".warp");
let new_dir = tmp.path().join(".warp-preview");
fs::create_dir(&old_dir).unwrap();
fs::write(old_dir.join("keybindings.yaml"), "bindings").unwrap();
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
// Second call should be a no-op (new_dir already exists).
migrate_config_dir_via_symlinks(&old_dir, &new_dir);
assert_eq!(fs::read_dir(&new_dir).unwrap().count(), 1);
}