mirror of
https://github.com/Noratrieb/cargo-minimize.git
synced 2026-01-14 16:35:01 +01:00
test infra
This commit is contained in:
parent
1398d3d211
commit
75108c8553
6 changed files with 145 additions and 36 deletions
|
|
@ -1,11 +1,51 @@
|
|||
use anyhow::Result;
|
||||
use std::process::Command;
|
||||
|
||||
use anyhow::{bail, Result};
|
||||
use cargo_minimize::Options;
|
||||
|
||||
fn canonicalize(code: &str) -> Result<String> {
|
||||
let ast = syn::parse_file(code)?;
|
||||
Ok(prettyplease::unparse(&ast))
|
||||
}
|
||||
|
||||
pub fn run_test(code: &str, minimizes_to: &str, options: impl FnOnce(&mut Options)) -> Result<()> {
|
||||
let dir = tempfile::tempdir()?;
|
||||
|
||||
let mut cargo = Command::new("cargo");
|
||||
cargo.args(["new", "project"]);
|
||||
cargo.current_dir(dir.path());
|
||||
|
||||
let output = cargo.output()?;
|
||||
if !output.status.success() {
|
||||
bail!(
|
||||
"Failed to create cargo project, {}",
|
||||
String::from_utf8(output.stderr)?
|
||||
);
|
||||
}
|
||||
|
||||
let cargo_dir = dir.path().join("project");
|
||||
|
||||
let main_rs = cargo_dir.join("src/main.rs");
|
||||
|
||||
std::fs::write(&main_rs, code)?;
|
||||
|
||||
let mut opts = Options::default();
|
||||
|
||||
let path = cargo_dir.join("src");
|
||||
|
||||
opts.project_dir = Some(cargo_dir);
|
||||
opts.path = path;
|
||||
options(&mut opts);
|
||||
|
||||
cargo_minimize::minimize(opts)?;
|
||||
|
||||
let minimized_main_rs = std::fs::read_to_string(main_rs)?;
|
||||
|
||||
let actual = canonicalize(&minimized_main_rs)?;
|
||||
let expectecd = canonicalize(minimizes_to)?;
|
||||
|
||||
assert_eq!(actual, expectecd);
|
||||
|
||||
fn run_test(_: &str) -> Result<()> {
|
||||
let _ = tempfile::tempdir()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn smoke() {
|
||||
run_test("").unwrap();
|
||||
}
|
||||
|
|
|
|||
24
tests/minimize.rs
Normal file
24
tests/minimize.rs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
mod helper;
|
||||
|
||||
use anyhow::Result;
|
||||
|
||||
use helper::run_test;
|
||||
|
||||
#[test]
|
||||
fn hello_world_no_verify() -> Result<()> {
|
||||
run_test(
|
||||
r##"
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
"##,
|
||||
r##"
|
||||
fn main() {
|
||||
loop {}
|
||||
}
|
||||
"##,
|
||||
|opts| {
|
||||
opts.no_verify = true;
|
||||
},
|
||||
)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue