gopwt につけようと思っている expected と got の diff

github.com/sergi/go-diff/diffmatchpatch を使う。

なんか良さげな基準で文字単位か行単位かを切り替えたい。power assert は何も考えずに assert 書いとけばいい感じの出力が得られるというのが嬉しいところなので、オプションはつけたくないということで考えた。

このような用途に限って言うと、すごく似てるけどちょっと違ってどこが違うのが見つけるのが辛い時だけに文字単位の diff があったらよくて、どう見ても違うみたいなケースでは必要ないだろうという予想があって、まず文字単位で diff をとって、複数行にまたがる diff があったら行ごとの diff をとり直すということにしようかなと思った。

あと副作用的に、複数行にまたがらなければ [- -] {+ +} みたいなマークなしで色だけで ins/del 表現してもそんな分かりにくくなくて良さそうだった。

文字単位で嬉しい

word-diff:

        foo(x("a[-'-]{+"+})
bar

line-diff:

-       foo(x("a')
+       foo(x("a")
bar

行単位でいい

word-diff:

        fo{+x
        bo+}o
bar
ba[-r2-]{+z+}

line-diff

-       foo
+       fox
+       boo
 bar
-bar2
+baz