Update public bundle metadata contract

This commit is contained in:
Michel Paulissen 2026-07-04 10:22:53 +02:00
parent c4d8d94f49
commit c4141e0dee
6 changed files with 204 additions and 5 deletions

View file

@ -4316,8 +4316,11 @@ fn bundle_inspection(args: BundleInspectArgs, cwd: PathBuf) -> Result<BundleInsp
let identity_inputs = BundleIdentityInputs {
wasm_code: wasm_source_proxy_digest(&selected_inputs),
task_abi: task_abi_digest(&model),
entrypoints: model.entrypoints.keys().cloned().collect(),
default_entrypoint: model.default_entrypoint.clone(),
environments: model.environments.clone(),
source_provider_manifest: source_provider_manifest.digest.clone(),
source_transfer_policy: source_provider_manifest.transfer_policy.clone(),
selected_inputs,
};
let pre_schedule_diagnostics = pre_schedule_diagnostics(
@ -5951,12 +5954,18 @@ mod tests {
fn bundle_inspect_discovers_environments_selected_inputs_and_source_providers() {
let temp = tempfile::tempdir().unwrap();
fs::create_dir_all(temp.path().join("envs/linux")).unwrap();
fs::create_dir_all(temp.path().join("envs/docker")).unwrap();
fs::create_dir_all(temp.path().join("src")).unwrap();
fs::write(
temp.path().join("envs/linux/Containerfile"),
"FROM alpine\n",
)
.unwrap();
fs::write(
temp.path().join("envs/docker/Dockerfile"),
"FROM debian:stable-slim\n",
)
.unwrap();
fs::write(temp.path().join("Cargo.toml"), "[package]\nname='demo'\n").unwrap();
fs::write(temp.path().join("src/main.rs"), "fn main() {}\n").unwrap();
@ -6003,7 +6012,62 @@ mod tests {
.transfer_policy
.default_full_repo_tarball
);
assert_eq!(inspection.metadata.environments[0].name, "linux");
assert!(inspection
.metadata
.environments
.iter()
.any(|environment| environment.name == "linux"));
assert!(inspection
.metadata
.environments
.iter()
.any(|environment| environment.name == "docker"));
assert_eq!(
inspection.metadata.source_metadata.source_provider_manifest,
inspection.source_provider_manifest.digest
);
assert!(
inspection
.metadata
.source_metadata
.transfer_policy
.local_source_bytes_remain_node_local
);
assert!(
!inspection
.metadata
.source_metadata
.transfer_policy
.coordinator_receives_source_bytes_by_default
);
assert!(
!inspection
.metadata
.source_metadata
.transfer_policy
.default_full_repo_tarball
);
assert!(inspection
.metadata
.task_metadata
.entrypoints
.contains(&"build".to_owned()));
assert_eq!(
inspection.metadata.task_metadata.default_entrypoint,
"build"
);
assert_eq!(
inspection.metadata.task_metadata.task_abi,
task_abi_digest(&ProjectModel::discover_without_config(temp.path()).unwrap())
);
assert!(inspection
.metadata
.wasm_code
.as_str()
.starts_with("sha256:"));
assert!(inspection.metadata.debug_metadata.available);
assert!(inspection.metadata.debug_metadata.source_level_breakpoints);
assert!(inspection.metadata.debug_metadata.variables_pane_supported);
assert!(!inspection.metadata.embeds_full_container_images);
assert!(inspection
.metadata
@ -7567,6 +7631,33 @@ mod tests {
.as_str()
.unwrap()
.starts_with("sha256:"));
assert!(report["bundle"]["metadata"]["wasm_code"]
.as_str()
.unwrap()
.starts_with("sha256:"));
assert_eq!(
report["bundle"]["metadata"]["task_metadata"]["default_entrypoint"],
"build"
);
assert!(report["bundle"]["metadata"]["task_metadata"]["entrypoints"]
.as_array()
.unwrap()
.iter()
.any(|entrypoint| entrypoint == "release"));
assert_eq!(
report["bundle"]["metadata"]["source_metadata"]["transfer_policy"]
["coordinator_receives_source_bytes_by_default"],
false
);
assert_eq!(
report["bundle"]["metadata"]["source_metadata"]["transfer_policy"]
["default_full_repo_tarball"],
false
);
assert_eq!(
report["bundle"]["metadata"]["debug_metadata"]["dap_virtual_process"],
true
);
assert_eq!(report["status"], "built");
assert_eq!(report["scheduled_work"], false);
}