msg: { actual, expected, asString ? false, asJSON ? false, removeDunders ? false, }: let preProcess = v: if removeDunders then builtins.removeAttrs v [ "__toString" "__functor" ] else if asString then toString v else if asJSON then builtins.toJSON v else v; a = preProcess actual; e = preProcess expected; in if (a == e) then '' echo 'it ${msg}' '' else '' echo 'FAILED: ${msg}' echo '${builtins.toJSON expected}' echo '${builtins.toJSON actual}' ''