summaryrefslogtreecommitdiffstats
path: root/tests/common.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-06-11 07:17:49 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-06-11 07:17:49 -0700
commite781c2a91c245bbbc3607b6b16498d99f14ea36b (patch)
treeb3421cbedbcdfadd78bbfd02156a8e70afb383b0 /tests/common.tl
parent225ff2fa2fdb9e5169db5e2c06dc3b0053b775bb (diff)
downloadtxr-e781c2a91c245bbbc3607b6b16498d99f14ea36b.tar.gz
txr-e781c2a91c245bbbc3607b6b16498d99f14ea36b.tar.bz2
txr-e781c2a91c245bbbc3607b6b16498d99f14ea36b.zip
tests: support testing for warnings.
* tests/common.tl (error-to-sym): Catch warnings, and convert to :warning symbol. (vtest): Support new kinds of expected value: :warning. The test is satisfied if it throws a warning at expansion time or during evaluation.
Diffstat (limited to 'tests/common.tl')
-rw-r--r--tests/common.tl20
1 files changed, 15 insertions, 5 deletions
diff --git a/tests/common.tl b/tests/common.tl
index f89d6ed8..82cefd48 100644
--- a/tests/common.tl
+++ b/tests/common.tl
@@ -1,15 +1,25 @@
(defmacro error-to-sym (expr)
^(catch ,expr
- (error (cond) :error)))
+ (error (cond) :error)
+ (warning (cond) :warning)))
(defmacro vtest (:env env expr expected)
- (if (mequal expected :error '':error)
+ (if-match (quote @(as sym @(or :error :warning))) expected
+ (set expected sym))
+ (if (mequal expected :error :warning :warnerror)
(catch
(let ((expr-expn (expand expr env)))
- ^(ifa (not (equal (error-to-sym ,expr-expn) :error))
+ ^(ifa (not (equal (error-to-sym ,expr-expn) ,expected))
(error "test case ~s failed: produced ~s; expected ~s"
- ',expr it :error)))
- (error (exc)))
+ ',expr it ,expected)))
+ (error (exc)
+ (if (eq expected :warning)
+ (error "test case ~s produced error during expansion, expected ~s"
+ expr expected)))
+ (warning (exc)
+ (if (eq expected :error)
+ (error "test case ~s warned during expansion, expected ~s"
+ expr expected))))
(let ((expr-expn (expand expr env))
(expval (gensym)))
^(let ((,expval ,expected))