From fc146ad5101334cb316f905657e79fe5e4fe7876 Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Sat, 25 May 2024 22:50:26 -0400 Subject: [PATCH] refactor: remove difference dependency --- Cargo.lock | Bin 54724 -> 54718 bytes Cargo.toml | 2 +- cli/Cargo.toml | 2 +- cli/src/test.rs | 33 ++++++++++++++++++++------------- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9ebda5048cad98588c867bc02ee2eebf688801fa..eed2790aca7dfcde3908a5b84a0a9d0587847602 100644 GIT binary patch delta 114 zcmX@Int9)9<_%l5H<#fh4BsQy5{t}w3 O+w&f3?q;#xbshjC;wX;* delta 121 zcmdnDn)%3T<_%l5nbOiG2d))nHqtYgtjHheU}|KNoRnr}VQHRZYGiI?X_}IjW@v1l zoSJN4nVOttoM>R0W|Ecy6iqQtNlQ*KG_^1_F)%hUu}n2LF|@RpyirPg^JeW0KAV*) Ze+qG=rKJ|7<|U_27U}u6S*&-32LMRUDBl18 diff --git a/Cargo.toml b/Cargo.toml index 838188359..13a0c5411 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,6 @@ clap = { version = "4.5.4", features = [ ] } ctor = "0.2.8" ctrlc = { version = "3.4.4", features = ["termination"] } -difference = "2.0.0" dirs = "5.0.1" filetime = "0.2.23" fs4 = "0.8.3" @@ -75,6 +74,7 @@ semver = "1.0.23" serde = { version = "1.0.202", features = ["derive"] } serde_derive = "1.0.197" serde_json = { version = "1.0.117", features = ["preserve_order"] } +similar = "2.5.0" smallbitvec = "2.5.3" tempfile = "3.10.1" thiserror = "1.0.61" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 554246662..ded90199d 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -29,7 +29,6 @@ anstyle.workspace = true anyhow.workspace = true clap.workspace = true ctrlc.workspace = true -difference.workspace = true dirs.workspace = true filetime.workspace = true glob.workspace = true @@ -47,6 +46,7 @@ semver.workspace = true serde.workspace = true serde_derive.workspace = true serde_json.workspace = true +similar.workspace = true smallbitvec.workspace = true tiny_http.workspace = true walkdir.workspace = true diff --git a/cli/src/test.rs b/cli/src/test.rs index c0a00f4be..19d10f07f 100644 --- a/cli/src/test.rs +++ b/cli/src/test.rs @@ -9,13 +9,13 @@ use std::{ use anstyle::{AnsiColor, Color, Style}; use anyhow::{anyhow, Context, Result}; -use difference::{Changeset, Difference}; use indoc::indoc; use lazy_static::lazy_static; use regex::{ bytes::{Regex as ByteRegex, RegexBuilder as ByteRegexBuilder}, Regex, }; +use similar::{ChangeTag, TextDiff}; use tree_sitter::{format_sexp, Language, LogType, Parser, Query}; use walkdir::WalkDir; @@ -276,32 +276,39 @@ pub fn print_diff_key() { } pub fn print_diff(actual: &str, expected: &str, use_color: bool) { - let changeset = Changeset::new(actual, expected, "\n"); - for diff in &changeset.diffs { - match diff { - Difference::Same(part) => { + let diff = TextDiff::from_lines(actual, expected); + for diff in diff.iter_all_changes() { + match diff.tag() { + ChangeTag::Equal => { if use_color { - print!("{part}{}", changeset.split); + print!("{diff}"); } else { - print!("correct:\n{part}{}", changeset.split); + print!(" {diff}"); } } - Difference::Add(part) => { + ChangeTag::Insert => { if use_color { - println!("{}{}", paint(Some(AnsiColor::Green), part), changeset.split); + print!("{}", paint(Some(AnsiColor::Green), diff.as_str().unwrap())); } else { - print!("expected:\n{part}{}", changeset.split); + print!("+{diff}"); + } + if diff.missing_newline() { + println!(); } } - Difference::Rem(part) => { + ChangeTag::Delete => { if use_color { - println!("{}{}", paint(Some(AnsiColor::Red), part), changeset.split); + print!("{}", paint(Some(AnsiColor::Red), diff.as_str().unwrap())); } else { - print!("unexpected:\n{part}{}", changeset.split); + print!("-{diff}"); + } + if diff.missing_newline() { + println!(); } } } } + println!(); }