diff --git a/Cargo.toml b/Cargo.toml index 4fa1ffa..66126a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,6 +29,6 @@ env_logger = "0.5.0-rc.1" log = "0.4.1" tempdir = "0.3.5" proptest = "0.7.0" -difference = "2.0.0" +similar = "0.4.0" [workspace] diff --git a/tests/parse_and_replace.rs b/tests/parse_and_replace.rs index 1b6ffa9..003578e 100644 --- a/tests/parse_and_replace.rs +++ b/tests/parse_and_replace.rs @@ -97,29 +97,29 @@ fn read_file(path: &Path) -> Result { } fn diff(expected: &str, actual: &str) -> String { - use difference::{Changeset, Difference}; + use similar::text::{ChangeTag, TextDiff}; use std::fmt::Write; let mut res = String::new(); - let changeset = Changeset::new(expected.trim(), actual.trim(), "\n"); + let diff = TextDiff::from_lines(expected.trim(), actual.trim()); let mut different = false; - for diff in changeset.diffs { - let (prefix, diff) = match diff { - Difference::Same(_) => continue, - Difference::Add(add) => ("+", add), - Difference::Rem(rem) => ("-", rem), - }; - if !different { - write!( - &mut res, - "differences found (+ == actual, - == expected):\n" - ) - .unwrap(); - different = true; - } - for diff in diff.lines() { - writeln!(&mut res, "{} {}", prefix, diff).unwrap(); + for op in diff.ops() { + for change in diff.iter_changes(op) { + let prefix = match change.tag() { + ChangeTag::Equal => continue, + ChangeTag::Insert => "+", + ChangeTag::Delete => "-", + }; + if !different { + write!( + &mut res, + "differences found (+ == actual, - == expected):\n" + ) + .unwrap(); + different = true; + } + write!(&mut res, "{} {}", prefix, change.value()).unwrap(); } } if different {