@@ -13,6 +13,25 @@ func RecordsDiff(sc *arrow.Schema, have, want []arrow.Record) string {
13
13
return TableDiff (array .NewTableFromRecords (sc , have ), array .NewTableFromRecords (sc , want ))
14
14
}
15
15
16
+ func getUnifiedDiff (edits array.Edits , wantCol , haveCol arrow.Array ) string {
17
+ defer func () {
18
+ if r := recover (); r != nil {
19
+ wantDataType := wantCol .DataType ()
20
+ wantData := make ([]string , wantCol .Len ())
21
+ for i := 0 ; i < wantCol .Len (); i ++ {
22
+ wantData [i ] = wantCol .ValueStr (i )
23
+ }
24
+ haveDataType := haveCol .DataType ()
25
+ haveData := make ([]string , haveCol .Len ())
26
+ for i := 0 ; i < haveCol .Len (); i ++ {
27
+ haveData [i ] = haveCol .ValueStr (i )
28
+ }
29
+ panic (fmt .Errorf ("panic in getUnifiedDiff: %s, want: [%s], have: [%s], want type: %s, have type: %s" , r , strings .Join (wantData , ", " ), strings .Join (haveData , ", " ), wantDataType , haveDataType ))
30
+ }
31
+ }()
32
+ return edits .UnifiedDiff (wantCol , haveCol )
33
+ }
34
+
16
35
func TableDiff (have , want arrow.Table ) string {
17
36
if array .TableApproxEqual (have , want , array .WithUnorderedMapKeys (true )) {
18
37
return ""
@@ -39,7 +58,7 @@ func TableDiff(have, want arrow.Table) string {
39
58
if err != nil {
40
59
panic (fmt .Errorf ("want: %v, have: %v, error: %w" , wantCol .DataType (), haveCol .DataType (), err ))
41
60
}
42
- diff := edits . UnifiedDiff ( wantCol , haveCol )
61
+ diff := getUnifiedDiff ( edits , wantCol , haveCol )
43
62
if diff != "" {
44
63
sb .WriteString (have .Schema ().Field (i ).Name )
45
64
sb .WriteString (": " )
0 commit comments