Skip to content

Commit ba7b73a

Browse files
authored
crates_io_tarball: Use insta snapshots to simplify test code (#8786)
1 parent 46a28ee commit ba7b73a

File tree

3 files changed

+30
-31
lines changed

3 files changed

+30
-31
lines changed

Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/crates_io_tarball/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ anyhow = "=1.0.86"
2424
claims = "=0.7.1"
2525
clap = { version = "=4.5.4", features = ["derive", "unicode", "wrap_help"] }
2626
indicatif = { version = "=0.17.8", features = ["rayon"] }
27+
insta = "=1.39.0"
2728
rayon = "=1.10.0"
2829
tracing-subscriber = { version = "=0.3.18", features = ["env-filter"] }
2930
walkdir = "=2.5.0"

crates/crates_io_tarball/src/lib.rs

+28-31
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ pub fn process_tarball<R: Read>(
142142
#[cfg(test)]
143143
mod tests {
144144
use super::process_tarball;
145-
use crate::{TarballBuilder, TarballError};
145+
use crate::TarballBuilder;
146146
use cargo_manifest::{MaybeInherited, StringOrBool};
147-
use std::path::PathBuf;
147+
use insta::assert_snapshot;
148148

149149
#[test]
150150
fn process_tarball_test() {
@@ -158,7 +158,8 @@ mod tests {
158158
let tarball_info = assert_ok!(process_tarball("foo-0.0.1", &*tarball, limit));
159159
assert_none!(tarball_info.vcs_info);
160160

161-
assert_err!(process_tarball("bar-0.0.1", &*tarball, limit));
161+
let err = assert_err!(process_tarball("bar-0.0.1", &*tarball, limit));
162+
assert_snapshot!(err, @"invalid path found: foo-0.0.1/Cargo.toml");
162163
}
163164

164165
#[test]
@@ -292,26 +293,28 @@ mod tests {
292293

293294
#[test]
294295
fn process_tarball_test_incorrect_manifest_casing() {
295-
for file in ["CARGO.TOML", "Cargo.Toml"] {
296-
let manifest = br#"
296+
let manifest = br#"
297297
[package]
298298
name = "foo"
299299
version = "0.0.1"
300300
repository = "https://github.com/foo/bar"
301301
"#;
302+
303+
let limit = 512 * 1024 * 1024;
304+
305+
let process = |file: &str| {
302306
let tarball = TarballBuilder::new()
303307
.add_file(&format!("foo-0.0.1/{file}"), manifest)
304308
.build();
305309

306-
let limit = 512 * 1024 * 1024;
310+
process_tarball("foo-0.0.1", &*tarball, limit)
311+
};
307312

308-
let err = assert_err!(process_tarball("foo-0.0.1", &*tarball, limit));
309-
if let TarballError::IncorrectlyCasedManifest(have) = err {
310-
assert_eq!(have, PathBuf::from(file));
311-
} else {
312-
panic!("expected IncorrectlyCasedManifest, got {err:?} instead");
313-
}
314-
}
313+
let err = assert_err!(process("CARGO.TOML"));
314+
assert_snapshot!(err, @r###"Cargo.toml manifest is incorrectly cased: "CARGO.TOML""###);
315+
316+
let err = assert_err!(process("Cargo.Toml"));
317+
assert_snapshot!(err, @r###"Cargo.toml manifest is incorrectly cased: "Cargo.Toml""###);
315318
}
316319

317320
#[test]
@@ -323,32 +326,26 @@ mod tests {
323326
repository = "https://github.com/foo/bar"
324327
"#;
325328

326-
for files in [
327-
vec!["cargo.toml", "Cargo.toml"],
328-
vec!["Cargo.toml", "Cargo.Toml"],
329-
vec!["Cargo.toml", "cargo.toml", "CARGO.TOML"],
330-
] {
329+
let limit = 512 * 1024 * 1024;
330+
331+
let process = |files: Vec<&str>| {
331332
let tarball = files
332333
.iter()
333334
.fold(TarballBuilder::new(), |builder, file| {
334335
builder.add_file(&format!("foo-0.0.1/{file}"), manifest)
335336
})
336337
.build();
337338

338-
let limit = 512 * 1024 * 1024;
339+
process_tarball("foo-0.0.1", &*tarball, limit)
340+
};
339341

340-
let err = assert_err!(process_tarball("foo-0.0.1", &*tarball, limit));
341-
if let TarballError::TooManyManifests(have) = err {
342-
let mut want: Vec<_> = files
343-
.into_iter()
344-
.map(|file| PathBuf::from("foo-0.0.1").join(file))
345-
.collect();
346-
want.sort();
342+
let err = assert_err!(process(vec!["cargo.toml", "Cargo.toml"]));
343+
assert_snapshot!(err, @r###"more than one Cargo.toml manifest in tarball: ["foo-0.0.1/Cargo.toml", "foo-0.0.1/cargo.toml"]"###);
347344

348-
assert_eq!(have, want);
349-
} else {
350-
panic!("expected TooManyManifests, got {err:?} instead");
351-
}
352-
}
345+
let err = assert_err!(process(vec!["Cargo.toml", "Cargo.Toml"]));
346+
assert_snapshot!(err, @r###"more than one Cargo.toml manifest in tarball: ["foo-0.0.1/Cargo.Toml", "foo-0.0.1/Cargo.toml"]"###);
347+
348+
let err = assert_err!(process(vec!["Cargo.toml", "cargo.toml", "CARGO.TOML"]));
349+
assert_snapshot!(err, @r###"more than one Cargo.toml manifest in tarball: ["foo-0.0.1/CARGO.TOML", "foo-0.0.1/Cargo.toml", "foo-0.0.1/cargo.toml"]"###);
353350
}
354351
}

0 commit comments

Comments
 (0)