feat: add main features
Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
This commit is contained in:
70
crates/infrastructure/tests/remote_host.rs
Normal file
70
crates/infrastructure/tests/remote_host.rs
Normal file
@ -0,0 +1,70 @@
|
||||
//! L9 tests for the local remote-host strategy and the host selector.
|
||||
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
|
||||
use domain::ports::{RemoteError, RemoteHost, RemotePath};
|
||||
use domain::remote::{RemoteKind, RemoteRef, SshAuth};
|
||||
use infrastructure::{remote_host, LocalHost};
|
||||
use uuid::Uuid;
|
||||
|
||||
struct TempDir(PathBuf);
|
||||
impl TempDir {
|
||||
fn new() -> Self {
|
||||
let p = std::env::temp_dir().join(format!("idea-l9-host-{}", Uuid::new_v4()));
|
||||
std::fs::create_dir_all(&p).unwrap();
|
||||
Self(p)
|
||||
}
|
||||
fn path(&self) -> String {
|
||||
self.0.to_string_lossy().into_owned()
|
||||
}
|
||||
}
|
||||
impl Drop for TempDir {
|
||||
fn drop(&mut self) {
|
||||
let _ = std::fs::remove_dir_all(&self.0);
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn local_host_connects_and_exposes_local_fs() {
|
||||
let tmp = TempDir::new();
|
||||
let host = LocalHost::new();
|
||||
assert_eq!(host.kind(), RemoteKind::Local);
|
||||
host.connect().await.expect("local connect is a no-op");
|
||||
|
||||
let fs = host.file_system();
|
||||
assert!(fs.exists(&RemotePath::new(tmp.path())).await.unwrap());
|
||||
assert!(!fs
|
||||
.exists(&RemotePath::new(format!("{}/nope", tmp.path())))
|
||||
.await
|
||||
.unwrap());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn selector_builds_local_host() {
|
||||
let host = remote_host(&RemoteRef::local()).expect("local host builds");
|
||||
assert_eq!(host.kind(), RemoteKind::Local);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn selector_rejects_ssh_and_wsl_for_now() {
|
||||
let ssh = RemoteRef::ssh("h", 22, "u", SshAuth::Agent, "/srv").unwrap();
|
||||
assert!(matches!(
|
||||
remote_host(&ssh),
|
||||
Err(RemoteError::Connection(_))
|
||||
));
|
||||
let wsl = RemoteRef::wsl("Ubuntu").unwrap();
|
||||
assert!(matches!(
|
||||
remote_host(&wsl),
|
||||
Err(RemoteError::Connection(_))
|
||||
));
|
||||
}
|
||||
|
||||
/// Local host PTY/spawner handles are cloneable port objects (Arc-backed).
|
||||
#[test]
|
||||
fn local_host_hands_out_ports() {
|
||||
let host: Arc<dyn RemoteHost> = Arc::new(LocalHost::new());
|
||||
let _fs = host.file_system();
|
||||
let _sp = host.process_spawner();
|
||||
let _pty = host.pty();
|
||||
}
|
||||
Reference in New Issue
Block a user