Skip to content

Commit ff2ceb8

Browse files
committed
Expect withheld vlt pins in the capture VEX test
The capture VEX test still expected every hosted pin of every captured lock to be attested, but discovery now withholds the pins of a lock some vlt release discards (the 0.0.0-1 and 0.0.0-16 captures have no lockfileVersion). It now copies each capture's vlt.json beside the lock and expects those locks to keep their refs unpinned with one patched_ref_unattributable warning. Assisted-by: Claude Code:claude-opus-5-5
1 parent 799b0a2 commit ff2ceb8

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

‎crates/socket-patch-core/tests/vlt_locks.rs‎

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use serde_json::Value;
1818
use socket_patch_core::hash::git_sha256::compute_git_sha256_from_bytes;
1919
use socket_patch_core::manifest::schema::{PatchFileInfo, PatchRecord};
2020
use socket_patch_core::patch::apply::PatchSources;
21+
use socket_patch_core::patch::redirect::vlt::DISCARDING_LOCK_CODES;
2122
use socket_patch_core::patch::redirect::{rewrite_registry_redirect, DepOverride};
2223
use socket_patch_core::vendor::lock_inventory::{inventory_project, LockIntegrity};
2324
use socket_patch_core::vendor::npm_flavor::{revert_npm_any, vendor_npm_any};
@@ -883,9 +884,12 @@ async fn lock_inventory_reads_every_capture_and_drops_vendored_nodes() {
883884
#[tokio::test]
884885
async fn vex_discovers_every_hosted_rewrite_and_nothing_before_it() {
885886
let overrides = overrides();
886-
for (version, targets, _) in CAPTURES {
887+
for (version, targets, warnings) in CAPTURES {
887888
let files = read_capture(version);
888889
let rewritten = rewrite_registry_redirect(&files, &overrides);
890+
let discarded = warnings
891+
.iter()
892+
.any(|code| DISCARDING_LOCK_CODES.contains(code));
889893
for (label, text) in [
890894
("input", files["vlt-lock.json"].clone()),
891895
("output", rewritten.files["vlt-lock.json"].clone()),
@@ -896,9 +900,18 @@ async fn vex_discovers_every_hosted_rewrite_and_nothing_before_it() {
896900
] {
897901
let tmp = tempfile::tempdir().unwrap();
898902
fs::write(tmp.path().join("vlt-lock.json"), &text).unwrap();
903+
if let Some(config) = files.get("vlt.json") {
904+
fs::write(tmp.path().join("vlt.json"), config).unwrap();
905+
}
899906
let out = discover_patched_refs(tmp.path()).await;
900-
assert!(
901-
out.diagnostics.is_empty(),
907+
let codes: Vec<&str> = out.diagnostics.iter().map(|d| d.code).collect();
908+
let want_codes: Vec<&str> = if discarded && label != "input" {
909+
vec!["patched_ref_unattributable"]
910+
} else {
911+
Vec::new()
912+
};
913+
assert_eq!(
914+
codes, want_codes,
902915
"{version} {label}: {:?}",
903916
out.diagnostics
904917
);
@@ -907,11 +920,8 @@ async fn vex_discovers_every_hosted_rewrite_and_nothing_before_it() {
907920
.iter()
908921
.map(|r| {
909922
assert_eq!(r.mode, WiringMode::Hosted, "{version} {label}");
910-
assert_eq!(
911-
r.locked_integrity,
912-
Some(LockIntegrity::Sri(patched_sha(&r.uuid))),
913-
"{version} {label}"
914-
);
923+
let pin = (!discarded).then(|| LockIntegrity::Sri(patched_sha(&r.uuid)));
924+
assert_eq!(r.locked_integrity, pin, "{version} {label}");
915925
(r.purl.clone(), r.uuid.clone())
916926
})
917927
.collect();

0 commit comments

Comments
 (0)