-;; -*- lisp -*-
+;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
(in-package :it.bese.fiveam)
(defgeneric run-resolving-dependencies (test)
(:documentation "Given a dependency spec determine if the spec
is satisfied or not, this will generally involve running other
-tests. If the dependency spec can be satisfied the test is alos
+tests. If the dependency spec can be satisfied the test is also
run."))
(defmethod run-resolving-dependencies ((test test-case))
(setf (status test) :circular))))
(t (status test))))
+(defgeneric resolve-dependencies (depends-on))
+
(defmethod resolve-dependencies ((depends-on symbol))
"A test which depends on a symbol is interpreted as `(AND
,DEPENDS-ON)."
(funcall test-lambda)
result-list))
+(defgeneric run-test-lambda (test))
+
(defmethod run-test-lambda ((test test-case))
(with-run-state (result-list)
(bind-run-state ((current-test test))
(let ((*readtable* (copy-readtable))
(*package* (runtime-package test)))
(if (collect-profiling-info test)
- (setf (profiling-info test)
- (arnesi:collect-timing (test-lambda test)))
+ ;; Timing info doesn't get collected ATM, we need a portable library
+ ;; (setf (profiling-info test) (collect-timing (test-lambda test)))
+ (funcall (test-lambda test))
(funcall (test-lambda test))))
(retest ()
:report (lambda (stream)
(bind-run-state ((result-list '()))
(unwind-protect
(if (collect-profiling-info suite)
- (setf (profiling-info suite) (collect-timing #'run-tests))
+ ;; Timing info doesn't get collected ATM, we need a portable library
+ ;; (setf (profiling-info suite) (collect-timing #'run-tests))
+ (run-tests)
(run-tests)))
(setf suite-results result-list
(status suite) (every (lambda (res)
(setf result-list (nconc result-list suite-results)))))))
(defmethod %run ((test-name symbol))
- (when-bind test (get-test test-name)
+ (when-let (test (get-test test-name))
(%run test)))
(defvar *initial-!* (lambda () (format t "Haven't run that many tests yet.~%")))
a testable-object object. This function changes the operations
performed by the !, !! and !!! functions."
(psetf *!* (lambda ()
- (loop for test being the hash-keys of *test*
- do (setf (status (get-test test)) :unknown))
+ (loop :for test :being :the :hash-keys :of *test*
+ :do (setf (status (get-test test)) :unknown))
(bind-run-state ((result-list '()))
(with-simple-restart (explain "Ignore the rest of the tests and explain current results")
(%run test-spec))