aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-08-14 10:52:28 +0000
committers-ol <s+removethis@s-ol.nu>2025-03-02 14:24:49 +0000
commit498890e32b54b47972ea9886473b6b8d9481d602 (patch)
treebff03837984d4d010c5f60318950ac8ac7b2c8bb /spec
parentstart working on language spec (diff)
downloadalive-498890e32b54b47972ea9886473b6b8d9481d602.tar.gz
alive-498890e32b54b47972ea9886473b6b8d9481d602.zip
throw TestPilot errors instead of logging
Diffstat (limited to 'spec')
-rw-r--r--spec/test_setup.moon33
1 files changed, 30 insertions, 3 deletions
diff --git a/spec/test_setup.moon b/spec/test_setup.moon
index c25cb14..965b2e7 100644
--- a/spec/test_setup.moon
+++ b/spec/test_setup.moon
@@ -4,12 +4,22 @@ import Module, StringModule from require 'alv.module'
import Logger from require 'alv.logger'
import Error from require 'alv.error'
import RTNode from require 'alv.rtnode'
+
Logger\init 'error'
+os.time = do
+ t = 0
+ ->
+ t += 1
+ t
+
+export COPILOT
class TestPilot extends Copilot
new: (code) =>
super!
+ COPILOT = @
+
if code
@active_module = StringModule 'main', code
@last_modules.__root = @active_module
@@ -22,6 +32,25 @@ class TestPilot extends Copilot
end_eval: => @active_module.registry\end_eval!
next_tick: => @T += 1
+ --- poll for changes and tick.
+ tick: =>
+ return unless @last_modules.__root
+
+ @T += 1
+
+ ok, err = @poll!
+ if not ok
+ error err
+
+ root = @last_modules.__root
+ if root and root.root
+ L\set_time 'run'
+ ok, error = Error.try "updating", ->
+ root.root\poll_io!
+ root.root\tick!
+ if not ok
+ error
+
require: (name) =>
Error.wrap "loading module '#{name}'", ->
ok, lua = pcall require, "alv-lib.#{name}"
@@ -30,13 +59,11 @@ class TestPilot extends Copilot
else
error Error 'import', "module not found"
-export COPILOT
-
{
:TestPilot
do_setup: ->
- COPILOT = TestPilot!
+ TestPilot!
COPILOT\begin_eval!
do_teardown: ->