chore(rust/clippy): enable get_unwrap

Replace .get(...).unwrap() / .get_mut(...).unwrap() with indexing
across the test suites (machine-applicable clippy fixes): the panic is
the same, but the intent is clearer and the panic message names the
missing key instead of 'unwrap on None'.
This commit is contained in:
Claude
2026-06-12 13:37:34 +00:00
parent 05d7889f29
commit f274ad843f
14 changed files with 36 additions and 34 deletions

View File

@@ -248,6 +248,8 @@ exit = "warn" # deliberate exits carry #[expect] (e.g. dlx propagating
infinite_loop = "warn"
mem_forget = "warn" # deliberate leaks carry #[expect] with the reason
get_unwrap = "warn" # `x[i]` over `x.get(i).unwrap()`: same panic, clearer intent and message
[profile.release]
opt-level = 3
lto = "fat"

View File

@@ -53,10 +53,10 @@ fn seeds_from_manifest_only_when_no_lockfile_snapshots() {
assert_eq!(selector_type_of(foo_entry), VersionSelectorType::Range);
assert_eq!(weight_of(foo_entry), DIRECT_DEP_SELECTOR_WEIGHT);
let bar_entry = preferred.get("bar").unwrap().get("2.3.4").unwrap();
let bar_entry = &preferred["bar"]["2.3.4"];
assert_eq!(selector_type_of(bar_entry), VersionSelectorType::Version);
let baz_entry = preferred.get("baz").unwrap().get("latest").unwrap();
let baz_entry = &preferred["baz"]["latest"];
assert_eq!(selector_type_of(baz_entry), VersionSelectorType::Tag);
}
@@ -87,7 +87,7 @@ fn lockfile_snapshots_seed_existing_version_selectors() {
let preferred = get_preferred_versions_from_lockfile_and_manifests(Some(&snapshots), &[&empty]);
let entry = preferred.get("foo").unwrap().get("1.0.0").unwrap();
let entry = &preferred["foo"]["1.0.0"];
assert_eq!(selector_type_of(entry), VersionSelectorType::Version);
assert_eq!(weight_of(entry), EXISTING_VERSION_SELECTOR_WEIGHT);
}
@@ -109,7 +109,7 @@ fn dual_source_match_bumps_weight() {
let preferred =
get_preferred_versions_from_lockfile_and_manifests(Some(&snapshots), &[&manifest]);
let entry = preferred.get("foo").unwrap().get("1.0.0").unwrap();
let entry = &preferred["foo"]["1.0.0"];
assert_eq!(selector_type_of(entry), VersionSelectorType::Version);
assert_eq!(weight_of(entry), DIRECT_DEP_SELECTOR_WEIGHT + EXISTING_VERSION_SELECTOR_WEIGHT);
}
@@ -126,6 +126,6 @@ fn duplicate_peer_suffix_snapshots_do_not_inflate_weight() {
let preferred = get_preferred_versions_from_lockfile_and_manifests(Some(&snapshots), &[&empty]);
let entry = preferred.get("foo").unwrap().get("1.0.0").unwrap();
let entry = &preferred["foo"]["1.0.0"];
assert_eq!(weight_of(entry), EXISTING_VERSION_SELECTOR_WEIGHT);
}

View File

@@ -72,7 +72,7 @@ fn builds_snapshot_with_resolved_dependencies() {
let deps = built.snapshot.dependencies.expect("dependencies should be populated");
assert_eq!(deps.len(), 1);
let react_key = PkgName::parse("react").unwrap();
assert_eq!(deps.get(&react_key).unwrap().to_string(), "17.0.2");
assert_eq!(deps[&react_key].to_string(), "17.0.2");
}
#[test]

View File

@@ -102,7 +102,7 @@ fn skipped_snapshot_pruned_from_snapshots_and_importer_optional() {
assert!(snaps.contains_key(&key("keep", "1.0.0")));
assert!(!snaps.contains_key(&key("drop", "1.0.0")), "skipped snapshot must be pruned");
let imp = filtered.importers.get(".").unwrap();
let imp = &filtered.importers["."];
assert!(
imp.optional_dependencies.as_ref().unwrap().is_empty(),
"importer optional_dependencies entry pointing at a pruned snapshot must be removed",
@@ -147,7 +147,7 @@ fn include_optional_false_clears_importer_section() {
let filtered = super::filter_lockfile_for_current(&lockfile, include, &skipped);
assert!(filtered.importers.get(".").unwrap().optional_dependencies.is_none());
assert!(filtered.importers["."].optional_dependencies.is_none());
assert!(!filtered.snapshots.as_ref().unwrap().contains_key(&key("opt", "1.0.0")));
assert!(filtered.snapshots.as_ref().unwrap().contains_key(&key("keep", "1.0.0")));
}
@@ -318,7 +318,7 @@ fn link_optional_entries_survive_post_filter() {
let filtered =
super::filter_lockfile_for_current(&lockfile, include_all(), &SkippedSnapshots::new());
let opt = filtered.importers.get(".").unwrap().optional_dependencies.as_ref().unwrap();
let opt = filtered.importers["."].optional_dependencies.as_ref().unwrap();
assert!(
opt.contains_key(&pkg("workspace-pkg")),
"link: importer entries must survive the optional-deps post-filter",
@@ -354,7 +354,7 @@ fn empty_skipped_and_full_include_is_identity_for_reachables() {
assert!(snaps.contains_key(&key("a", "1.0.0")));
assert!(snaps.contains_key(&key("b", "1.0.0")));
let imp = filtered.importers.get(".").unwrap();
let imp = &filtered.importers["."];
assert!(imp.dependencies.as_ref().unwrap().contains_key(&pkg("a")));
}

View File

@@ -471,8 +471,8 @@ fn per_importer_prefix_in_pnpm_root_events() {
let alpha_prefix = workspace_root.join("packages/alpha").to_string_lossy().into_owned();
let beta_prefix = workspace_root.join("packages/beta").to_string_lossy().into_owned();
let by_prefix: HashMap<&str, &AddedRoot> = added.iter().copied().collect();
assert_eq!(by_prefix.get(alpha_prefix.as_str()).unwrap().name, "fastify");
assert_eq!(by_prefix.get(beta_prefix.as_str()).unwrap().name, "react");
assert_eq!(by_prefix[alpha_prefix.as_str()].name, "fastify");
assert_eq!(by_prefix[beta_prefix.as_str()].name, "react");
drop(dir);
}

View File

@@ -49,7 +49,7 @@ fn should_add_dependency() {
let dependencies: HashMap<_, _> = manifest.dependencies([DependencyGroup::Prod]).collect();
dbg!(&dependencies);
assert!(dependencies.contains_key("fastify"));
assert_eq!(dependencies.get("fastify").unwrap(), &"1.0.0");
assert_eq!(&dependencies["fastify"], &"1.0.0");
manifest.save().unwrap();
let saved = read_to_string(tmp).unwrap();
eprintln!("SAVED:\n{saved}");

View File

@@ -45,9 +45,9 @@ fn maps_keys_to_hashes() {
calc_patch_hashes(vec![("foo@1.0.0".to_string(), patch_a), ("bar".to_string(), patch_b)])
.unwrap();
assert_eq!(hashes.get("foo@1.0.0").unwrap(), HELLO_SHA256_HEX);
assert_eq!(&hashes["foo@1.0.0"], HELLO_SHA256_HEX);
assert_eq!(
hashes.get("bar").unwrap(),
&hashes["bar"],
// sha256 of "world\n"
"e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317",
);

View File

@@ -61,7 +61,7 @@ fn rewrites_childless_injected_dep_to_link() {
dedupe_injected_deps(&mut graph, &mut direct, &roots, &lockfile_dir);
let after = direct.get("project-2").unwrap().get("project-1").unwrap();
let after = &direct["project-2"]["project-1"];
assert_eq!(after.as_str(), "link:../project-1");
assert!(graph.is_empty(), "unreachable file: snapshot should be pruned");
}
@@ -98,7 +98,7 @@ fn leaves_injected_dep_when_children_differ() {
dedupe_injected_deps(&mut graph, &mut direct, &roots, &lockfile_dir);
let after = direct.get("project-2").unwrap().get("project-1").unwrap();
let after = &direct["project-2"]["project-1"];
assert_eq!(after.as_str(), "file:project-1");
}
@@ -135,7 +135,7 @@ fn rewrites_when_children_subset_of_target_direct_deps() {
dedupe_injected_deps(&mut graph, &mut direct, &roots, &lockfile_dir);
let after = direct.get("project-2").unwrap().get("project-1").unwrap();
let after = &direct["project-2"]["project-1"];
assert_eq!(after.as_str(), "link:../project-1");
// `lib` is still reachable through project-1's direct deps.
assert!(graph.contains_key(&lib));
@@ -160,6 +160,6 @@ fn ignores_non_workspace_file_deps() {
dedupe_injected_deps(&mut graph, &mut direct, &roots, &lockfile_dir);
let after = direct.get(".").unwrap().get("some-tarball").unwrap();
let after = &direct["."]["some-tarball"];
assert_eq!(after.as_str(), "file:vendor/some-tarball.tgz");
}

View File

@@ -135,10 +135,10 @@ async fn walks_dependencies_and_builds_flat_tree() {
assert_eq!(tree.packages.len(), 2);
assert!(tree.packages.contains_key("foo@1.2.0"));
let foo_node_id = &tree.direct[0].node_id;
let foo_tree_node = tree.dependencies_tree.get(foo_node_id).unwrap();
let foo_tree_node = &tree.dependencies_tree[foo_node_id];
assert_eq!(foo_tree_node.children.realized().len(), 1);
let bar_node_id = foo_tree_node.children.realized().get("bar").unwrap();
let bar_tree_node = tree.dependencies_tree.get(bar_node_id).unwrap();
let bar_tree_node = &tree.dependencies_tree[bar_node_id];
assert_eq!(bar_tree_node.resolved_package_id, "bar@2.3.0");
assert!(tree.policy_violations.is_empty());
}
@@ -209,8 +209,8 @@ async fn dedupes_when_the_same_package_appears_in_two_subtrees() {
// point at the same `NodeId` and the tree must carry exactly one
// `shared` entry. Mirrors upstream's
// [`pkgIsLeaf` reuse](https://github.com/pnpm/pnpm/blob/097983fbca/installing/deps-resolver/src/resolveDependencies.ts#L1580).
let a_tree = tree.dependencies_tree.get(&tree.direct[0].node_id).unwrap();
let b_tree = tree.dependencies_tree.get(&tree.direct[1].node_id).unwrap();
let a_tree = &tree.dependencies_tree[&tree.direct[0].node_id];
let b_tree = &tree.dependencies_tree[&tree.direct[1].node_id];
let shared_via_a = a_tree.children.realized().get("shared").unwrap();
let shared_via_b = b_tree.children.realized().get("shared").unwrap();
assert_eq!(shared_via_a, shared_via_b);

View File

@@ -36,7 +36,7 @@ fn captures_top_level_files() {
keys.sort();
assert_eq!(keys, vec!["index.js".to_string(), "package.json".to_string()]);
let pkg = added.files.get("package.json").unwrap();
let pkg = &added.files["package.json"];
assert_eq!(pkg.size, b"{\"name\":\"x\"}\n".len() as u64);
}

View File

@@ -486,8 +486,8 @@ fn side_effects_overlay_keys_are_independent() {
};
let result = build_file_maps_from_index(&store_dir, entry);
let maps = result.side_effects_maps.unwrap();
let k1 = maps.get("k1").unwrap();
let k2 = maps.get("k2").unwrap();
let k1 = &maps["k1"];
let k2 = &maps["k2"];
assert!(k1.contains_key("a.js") && !k1.contains_key("b.js"), "k1: {k1:?}");
assert!(k2.contains_key("b.js") && !k2.contains_key("a.js"), "k2: {k2:?}");
// Both share base.js.

View File

@@ -64,13 +64,13 @@ fn decodes_two_file_fixture_with_record_reuse() {
let decoded = decode(&bytes);
assert_eq!(decoded.files.len(), 2);
let pkg_json = decoded.files.get("package.json").unwrap();
let pkg_json = &decoded.files["package.json"];
assert_eq!(pkg_json.digest, "abc");
assert_eq!(pkg_json.mode, 0o644);
assert_eq!(pkg_json.size, 17);
assert_eq!(pkg_json.checked_at, Some(1_700_000_000_000));
let index_js = decoded.files.get("index.js").unwrap();
let index_js = &decoded.files["index.js"];
assert_eq!(index_js.digest, "def");
assert_eq!(index_js.mode, 0o755);
assert_eq!(index_js.size, 42);
@@ -104,7 +104,7 @@ fn decodes_file_without_checked_at() {
0x73, 0x69, 0x7a, 0x65, 0xa3, 0x61, 0x61, 0x61, 0xcd, 0x01, 0xa4, 0x01,
];
let decoded = decode(&bytes);
let info = decoded.files.get("a.js").unwrap();
let info = &decoded.files["a.js"];
assert_eq!(info.checked_at, None);
}
@@ -358,7 +358,7 @@ fn encode_handles_fixint_in_slot_range_safely() {
files,
side_effects: None,
};
assert_eq!(roundtrip(&original).files.get("f").unwrap().size, 0x7b);
assert_eq!(roundtrip(&original).files["f"].size, 0x7b);
}
#[test]
@@ -387,7 +387,7 @@ fn encode_omits_checked_at_when_none() {
bytes.windows(needle.len()).all(|window| window != needle),
"checkedAt leaked into output when the field was None: {bytes:02x?}",
);
assert_eq!(roundtrip(&original).files.get("f").unwrap().checked_at, None);
assert_eq!(roundtrip(&original).files["f"].checked_at, None);
}
#[test]

View File

@@ -213,7 +213,7 @@ fn get_decodes_msgpackr_records_rows() {
let loaded = idx.get(key).unwrap().expect("row must decode");
assert_eq!(loaded.algo, "sha512");
let info = loaded.files.get("package.json").unwrap();
let info = &loaded.files["package.json"];
assert_eq!(info.digest, "abc");
assert_eq!(info.mode, 0o644);
assert_eq!(info.size, 17);

View File

@@ -69,7 +69,7 @@ fn digest_change_appears_in_added() {
let diff = calculate_diff(&base, &current);
assert_eq!(diff.deleted, None);
let added = diff.added.expect("added present");
assert_eq!(added.get("f.txt").unwrap().digest, "d-new");
assert_eq!(added["f.txt"].digest, "d-new");
}
/// Mode change at the same path (and same digest) appears under
@@ -82,7 +82,7 @@ fn mode_change_appears_in_added() {
let diff = calculate_diff(&base, &current);
assert_eq!(diff.deleted, None);
let added = diff.added.expect("added present");
assert_eq!(added.get("f.sh").unwrap().mode, 0o755);
assert_eq!(added["f.sh"].mode, 0o755);
}
/// Mixed: one delete, one add, one mod, one unchanged.