+ (handler-case
+ (progn
+ (load ,source)
+ (string= (slurp-file ,target) (sheep:export-package ,pkg)))
+ (sheep:validation-failure (vf)
+ (format t "Validation failure gotten: ~A~%"
+ (funcall (symbol-function (find-symbol "VALIDATION-FAILURE-MSG" :sheep)) vf)))))))
+
+(defmacro deffailuretest (pkg source expected)
+ `(deftest
+ ,source
+ (lambda ()
+ (progn
+ (load ,source)
+ (let
+ ((result (sheep:validate-package ,pkg)))
+ (or
+ (equal ,expected result)
+ (format t " Got error:~%~S~% but expected~%~S~%" result ,expected)))))))