changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/rt/util.lisp

changeset 698: 96958d3eb5b0
parent: bbd9024f2fe2
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
261
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; rt/util.lisp --- Test Utilities
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;;
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Commentary:
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 ;; some of these are taken from the TEST-UTIL package of SBCL
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 ;; (tests/test-util.lisp)
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 ;;; Code:
2a4f11c0e8c8 slint integrated
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 (in-package :rt)
632
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
12
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
13
 ;;; tmp
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
14
 (defmacro with-tmp-directory ((&optional (name (string (gensym "tmp")))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
15
                                          (defaults *default-tmp-directory*))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
16
                               &body body)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
17
   `(let ((*tmp* (directory-path (merge-pathnames ,name ,defaults))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
18
      (ensure-directories-exist *tmp*)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
19
      (unwind-protect (progn ,@body)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
20
        (sb-ext:delete-directory *tmp* :recursive t))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
21
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
22
 (defmacro with-tmp-file ((stream-var &key (name (string (gensym "tmp")))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
23
                                           type
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
24
                                           (directory *default-tmp-directory*)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
25
                                           (direction :output)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
26
                                           (if-exists :supersede)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
27
                                           (element-type ''character))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
28
                          &body body)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
29
   `(let ((*tmp* (make-pathname :name ,name :type ,type :directory ,(namestring directory))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
30
      (with-open-file (,stream-var *tmp* :direction ,direction :element-type ,element-type
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
31
                                   :if-exists ,if-exists)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
32
        (unwind-protect (progn ,@body)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
33
          (delete-file *tmp*)))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
34
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
35
 ;;; random
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
36
 (defvar *simple-charset* "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
37
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
38
 (defun random-elt (seq)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
39
   (elt seq (random (length seq))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
40
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
41
 (defun random-ref (vec)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
42
   (aref vec (random (length vec))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
43
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
44
 (defun random-char ()
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
45
   (random-ref *simple-charset*))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
46
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
47
 (defun random-chars (dim)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
48
   (let ((r (make-array dim :element-type 'character)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
49
     (dotimes (i (array-total-size r) r)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
50
       (setf (row-major-aref r i) (random-char)))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
51
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
52
 (defun random-byte () (random 255))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
53
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
54
 (defun random-bytes (dim)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
55
   (let ((r (make-array dim :element-type 'octet)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
56
     (dotimes (i (array-total-size r) r)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
57
       (setf (row-major-aref r i) (random-byte)))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
58
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
59
 (eval-when (:compile-toplevel :load-toplevel :execute)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
60
   (defun make-test (&rest slots)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
61
     (apply #'make-instance 'test slots))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
62
   (defun make-suite (&rest slots)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
63
     (apply #'make-instance 'test-suite slots)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
64
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
65
 ;; TODO 2023-09-04: optimize
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
66
 ;;(declaim (inline do-tests))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
67
 (defun do-tests (&optional (suite *test-suite*) force (output *standard-output*))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
68
   (if (pathnamep output)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
69
       (with-open-file (stream output :direction :output)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
70
         (do-suite (ensure-suite suite) :stream stream :force force))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
71
       (do-suite (ensure-suite suite) :stream output :force force)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
72
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
73
 (defvar *test-output-mutex* (sb-thread:make-mutex :name "tests-output"))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
74
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
75
 ;; TODO
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
76
 (defun do-tests-concurrently (&optional (suite *test-suite*) force (output *standard-output*))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
77
   (declare (ignore suite force))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
78
   (sb-thread:with-mutex (*test-output-mutex*)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
79
     (let ((stream (make-synonym-stream output)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
80
       (let ((*standard-output* stream)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
81
             (*error-output* stream))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
82
         (nyi!)))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
83
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
84
 (defun reset-tests ()
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
85
   (setq *testing* nil
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
86
         *test-suite* nil
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
87
         *test-suite-list* nil
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
88
         *test-input* nil))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
89
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
90
 ;; this assumes that *test-suite* is re-initialized correctly to the
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
91
 ;; correct test-suite object.
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
92
 (defun continue-testing ()
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
93
   (if-let ((test *testing*))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
94
     (throw '%in-test test)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
95
     (do-suite *test-suite*)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
96
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
97
 ;; NOTE 2023-09-01: `pushnew' does not return an indication of whether
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
98
 ;; place is changed - it returns place. This is functionally sound but
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
99
 ;; means that if we want to do something else in the event that place
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
100
 ;; is unchanged, we run into some friction,
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
101
 ;; https://stackoverflow.com/questions/56228832/adapting-common-lisp-pushnew-to-return-success-failure
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
102
 (defun spush (item lst &key (test #'equal))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
103
   "Substituting `push'"
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
104
   (declare (type function test))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
105
   (cond
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
106
     ((null lst) (push item lst))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
107
     ((list lst)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
108
      (if-let ((found (member item lst
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
109
                              :test test)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
110
        (progn
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
111
          (rplaca found item)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
112
          lst)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
113
        (push item lst)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
114
     #|(or nil '(t (cons item lst)))|#))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
115
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
116
 ;; FIX 2023-08-31: spush, replace with `add-test' method.
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
117
 ;; (declaim (inline normalize-test-name))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
118
 (defun normalize-test-name (a)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
119
   "Return the normalized `test-suite-designator' of A."
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
120
   (etypecase a
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
121
     (string (string-upcase a))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
122
     (symbol (symbol-name a))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
123
     (test-object (normalize-test-name (test-name a)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
124
     (t (format nil "~A" a))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
125
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
126
 (defun test-name= (a b)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
127
   "Return t if A and B are similar `test-suite-designator's."
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
128
   (let ((a (normalize-test-name a))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
129
         (b (normalize-test-name b)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
130
     (string= a b)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
131
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
132
 ;; (declaim (inline assert-suite ensure-suite))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
133
 (defun ensure-suite (name)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
134
   (if-let ((ok (member name *test-suite-list* :test #'test-name=)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
135
     (car ok)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
136
     (when (or (eq name t) (null name)) (make-suite :name *default-test-suite-name*))))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
137
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
138
 (defun check-suite-designator (suite) (check-type suite test-suite-designator))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
139
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
140
 (defun assert-suite (name)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
141
   (check-suite-designator name)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
142
   (assert (ensure-suite name)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
143
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
144
 (declaim (inline test-opt-key-p test-opt-valid-p))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
145
 (defun test-opt-key-p (k)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
146
   "Test if K is a `test-opt-key'."
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
147
   (member k '(:profile :save :stream)))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
148
 
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
149
 (defun test-opt-valid-p (f)
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
150
   "Test if F is a valid `test-opt' form. If so, return F else nil."
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
151
   (when (test-opt-key-p (car f))
bbd9024f2fe2 lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents: 261
diff changeset
152
     f))