Add variable documentation
[sheep] / src / test / main.lisp
index 3cfb79e163d535176a4b2d3e197f766fd83304ab..9bae683d13ec013175a444b8b52120f5def15fed 100644 (file)
  `(push
    (lambda ()
     (let
-     ((success (funcall ,f)))
+     ((success
+       (handler-case
+        (funcall ,f)
+        (error (e) (format t "Got unexpected error in tests: ~A" e)))))
      (if success
       (format t "~c[1;32m- ~A passed~c[0m~%" #\Esc ,name #\Esc)
       (format t "~c[1;31m- ~A failed~c[0m~%" #\Esc ,name #\Esc))
  `(deftest
    ,source
    (lambda ()
-    (load ,source)
-    (ignore-errors (string= (slurp-file ,target) (docgen:export-package ,pkg))))))
+    (handler-case
+     (progn
+      (load ,source)
+      (string= (slurp-file ,target) (docgen:export-package ,pkg)))
+     (docgen:validation-failure (vf)
+      (format t "Validation failure gotten: ~A~%"
+       (funcall (symbol-function (find-symbol "VALIDATION-FAILURE-MSG" :docgen)) vf)))))))
+
+(defmacro deffailuretest (pkg source expected)
+ `(deftest
+   ,source
+   (lambda ()
+    (progn
+     (load ,source)
+     (let
+      ((result (docgen:validate-package ,pkg)))
+      (or
+       (equal ,expected result)
+       (format t "  Got error:~%~S~%  but expected~%~S~%" result ,expected)))))))
 
 (defmacro deffailure-func-test (name doc expected)
  `(deftest
-   ,name
+   ,(format nil "Func - ~A" name)
    (lambda ()
     (handler-case
      (progn
         (string= ,expected result)
         (format t "  Got error:~%~S~%  but expected~%~S~%" result ,expected))))))))
 
+(defmacro deffailure-var-test (name doc expected)
+ `(deftest
+   ,(format nil "Var - ~A" name)
+   (lambda ()
+    (handler-case
+     (progn
+      (funcall
+       (symbol-function (find-symbol "INTERNAL-DOC->AST" :docgen-var))
+       '*unused*
+       ,doc)
+      nil)
+     (docgen:validation-failure (vf)
+      (let
+       ((result (funcall (symbol-function (find-symbol "VALIDATION-FAILURE-MSG" :docgen)) vf)))
+       (or
+        (string= ,expected result)
+        (format t "  Got error:~%~S~%  but expected~%~S~%" result ,expected))))))))
+
 (defsuccesstest :success1 "resources/success1.lisp" "resources/success1.md")
+(deffailuretest :emptydocs "resources/emptydocs.lisp"
+ `((:failure :emptydocs "Package EMPTYDOCS has no documentation")
+   (:failure ,(intern "NO-DOC-CONDITION" :emptydocs) "Symbol NO-DOC-CONDITION has no documentation")
+   (:failure ,(intern "NO-DOC-FUNC" :emptydocs) "Symbol NO-DOC-FUNC has no documentation")))