diff --git a/test/Diff.hs b/test/Diff.hs new file mode 100644 index 00000000..34c35618 --- /dev/null +++ b/test/Diff.hs @@ -0,0 +1,14 @@ +module Diff where + +import Data.Algorithm.Diff (Diff (..), getGroupedDiff) +import Data.Algorithm.DiffOutput (ppDiff) +import Data.Monoid ((<>)) +import Test.Tasty.HUnit (Assertion, assertBool) +import Text.Groom (groom) + +-- | Like '@=?' but producing a diff on failure. +(@==?) :: (Eq a, Show a) => a -> a -> Assertion +x @==? y = + assertBool ("Expected:\n" <> groom x <> "\nDifference:\n" <> msg) (x == y) + where + msg = ppDiff $ getGroupedDiff (lines . groom $ x) (lines . groom $ y)