@@ -97,29 +97,29 @@ fn read_file(path: &Path) -> Result<String, Error> {
9797}
9898
9999fn diff ( expected : & str , actual : & str ) -> String {
100- use difference :: { Changeset , Difference } ;
100+ use similar :: text :: { ChangeTag , TextDiff } ;
101101 use std:: fmt:: Write ;
102102
103103 let mut res = String :: new ( ) ;
104- let changeset = Changeset :: new ( expected. trim ( ) , actual. trim ( ) , " \n " ) ;
104+ let diff = TextDiff :: from_lines ( expected. trim ( ) , actual. trim ( ) ) ;
105105
106106 let mut different = false ;
107- for diff in changeset . diffs {
108- let ( prefix , diff ) = match diff {
109- Difference :: Same ( _ ) => continue ,
110- Difference :: Add ( add ) => ( "+" , add ) ,
111- Difference :: Rem ( rem ) => ( "-" , rem ) ,
112- } ;
113- if !different {
114- write ! (
115- & mut res ,
116- "differences found (+ == actual, - == expected): \n "
117- )
118- . unwrap ( ) ;
119- different = true ;
120- }
121- for diff in diff . lines ( ) {
122- writeln ! ( & mut res, "{} {}" , prefix, diff ) . unwrap ( ) ;
107+ for op in diff . ops ( ) {
108+ for change in diff. iter_changes ( op ) {
109+ let prefix = match change . tag ( ) {
110+ ChangeTag :: Equal => continue ,
111+ ChangeTag :: Insert => "+" ,
112+ ChangeTag :: Delete => "-" ,
113+ } ;
114+ if !different {
115+ write ! (
116+ & mut res ,
117+ "differences found (+ == actual, - == expected): \n "
118+ )
119+ . unwrap ( ) ;
120+ different = true ;
121+ }
122+ write ! ( & mut res, "{} {}" , prefix, change . value ( ) ) . unwrap ( ) ;
123123 }
124124 }
125125 if different {
0 commit comments