Add inline test runner for temperature converter demo
Temperature converter tests (6 tests): initial value, computed fahrenheit derivation, +5/-5 click handlers, reactive propagation, multiple click accumulation. New components: - sx/sx/reactive-islands/test-runner.sx — reusable defisland that parses test source, runs defsuite/deftest forms via cek-eval, and displays pass/fail results with re-run button - sx/sx/reactive-islands/test-temperature.sx — standalone test file Added cek-try primitive to both browser (sx_browser.ml) and server (sx_server.ml) for safe test execution with error catching. Browser bundle now includes harness files (harness.sx, harness-reactive.sx, harness-web.sx) for inline test execution. Known: SSR renders test runner body instead of placeholder, causing arity error on complex str expressions. Needs island SSR handling fix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -385,6 +385,16 @@ let setup_evaluator_bridge env =
|
||||
| [fn_val; List call_args] ->
|
||||
Sx_ref.cek_call fn_val (List call_args)
|
||||
| _ -> raise (Eval_error "call-lambda: expected (fn args env?)"));
|
||||
bind "cek-try" (fun args ->
|
||||
match args with
|
||||
| [thunk; handler] ->
|
||||
(try Sx_ref.cek_call thunk Nil
|
||||
with Eval_error msg -> Sx_ref.cek_call handler (String msg))
|
||||
| [thunk] ->
|
||||
(try let r = Sx_ref.cek_call thunk Nil in
|
||||
List [Symbol "ok"; r]
|
||||
with Eval_error msg -> List [Symbol "error"; String msg])
|
||||
| _ -> Nil);
|
||||
bind "cek-call" (fun args ->
|
||||
match args with
|
||||
| [fn_val; List call_args] -> Sx_ref.cek_call fn_val (List call_args)
|
||||
|
||||
Reference in New Issue
Block a user