summaryrefslogtreecommitdiffstats
path: root/tests/common.tl
blob: c0dda28549096199647257d961d66f14ad7485e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(defmacro error-to-sym (expr)
 ^(catch ,expr
    (error (cond) :error)))

(defmacro vtest (:env env expr expected)
 (catch
   (let ((expr-expn (macroexpand expr env))
         (expval (gensym)))
     ^(let ((,expval ,expected))
        (ifa (not (equal (error-to-sym ,expr-expn) ,expval))
           (error "test case ~s failed: produced ~s; expected ~s"
                  ',expr it ,expval))))
   (error (exc)
          (unless (eq expected :error)
            (error "test case ~s failed to expand: expected is ~s" expr expected)))))

(defmacro test (expr expected)
  ^(vtest ,expr ',expected))

(defmacro stest (expr expected)
  ^(vtest ,^(tostring ,expr) ,expected))

(defmacro mtest (. pairs)
  ^(progn ,*(mapcar (op cons 'test) (tuples 2 pairs))))

(defun osname ()
  (with-stream (u (open-command "(uname -o || uname) 2> /dev/null"))
    (get-line u)))