diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/012/stack.tl | 31 | ||||
-rw-r--r-- | tests/common.tl | 3 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/012/stack.tl b/tests/012/stack.tl new file mode 100644 index 00000000..a8d06487 --- /dev/null +++ b/tests/012/stack.tl @@ -0,0 +1,31 @@ +(load "../common") + +(defun recur () (recur)) + +(defmacro so (expr) + ^(catch ,expr + (stack-overflow (exc) :so))) + +(test (so (recur)) :so) + +(test (let ((pid (fork))) + (cond + ((zerop pid) (set-stack-limit 0) (recur)) + (t (let ((status (wait pid))) + (w-ifsignaled status))))) + t) + +(defmacro infexp () + ^(foo (infexp))) + +(test (so (expand '(infexp))) :so) + +(defvarl orig (get-stack-limit)) + +(mvtest + (set-stack-limit nil) orig + (set-stack-limit orig) nil + (set-stack-limit 0) orig + (set-stack-limit orig) nil + (set-stack-limit 65536) orig + (set-stack-limit orig) 65536) diff --git a/tests/common.tl b/tests/common.tl index 4011583f..b9e46ad3 100644 --- a/tests/common.tl +++ b/tests/common.tl @@ -36,6 +36,9 @@ (defmacro mtest (. pairs) ^(progn ,*(mapcar (op cons 'test) (tuples 2 pairs)))) +(defmacro mvtest (. pairs) + ^(progn ,*(mapcar (op cons 'vtest) (tuples 2 pairs)))) + (defmacro mstest (. pairs) ^(progn ,*(mapcar (op cons 'stest) (tuples 2 pairs)))) |