Skip to content

Commit 8506e96

Browse files
committed
add new tests for filesizes
1 parent 5558d9a commit 8506e96

File tree

1 file changed

+188
-0
lines changed

1 file changed

+188
-0
lines changed

tests/testsuite/package.rs

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2469,3 +2469,191 @@ version = "0.1.0"
24692469
&[("Cargo.toml", &rewritten_toml)],
24702470
);
24712471
}
2472+
2473+
#[cargo_test]
2474+
fn basic_filesizes() {
2475+
let cargo_toml_orig_contents = r#"
2476+
[package]
2477+
name = "foo"
2478+
version = "0.0.1"
2479+
authors = []
2480+
exclude = ["*.txt"]
2481+
license = "MIT"
2482+
description = "foo"
2483+
"#;
2484+
let main_rs_contents = r#"fn main() { println!("🦀"); }"#;
2485+
let cargo_toml_contents = format!(
2486+
r#"{}
2487+
[package]
2488+
name = "foo"
2489+
version = "0.0.1"
2490+
authors = []
2491+
exclude = ["*.txt"]
2492+
description = "foo"
2493+
license = "MIT"
2494+
"#,
2495+
cargo::core::package::MANIFEST_PREAMBLE
2496+
);
2497+
let cargo_lock_contents = r#"# This file is automatically @generated by Cargo.
2498+
# It is not intended for manual editing.
2499+
version = 3
2500+
2501+
[[package]]
2502+
name = "foo"
2503+
version = "0.0.1"
2504+
"#;
2505+
let p = project()
2506+
.file("Cargo.toml", cargo_toml_orig_contents)
2507+
.file("src/main.rs", main_rs_contents)
2508+
.file("src/bar.txt", "Ignored text file contents") // should be ignored when packaging
2509+
.build();
2510+
2511+
let uncompressed_size = cargo_toml_orig_contents.len()
2512+
+ main_rs_contents.len()
2513+
+ cargo_toml_contents.len()
2514+
+ cargo_lock_contents.len();
2515+
let compressed_size = 699;
2516+
2517+
p.cargo("package")
2518+
.with_stderr(format!(
2519+
"\
2520+
[WARNING] manifest has no documentation[..]
2521+
See [..]
2522+
[PACKAGING] foo v0.0.1 ([CWD])
2523+
[VERIFYING] foo v0.0.1 ([CWD])
2524+
[COMPILING] foo v0.0.1 ([CWD][..])
2525+
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
2526+
[PACKAGED] 4 files, {} B ({} B compressed)
2527+
",
2528+
uncompressed_size, compressed_size
2529+
))
2530+
.run();
2531+
assert!(p.root().join("target/package/foo-0.0.1.crate").is_file());
2532+
p.cargo("package -l")
2533+
.with_stdout(
2534+
"\
2535+
Cargo.lock
2536+
Cargo.toml
2537+
Cargo.toml.orig
2538+
src/main.rs
2539+
",
2540+
)
2541+
.run();
2542+
p.cargo("package").with_stdout("").run();
2543+
2544+
let f = File::open(&p.root().join("target/package/foo-0.0.1.crate")).unwrap();
2545+
assert_eq!(f.metadata().unwrap().len(), compressed_size);
2546+
validate_crate_contents(
2547+
f,
2548+
"foo-0.0.1.crate",
2549+
&["Cargo.lock", "Cargo.toml", "Cargo.toml.orig", "src/main.rs"],
2550+
&[
2551+
("Cargo.lock", cargo_lock_contents),
2552+
("Cargo.toml", &cargo_toml_contents),
2553+
("Cargo.toml.orig", cargo_toml_orig_contents),
2554+
("src/main.rs", main_rs_contents),
2555+
],
2556+
);
2557+
}
2558+
2559+
#[cargo_test]
2560+
fn larger_filesizes() {
2561+
let cargo_toml_orig_contents = r#"
2562+
[package]
2563+
name = "foo"
2564+
version = "0.0.1"
2565+
authors = []
2566+
license = "MIT"
2567+
description = "foo"
2568+
"#;
2569+
let lots_of_crabs = std::iter::repeat("🦀").take(1337).collect::<String>();
2570+
let main_rs_contents = format!(r#"fn main() {{ println!("{}"); }}"#, lots_of_crabs);
2571+
// Relatively uncompressible to increase the compressed package size beyond 1kB.
2572+
let bar_txt_contents = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
2573+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
2574+
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
2575+
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
2576+
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
2577+
laborum.";
2578+
let cargo_toml_contents = format!(
2579+
r#"{}
2580+
[package]
2581+
name = "foo"
2582+
version = "0.0.1"
2583+
authors = []
2584+
description = "foo"
2585+
license = "MIT"
2586+
"#,
2587+
cargo::core::package::MANIFEST_PREAMBLE
2588+
);
2589+
let cargo_lock_contents = r#"# This file is automatically @generated by Cargo.
2590+
# It is not intended for manual editing.
2591+
version = 3
2592+
2593+
[[package]]
2594+
name = "foo"
2595+
version = "0.0.1"
2596+
"#;
2597+
let p = project()
2598+
.file("Cargo.toml", cargo_toml_orig_contents)
2599+
.file("src/main.rs", &main_rs_contents)
2600+
.file("src/bar.txt", bar_txt_contents)
2601+
.build();
2602+
2603+
let uncompressed_size = cargo_toml_orig_contents.len()
2604+
+ main_rs_contents.len()
2605+
+ cargo_toml_contents.len()
2606+
+ cargo_lock_contents.len()
2607+
+ bar_txt_contents.len();
2608+
let compressed_size = 1010;
2609+
2610+
p.cargo("package")
2611+
.with_stderr(format!(
2612+
"\
2613+
[WARNING] manifest has no documentation[..]
2614+
See [..]
2615+
[PACKAGING] foo v0.0.1 ([CWD])
2616+
[VERIFYING] foo v0.0.1 ([CWD])
2617+
[COMPILING] foo v0.0.1 ([CWD][..])
2618+
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
2619+
[PACKAGED] 5 files, {} ({} compressed)
2620+
",
2621+
humansize::format_size(uncompressed_size, humansize::DECIMAL),
2622+
humansize::format_size(compressed_size, humansize::DECIMAL)
2623+
))
2624+
.run();
2625+
assert!(p.root().join("target/package/foo-0.0.1.crate").is_file());
2626+
p.cargo("package -l")
2627+
.with_stdout(
2628+
"\
2629+
Cargo.lock
2630+
Cargo.toml
2631+
Cargo.toml.orig
2632+
src/bar.txt
2633+
src/main.rs
2634+
",
2635+
)
2636+
.run();
2637+
p.cargo("package").with_stdout("").run();
2638+
2639+
let f = File::open(&p.root().join("target/package/foo-0.0.1.crate")).unwrap();
2640+
assert_eq!(f.metadata().unwrap().len(), compressed_size);
2641+
validate_crate_contents(
2642+
f,
2643+
"foo-0.0.1.crate",
2644+
&[
2645+
"Cargo.lock",
2646+
"Cargo.toml",
2647+
"Cargo.toml.orig",
2648+
"src/bar.txt",
2649+
"src/main.rs",
2650+
],
2651+
&[
2652+
("Cargo.lock", cargo_lock_contents),
2653+
("Cargo.toml", &cargo_toml_contents),
2654+
("Cargo.toml.orig", cargo_toml_orig_contents),
2655+
("src/bar.txt", bar_txt_contents),
2656+
("src/main.rs", &main_rs_contents),
2657+
],
2658+
);
2659+
}

0 commit comments

Comments
 (0)