1+ use std:: borrow:: Cow ;
12use std:: fs:: read_dir;
23use std:: path:: Path ;
34use std:: path:: PathBuf ;
@@ -33,6 +34,7 @@ async fn test_eszip_migration() {
3334 let mut passed = 0 ;
3435 let mut failed = 0 ;
3536 let mut snapshot_created = 0 ;
37+ let mut diff_msgs = vec ! [ ] ;
3638
3739 println ! ( "running {} eszip tests" , paths. len( ) ) ;
3840 for path in paths {
@@ -54,12 +56,22 @@ async fn test_eszip_migration() {
5456 passed += 1 ;
5557 snapshot_created += 1 ;
5658 } else {
57- let snapshot_buf = read ( snapshot_path) . await . unwrap ( ) ;
59+ let snapshot_buf = read ( & snapshot_path) . await . unwrap ( ) ;
5860 if snapshot_buf == buf {
5961 println ! ( "ok" ) ;
6062 passed += 1 ;
6163 } else {
6264 println ! ( "FAILED" ) ;
65+ diff_msgs. push ( format ! ( "{}" , snapshot_path. to_string_lossy( ) ) . into ( ) ) ;
66+ diff_msgs. push ( Cow :: Borrowed ( "--------------------" ) ) ;
67+ diff_msgs. extend (
68+ render_diff (
69+ & String :: from_utf8_lossy ( & snapshot_buf) ,
70+ & String :: from_utf8_lossy ( buf) ,
71+ )
72+ . map ( Cow :: Owned ) ,
73+ ) ;
74+ diff_msgs. push ( Cow :: Borrowed ( "\n " ) ) ;
6375 failed += 1 ;
6476 }
6577 }
@@ -68,6 +80,9 @@ async fn test_eszip_migration() {
6880 let msg =
6981 format ! ( "eszip test result: {status}. {passed} passed ({snapshot_created} snapshot created); {failed} failed" ) ;
7082 if failed > 0 {
83+ for line in diff_msgs {
84+ eprintln ! ( "{line}" ) ;
85+ }
7186 panic ! ( "{msg}" ) ;
7287 } else {
7388 eprintln ! ( "{msg}" ) ;
@@ -324,3 +339,14 @@ fn get_bool_from_json_value(
324339) -> Option < bool > {
325340 value. get ( key) . and_then ( |it| it. as_bool ( ) )
326341}
342+
343+ fn render_diff < ' l > (
344+ left : & ' l str ,
345+ right : & ' l str ,
346+ ) -> impl Iterator < Item = String > + ' l {
347+ diff:: lines ( left, right) . into_iter ( ) . map ( |it| match it {
348+ diff:: Result :: Left ( l) => format ! ( "-{l}" ) ,
349+ diff:: Result :: Both ( l, _) => format ! ( " {l}" ) ,
350+ diff:: Result :: Right ( r) => format ! ( "+{r}" ) ,
351+ } )
352+ }
0 commit comments