fix: keep unmanaged workdirs out of managed lists
This commit is contained in:
@@ -3301,7 +3301,7 @@ fn working_directory_summaries(api: &WorkspaceApi) -> ApiResult<Vec<WorkingDirec
|
||||
let _ = sync_all_runtime_workdir_observations(api);
|
||||
let records = api
|
||||
.store
|
||||
.list_workdir_registry(&api.config.workspace_id, 200)?;
|
||||
.list_managed_workdir_registry(&api.config.workspace_id, 200)?;
|
||||
Ok(records
|
||||
.iter()
|
||||
.map(workdir_summary_from_record)
|
||||
@@ -4297,6 +4297,59 @@ mod tests {
|
||||
assert!(!serialized.contains("materialized_path"));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn workspace_managed_workdir_summaries_exclude_runtime_unmanaged_rows() {
|
||||
let dir = tempfile::tempdir().unwrap();
|
||||
let api = test_api(dir.path()).await;
|
||||
api.store
|
||||
.upsert_workdir_registry(&WorkdirRegistryRecord {
|
||||
workspace_id: TEST_WORKSPACE_ID.to_string(),
|
||||
workdir_id: "managed".to_string(),
|
||||
runtime_id: EMBEDDED_WORKER_RUNTIME_ID.to_string(),
|
||||
repository_id: "repo".to_string(),
|
||||
selector: None,
|
||||
resolved_commit: None,
|
||||
materialization_status: "present".to_string(),
|
||||
cleanliness: "clean".to_string(),
|
||||
management_kind: "backend_managed".to_string(),
|
||||
created_at: "1".to_string(),
|
||||
updated_at: "1".to_string(),
|
||||
})
|
||||
.unwrap();
|
||||
api.store
|
||||
.upsert_workdir_registry(&WorkdirRegistryRecord {
|
||||
workspace_id: TEST_WORKSPACE_ID.to_string(),
|
||||
workdir_id: "runtime-direct".to_string(),
|
||||
runtime_id: EMBEDDED_WORKER_RUNTIME_ID.to_string(),
|
||||
repository_id: "repo".to_string(),
|
||||
selector: None,
|
||||
resolved_commit: None,
|
||||
materialization_status: "present".to_string(),
|
||||
cleanliness: "unknown".to_string(),
|
||||
management_kind: "runtime_unmanaged".to_string(),
|
||||
created_at: "1".to_string(),
|
||||
updated_at: "2".to_string(),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let managed = working_directory_summaries(&api)
|
||||
.unwrap_or_else(|err| panic!("working_directory_summaries failed: {}", err.error));
|
||||
assert_eq!(managed.len(), 1);
|
||||
assert_eq!(managed[0].working_directory_id, "managed");
|
||||
assert_eq!(
|
||||
managed[0].management_kind.as_deref(),
|
||||
Some("backend_managed")
|
||||
);
|
||||
|
||||
let (runtime_projection, _) =
|
||||
runtime_working_directory_summaries(&api, EMBEDDED_WORKER_RUNTIME_ID).unwrap_or_else(
|
||||
|err| panic!("runtime_working_directory_summaries failed: {}", err.error),
|
||||
);
|
||||
assert!(runtime_projection.iter().any(|summary| {
|
||||
summary.working_directory_id == "runtime-direct"
|
||||
&& summary.management_kind.as_deref() == Some("runtime_unmanaged")
|
||||
}));
|
||||
}
|
||||
#[test]
|
||||
fn unmanaged_runtime_workdir_projection_is_typed_and_diagnostic_safe() {
|
||||
let workdir = WorkdirRegistryRecord {
|
||||
|
||||
@@ -1272,6 +1272,20 @@ mod tests {
|
||||
updated_at: "3".to_string(),
|
||||
};
|
||||
store.upsert_workdir_registry(&workdir).unwrap();
|
||||
let unmanaged_workdir = WorkdirRegistryRecord {
|
||||
workspace_id: "local-dev".to_string(),
|
||||
workdir_id: "runtime-direct".to_string(),
|
||||
runtime_id: "embedded".to_string(),
|
||||
repository_id: "repo".to_string(),
|
||||
selector: Some("feature".to_string()),
|
||||
resolved_commit: Some("123456".to_string()),
|
||||
materialization_status: "present".to_string(),
|
||||
cleanliness: "unknown".to_string(),
|
||||
management_kind: "runtime_unmanaged".to_string(),
|
||||
created_at: "3".to_string(),
|
||||
updated_at: "4".to_string(),
|
||||
};
|
||||
store.upsert_workdir_registry(&unmanaged_workdir).unwrap();
|
||||
|
||||
let link = WorkerWorkdirLinkRecord {
|
||||
workspace_id: "local-dev".to_string(),
|
||||
@@ -1295,6 +1309,10 @@ mod tests {
|
||||
.unwrap(),
|
||||
Some(workdir.clone())
|
||||
);
|
||||
assert_eq!(
|
||||
store.list_workdir_registry("local-dev", 10).unwrap(),
|
||||
vec![unmanaged_workdir.clone(), workdir.clone()]
|
||||
);
|
||||
assert_eq!(
|
||||
store
|
||||
.list_managed_workdir_registry("local-dev", 10)
|
||||
|
||||
Reference in New Issue
Block a user