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