Skip to content

Commit ad2e39f

Browse files
committed
refactor(test): Simplify handling of tar file prefixes
1 parent 2c96728 commit ad2e39f

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

crates/cargo-test-support/src/publish.rs

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -184,29 +184,32 @@ pub fn validate_crate_contents(
184184
let mut contents = Vec::new();
185185
rdr.read_to_end(&mut contents).unwrap();
186186
let mut ar = Archive::new(&contents[..]);
187+
let base_crate_name = Path::new(
188+
expected_crate_name
189+
.strip_suffix(".crate")
190+
.expect("must end with .crate"),
191+
);
187192
let files: HashMap<PathBuf, String> = ar
188193
.entries()
189194
.unwrap()
190195
.map(|entry| {
191196
let mut entry = entry.unwrap();
192-
let name = entry.path().unwrap().into_owned();
197+
let name = entry
198+
.path()
199+
.unwrap()
200+
.strip_prefix(base_crate_name)
201+
.unwrap()
202+
.to_owned();
193203
let mut contents = String::new();
194204
entry.read_to_string(&mut contents).unwrap();
195205
(name, contents)
196206
})
197207
.collect();
198-
let base_crate_name = Path::new(
199-
expected_crate_name
200-
.strip_suffix(".crate")
201-
.expect("must end with .crate"),
202-
);
203-
let actual_files: HashSet<PathBuf> = files.keys().cloned().collect();
204-
let expected_files: HashSet<PathBuf> = expected_files
205-
.iter()
206-
.map(|name| base_crate_name.join(name))
207-
.collect();
208-
let missing: Vec<&PathBuf> = expected_files.difference(&actual_files).collect();
209-
let extra: Vec<&PathBuf> = actual_files.difference(&expected_files).collect();
208+
let actual_files: HashSet<&Path> = files.keys().map(|p| p.as_path()).collect();
209+
let expected_files: HashSet<&Path> =
210+
expected_files.iter().map(|name| Path::new(name)).collect();
211+
let missing: Vec<&&Path> = expected_files.difference(&actual_files).collect();
212+
let extra: Vec<&&Path> = actual_files.difference(&expected_files).collect();
210213
if !missing.is_empty() || !extra.is_empty() {
211214
panic!(
212215
"uploaded archive does not match.\nMissing: {:?}\nExtra: {:?}\n",
@@ -215,10 +218,10 @@ pub fn validate_crate_contents(
215218
}
216219
if !expected_contents.is_empty() {
217220
for (e_file_name, e_file_contents) in expected_contents {
218-
let full_e_name = base_crate_name.join(e_file_name);
221+
let e_file_name = Path::new(e_file_name);
219222
let actual_contents = files
220-
.get(&full_e_name)
221-
.unwrap_or_else(|| panic!("file `{}` missing in archive", e_file_name));
223+
.get(e_file_name)
224+
.unwrap_or_else(|| panic!("file `{}` missing in archive", e_file_name.display()));
222225
assert_match_exact(e_file_contents, actual_contents);
223226
}
224227
}

0 commit comments

Comments
 (0)