first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
@@ -0,0 +1,84 @@
use super::*;
fn status(state: RemoteCodebaseIndexState) -> RemoteCodebaseIndexStatus {
RemoteCodebaseIndexStatus {
repo_path: "/repo".to_string(),
state,
last_updated_epoch_millis: Some(42),
progress_completed: None,
progress_total: None,
failure_message: None,
root_hash: None,
}
}
#[test]
fn all_status_states_round_trip_through_proto() {
for state in [
RemoteCodebaseIndexState::NotEnabled,
RemoteCodebaseIndexState::Unavailable,
RemoteCodebaseIndexState::Disabled,
RemoteCodebaseIndexState::Queued,
RemoteCodebaseIndexState::Indexing,
RemoteCodebaseIndexState::Ready,
RemoteCodebaseIndexState::Stale,
RemoteCodebaseIndexState::Failed,
] {
let status = status(state);
let proto = proto::CodebaseIndexStatus::from(&status);
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
}
}
#[test]
fn ready_status_round_trips_retrieval_metadata() {
let status = RemoteCodebaseIndexStatus {
root_hash: Some("root-hash".to_string()),
..status(RemoteCodebaseIndexState::Ready)
};
let proto = proto::CodebaseIndexStatus::from(&status);
assert_eq!(proto.root_hash.as_deref(), Some("root-hash"));
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
}
#[test]
fn indexing_status_round_trips_progress() {
let status = RemoteCodebaseIndexStatus {
progress_completed: Some(7),
progress_total: Some(11),
..status(RemoteCodebaseIndexState::Indexing)
};
let proto = proto::CodebaseIndexStatus::from(&status);
assert_eq!(proto.progress_completed, Some(7));
assert_eq!(proto.progress_total, Some(11));
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
}
#[test]
fn failed_status_round_trips_failure_message() {
let status = RemoteCodebaseIndexStatus {
failure_message: Some("failed to sync".to_string()),
..status(RemoteCodebaseIndexState::Failed)
};
let proto = proto::CodebaseIndexStatus::from(&status);
assert_eq!(proto.failure_message.as_deref(), Some("failed to sync"));
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
}
#[test]
fn unspecified_status_state_is_ignored() {
let status = proto::CodebaseIndexStatus {
repo_path: "/repo".to_string(),
state: proto::CodebaseIndexStatusState::Unspecified as i32,
last_updated_epoch_millis: None,
progress_completed: None,
progress_total: None,
failure_message: None,
root_hash: None,
};
assert_eq!(proto_to_codebase_index_status(&status), None);
}