From bffefba78bf11db7d10934b5371922b84ea0ea7d Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Mon, 2 Oct 2023 11:38:35 -0400 Subject: [PATCH] cargo-insta: use cargo integration tests This allows us to leverage Cargo itself to build the cargo-insta binary, reducing line count in the tests and in the Makefile. --- Makefile | 19 ++++--------- cargo-insta/.gitignore | 1 - cargo-insta/Cargo.toml | 3 +++ cargo-insta/integration-tests/.gitignore | 2 -- cargo-insta/integration-tests/Cargo.toml | 18 ------------- ...gration_tests__test_basic_utf8_inline.snap | 0 .../integration_tests__test_json_inline.snap | 0 .../integration_tests__test_yaml_inline.snap | 0 .../test-input/test_basic_utf8_inline.rs | 0 .../test-input/test_json_inline.rs | 0 .../test-input/test_yaml_inline.rs | 0 .../src/main.rs => tests/tests.rs} | 27 ++----------------- insta/src/utils.rs | 6 +---- 13 files changed, 11 insertions(+), 65 deletions(-) delete mode 100644 cargo-insta/.gitignore delete mode 100644 cargo-insta/integration-tests/.gitignore delete mode 100644 cargo-insta/integration-tests/Cargo.toml rename cargo-insta/{integration-tests/src/snapshots => tests/src}/integration_tests__test_basic_utf8_inline.snap (100%) rename cargo-insta/{integration-tests/src/snapshots => tests/src}/integration_tests__test_json_inline.snap (100%) rename cargo-insta/{integration-tests/src/snapshots => tests/src}/integration_tests__test_yaml_inline.snap (100%) rename cargo-insta/{integration-tests => tests}/test-input/test_basic_utf8_inline.rs (100%) rename cargo-insta/{integration-tests => tests}/test-input/test_json_inline.rs (100%) rename cargo-insta/{integration-tests => tests}/test-input/test_yaml_inline.rs (100%) rename cargo-insta/{integration-tests/src/main.rs => tests/tests.rs} (57%) diff --git a/Makefile b/Makefile index e2aa03c4..aa9cffbe 100644 --- a/Makefile +++ b/Makefile @@ -6,21 +6,12 @@ build: doc: @RUSTC_BOOTSTRAP=1 RUSTDOCFLAGS="--cfg=docsrs" cargo doc --no-deps --all-features -test: cargotest cargo-insta-tests - -cargo-insta-tests: - @echo "CARGO-INSTA INTEGRATION TESTS" - # Turn off CI flag so that cargo insta test behaves as we expect - # under normal operation - @cd cargo-insta/integration-tests; CI=0 cargo run - -cargotest: +test: @echo "CARGO TESTS" - @rustup component add rustfmt 2> /dev/null - @cargo test - @cargo test --all-features - @cargo test --no-default-features - @cargo test --features redactions -- --test-threads 1 + @env CI= cargo test + @env CI= cargo test --all-features + @env CI= cargo test --no-default-features + @env CI= cargo test --features redactions -- --test-threads 1 check-minver: @echo "MINVER CHECK" diff --git a/cargo-insta/.gitignore b/cargo-insta/.gitignore deleted file mode 100644 index eb5a316c..00000000 --- a/cargo-insta/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target diff --git a/cargo-insta/Cargo.toml b/cargo-insta/Cargo.toml index d7e92e47..d7ebb7ee 100644 --- a/cargo-insta/Cargo.toml +++ b/cargo-insta/Cargo.toml @@ -27,3 +27,6 @@ syn = { version = "1.0.50", features = ["full", "visit", "extra-traits"] } ignore = "0.4.17" uuid = { version = "1.0.0", features = ["v4"] } tempfile = "3.5.0" + +[dev-dependencies] +walkdir = "2.3.1" diff --git a/cargo-insta/integration-tests/.gitignore b/cargo-insta/integration-tests/.gitignore deleted file mode 100644 index c960903e..00000000 --- a/cargo-insta/integration-tests/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -tests/ -Cargo.lock diff --git a/cargo-insta/integration-tests/Cargo.toml b/cargo-insta/integration-tests/Cargo.toml deleted file mode 100644 index 3b43aee5..00000000 --- a/cargo-insta/integration-tests/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "integration-tests" -version = "0.1.0" -authors = ["Armin Ronacher "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -dircpy = "0.3.4" -insta = { path = "../../insta", features = [ - "json", - "yaml", - "redactions", - "glob", -] } -walkdir = "2.3.1" -serde = { version = "1.0.117", features = ["derive"] } diff --git a/cargo-insta/integration-tests/src/snapshots/integration_tests__test_basic_utf8_inline.snap b/cargo-insta/tests/src/integration_tests__test_basic_utf8_inline.snap similarity index 100% rename from cargo-insta/integration-tests/src/snapshots/integration_tests__test_basic_utf8_inline.snap rename to cargo-insta/tests/src/integration_tests__test_basic_utf8_inline.snap diff --git a/cargo-insta/integration-tests/src/snapshots/integration_tests__test_json_inline.snap b/cargo-insta/tests/src/integration_tests__test_json_inline.snap similarity index 100% rename from cargo-insta/integration-tests/src/snapshots/integration_tests__test_json_inline.snap rename to cargo-insta/tests/src/integration_tests__test_json_inline.snap diff --git a/cargo-insta/integration-tests/src/snapshots/integration_tests__test_yaml_inline.snap b/cargo-insta/tests/src/integration_tests__test_yaml_inline.snap similarity index 100% rename from cargo-insta/integration-tests/src/snapshots/integration_tests__test_yaml_inline.snap rename to cargo-insta/tests/src/integration_tests__test_yaml_inline.snap diff --git a/cargo-insta/integration-tests/test-input/test_basic_utf8_inline.rs b/cargo-insta/tests/test-input/test_basic_utf8_inline.rs similarity index 100% rename from cargo-insta/integration-tests/test-input/test_basic_utf8_inline.rs rename to cargo-insta/tests/test-input/test_basic_utf8_inline.rs diff --git a/cargo-insta/integration-tests/test-input/test_json_inline.rs b/cargo-insta/tests/test-input/test_json_inline.rs similarity index 100% rename from cargo-insta/integration-tests/test-input/test_json_inline.rs rename to cargo-insta/tests/test-input/test_json_inline.rs diff --git a/cargo-insta/integration-tests/test-input/test_yaml_inline.rs b/cargo-insta/tests/test-input/test_yaml_inline.rs similarity index 100% rename from cargo-insta/integration-tests/test-input/test_yaml_inline.rs rename to cargo-insta/tests/test-input/test_yaml_inline.rs diff --git a/cargo-insta/integration-tests/src/main.rs b/cargo-insta/tests/tests.rs similarity index 57% rename from cargo-insta/integration-tests/src/main.rs rename to cargo-insta/tests/tests.rs index ce27bea0..b0db4fe6 100644 --- a/cargo-insta/integration-tests/src/main.rs +++ b/cargo-insta/tests/tests.rs @@ -3,34 +3,12 @@ use std::fs; use std::path::Path; use std::process::Command; -use dircpy::CopyBuilder; use insta::{assert_snapshot, Settings}; use walkdir::WalkDir; fn main() { - // copy new tests over - fs::remove_dir_all("tests").ok(); - CopyBuilder::new("test-input", "tests") - .overwrite(true) - .run() - .unwrap(); - - // delete old build artifacts - Command::new("cargo") - .arg("clean") - .arg("--package=integration-tests") - .status() - .unwrap(); - - // make sure cargo-insta is built - Command::new("cargo") - .arg("build") - .current_dir("..") - .status() - .unwrap(); - // run tests and accept snapshots - Command::new("../target/debug/cargo-insta") + Command::new(env!("CARGO_BIN_EXE_cargo-insta")) .arg("test") .arg("--accept") .arg("--no-ignore") @@ -46,11 +24,10 @@ fn main() { .unwrap() .to_str() .unwrap(); - if filename.ends_with(".rs") { + if let Some(snapshot) = filename.strip_suffix(".rs") { let gen_file = Path::new("tests").join(filename); let mut settings = Settings::clone_current(); settings.set_input_file(&gen_file); - let snapshot = &filename[..filename.len() - 3]; settings.bind(|| { assert_snapshot!(snapshot, &fs::read_to_string(gen_file).unwrap()); }); diff --git a/insta/src/utils.rs b/insta/src/utils.rs index 35a39da6..453b3ce1 100644 --- a/insta/src/utils.rs +++ b/insta/src/utils.rs @@ -8,11 +8,7 @@ use std::{ /// Are we running in in a CI environment? pub fn is_ci() -> bool { - match env::var("CI").ok().as_deref() { - Some("false") | Some("0") | Some("") => false, - None => env::var("TF_BUILD").is_ok(), - Some(_) => true, - } + env::var_os("CI").is_some() || env::var_os("TF_BUILD").is_some() } #[cfg(feature = "colors")]