diff --git a/Cargo.toml b/Cargo.toml index 09651f590d..b785e8e579 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/pacquet/crates/lockfile-preferred-versions/src/tests.rs b/pacquet/crates/lockfile-preferred-versions/src/tests.rs index cd19621885..133009af7f 100644 --- a/pacquet/crates/lockfile-preferred-versions/src/tests.rs +++ b/pacquet/crates/lockfile-preferred-versions/src/tests.rs @@ -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); } diff --git a/pacquet/crates/package-manager/src/build_snapshot/tests.rs b/pacquet/crates/package-manager/src/build_snapshot/tests.rs index f2794c544f..247a8d71f8 100644 --- a/pacquet/crates/package-manager/src/build_snapshot/tests.rs +++ b/pacquet/crates/package-manager/src/build_snapshot/tests.rs @@ -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] diff --git a/pacquet/crates/package-manager/src/current_lockfile/tests.rs b/pacquet/crates/package-manager/src/current_lockfile/tests.rs index 297b31f6e7..a5ab7230d7 100644 --- a/pacquet/crates/package-manager/src/current_lockfile/tests.rs +++ b/pacquet/crates/package-manager/src/current_lockfile/tests.rs @@ -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"))); } diff --git a/pacquet/crates/package-manager/src/symlink_direct_dependencies/tests.rs b/pacquet/crates/package-manager/src/symlink_direct_dependencies/tests.rs index b178834485..0c21c06f05 100644 --- a/pacquet/crates/package-manager/src/symlink_direct_dependencies/tests.rs +++ b/pacquet/crates/package-manager/src/symlink_direct_dependencies/tests.rs @@ -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); } diff --git a/pacquet/crates/package-manifest/src/tests.rs b/pacquet/crates/package-manifest/src/tests.rs index 378059aac5..9ff75e3687 100644 --- a/pacquet/crates/package-manifest/src/tests.rs +++ b/pacquet/crates/package-manifest/src/tests.rs @@ -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}"); diff --git a/pacquet/crates/patching/src/hash/tests.rs b/pacquet/crates/patching/src/hash/tests.rs index 06fd7e04f1..6269abb6a6 100644 --- a/pacquet/crates/patching/src/hash/tests.rs +++ b/pacquet/crates/patching/src/hash/tests.rs @@ -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", ); diff --git a/pacquet/crates/resolving-deps-resolver/src/dedupe_injected_deps/tests.rs b/pacquet/crates/resolving-deps-resolver/src/dedupe_injected_deps/tests.rs index c5ff45398f..5f5196d4e3 100644 --- a/pacquet/crates/resolving-deps-resolver/src/dedupe_injected_deps/tests.rs +++ b/pacquet/crates/resolving-deps-resolver/src/dedupe_injected_deps/tests.rs @@ -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"); } diff --git a/pacquet/crates/resolving-deps-resolver/src/tests.rs b/pacquet/crates/resolving-deps-resolver/src/tests.rs index c061cbeab8..93391929c6 100644 --- a/pacquet/crates/resolving-deps-resolver/src/tests.rs +++ b/pacquet/crates/resolving-deps-resolver/src/tests.rs @@ -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); diff --git a/pacquet/crates/store-dir/src/add_files_from_dir/tests.rs b/pacquet/crates/store-dir/src/add_files_from_dir/tests.rs index 05199383ed..1239055a6b 100644 --- a/pacquet/crates/store-dir/src/add_files_from_dir/tests.rs +++ b/pacquet/crates/store-dir/src/add_files_from_dir/tests.rs @@ -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); } diff --git a/pacquet/crates/store-dir/src/check_pkg_files_integrity/tests.rs b/pacquet/crates/store-dir/src/check_pkg_files_integrity/tests.rs index fd16a9af23..6ffbdb2a04 100644 --- a/pacquet/crates/store-dir/src/check_pkg_files_integrity/tests.rs +++ b/pacquet/crates/store-dir/src/check_pkg_files_integrity/tests.rs @@ -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. diff --git a/pacquet/crates/store-dir/src/msgpackr_records/tests.rs b/pacquet/crates/store-dir/src/msgpackr_records/tests.rs index 8e7b3abd68..beaafba504 100644 --- a/pacquet/crates/store-dir/src/msgpackr_records/tests.rs +++ b/pacquet/crates/store-dir/src/msgpackr_records/tests.rs @@ -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] diff --git a/pacquet/crates/store-dir/src/store_index/tests.rs b/pacquet/crates/store-dir/src/store_index/tests.rs index b0f25140c5..8f78363ccf 100644 --- a/pacquet/crates/store-dir/src/store_index/tests.rs +++ b/pacquet/crates/store-dir/src/store_index/tests.rs @@ -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); diff --git a/pacquet/crates/store-dir/src/upload/tests.rs b/pacquet/crates/store-dir/src/upload/tests.rs index 3fab946244..1f69a289d6 100644 --- a/pacquet/crates/store-dir/src/upload/tests.rs +++ b/pacquet/crates/store-dir/src/upload/tests.rs @@ -69,7 +69,7 @@ fn digest_change_appears_in_added() { let diff = calculate_diff(&base, ¤t); 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, ¤t); 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.