From 25ea200cfc1fde8b5e827a7ee14aed915b28c7b6 Mon Sep 17 00:00:00 2001 From: Alexandre Nicolaie Date: Sun, 4 Aug 2024 18:36:11 +0000 Subject: [PATCH] :white_check_mark:(core): Handle CRLF output on windows platform Signed-off-by: Alexandre Nicolaie --- Cargo.lock | 45 +++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + tests/cli.rs | 26 ++++++++++++++++++-------- 3 files changed, 64 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0985661..9df0dd2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -197,6 +197,18 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys", +] + [[package]] name = "crossbeam-deque" version = "0.8.5" @@ -234,6 +246,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "equivalent" version = "1.0.1" @@ -374,6 +392,7 @@ dependencies = [ "predicates", "regex", "serde_yaml", + "similar-asserts", "walkdir", ] @@ -597,6 +616,26 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +dependencies = [ + "bstr", + "unicode-segmentation", +] + +[[package]] +name = "similar-asserts" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e041bb827d1bfca18f213411d51b665309f1afb37a04a5d1464530e13779fc0f" +dependencies = [ + "console", + "similar", +] + [[package]] name = "strsim" version = "0.11.1" @@ -638,6 +677,12 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + [[package]] name = "unsafe-libyaml" version = "0.2.11" diff --git a/Cargo.toml b/Cargo.toml index 26f0630..1249a5f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,3 +44,4 @@ walkdir = "2.3.2" assert_cmd = { version = "2.0.15", features = ["color-auto"] } assert_fs = "1.1.2" predicates = "3.1.2" +similar-asserts = "1.5.0" diff --git a/tests/cli.rs b/tests/cli.rs index 9c98c6a..052a706 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -49,30 +49,40 @@ fn generate_with_empty_namespace() -> Result<(), Box> { #[test] fn generate_on_stdout() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kubevault")?; - let expect = fs::read_to_string("tests/fixtures/manifests.yaml")?; - cmd.arg("generate") + let assert = cmd + .arg("generate") .arg("--vault-dir") .arg("tests/fixtures/vault") .assert() - .success() - .stdout(predicate::str::diff(expect)); + .success(); + + let expect = fs::read_to_string("tests/fixtures/manifests.yaml")?; + #[cfg(windows)] + let expect = expect.replace("\r\n", "\n"); + let actual = std::str::from_utf8(&assert.get_output().stdout)?; + similar_asserts::assert_eq!(expect, actual); Ok(()) } #[test] fn generate_on_stdout_with_custom_namespace() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kubevault")?; - let expect = fs::read_to_string("tests/fixtures/manifests_default.yaml")?; - cmd.arg("generate") + let assert = cmd + .arg("generate") .arg("--vault-dir") .arg("tests/fixtures/vault") .arg("--namespace") .arg("default") .assert() - .success() - .stdout(predicate::str::diff(expect)); + .success(); + + let expect = fs::read_to_string("tests/fixtures/manifests_default.yaml")?; + #[cfg(windows)] + let expect = expect.replace("\r\n", "\n"); + let actual = std::str::from_utf8(&assert.get_output().stdout)?; + similar_asserts::assert_eq!(expect, actual); Ok(()) }