diff options
Diffstat (limited to 'spec/test_setup.moon')
| -rw-r--r-- | spec/test_setup.moon | 33 |
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: -> |
