projects
/
fiveam.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Create named test lambdas
[fiveam.git]
/
src
/
test.lisp
diff --git
a/src/test.lisp
b/src/test.lisp
index
e046859
..
2712d6a
100644
(file)
--- a/
src/test.lisp
+++ b/
src/test.lisp
@@
-1,6
+1,6
@@
-;; -*- lisp -*-
+;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
-(in-package :it.bese.FiveAM)
+(in-package :it.bese.fiveam)
;;;; * Tests
;;;; * Tests
@@
-11,11
+11,20
@@
;;;; collection of checks which can be run and a test suite is a named
;;;; collection of tests and test suites.
;;;; collection of checks which can be run and a test suite is a named
;;;; collection of tests and test suites.
-(deflookup-table test
- :at-redefinition nil
- :documentation "Lookup table mapping test (and test suite)
+(defvar *test*
+ (make-hash-table :test 'eql)
+ "Lookup table mapping test (and test suite)
names to objects.")
names to objects.")
+(defun get-test (key &optional default)
+ (gethash key *test* default))
+
+(defun (setf get-test) (value key)
+ (setf (gethash key *test*) value))
+
+(defun rem-test (key)
+ (remhash key *test*))
+
(defun test-names ()
(loop for test being the hash-keys of *test*
collect test))
(defun test-names ()
(loop for test being the hash-keys of *test*
collect test))
@@
-65,19
+74,23
@@
If PROFILE is T profiling information will be collected as well."
(destructuring-bind (name &rest args)
(ensure-list fixture)
`((with-fixture ,name ,args ,@body)))
(destructuring-bind (name &rest args)
(ensure-list fixture)
`((with-fixture ,name ,args ,@body)))
- body)))
+ body))
+ (lambda-name
+ (format-symbol t "%~A-~A" '#:test name))
+ (inner-lambda-name
+ (format-symbol t "%~A-~A" '#:inner-test name)))
`(progn
(setf (get-test ',name)
(make-instance 'test-case
:name ',name
:runtime-package (find-package ,(package-name *package*))
:test-lambda
`(progn
(setf (get-test ',name)
(make-instance 'test-case
:name ',name
:runtime-package (find-package ,(package-name *package*))
:test-lambda
- (lambda ()
+ (named-lambda ,lambda-name ()
,@ (ecase compile-at
(:run-time `((funcall
(let ((*package* (find-package ',(package-name *package*))))
,@ (ecase compile-at
(:run-time `((funcall
(let ((*package* (find-package ',(package-name *package*))))
- (compile nil '(lambda ()
- ,@effective-body))))))
+ (compile ',inner-lambda-name
+ '(lambda () ,@effective-body))))))
(:definition-time effective-body)))
:description ,description
:depends-on ',depends-on
(:definition-time effective-body)))
:description ,description
:depends-on ',depends-on