Dus.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#lang racket/base
|
||||
|
||||
(require racket/string
|
||||
json
|
||||
"../main.rkt"
|
||||
"jsmaker-executors.rkt"
|
||||
"jsmaker-test-framework.rkt")
|
||||
@@ -86,6 +87,37 @@
|
||||
(unless (not (regexp-match? #rx"__let_star_value" simple-let-star))
|
||||
(error 'jsmaker-regression "simple let* should not use tempvars, got: ~a" simple-let-star))
|
||||
|
||||
(define webview-set-value-program
|
||||
(let ([val "2026-05-28"])
|
||||
(with-id->el/inject 'inp2 el
|
||||
(if (or (= (js-dot el type) "checkbox")
|
||||
(= (js-dot el type) "radio"))
|
||||
(begin
|
||||
(set! (js-dot el checked) (inject (if (eq? val #f) #f #t)))
|
||||
#t)
|
||||
(begin
|
||||
(set! (js-dot el value) (inject val))
|
||||
#t)))))
|
||||
|
||||
(unless (not (regexp-match? #rx"return true;" webview-set-value-program))
|
||||
(error 'jsmaker-regression
|
||||
"top-level WebView-style js must not emit branch-level return true statements, got: ~a"
|
||||
webview-set-value-program))
|
||||
|
||||
(define webview-top-level-vm-smoke
|
||||
(format #<<JS
|
||||
(() => {
|
||||
if (typeof require !== 'function') return true;
|
||||
const vm = require('vm');
|
||||
const el = { type: 'text', value: '', checked: false };
|
||||
const context = { document: { getElementById: (id) => el } };
|
||||
vm.runInNewContext(~a, context);
|
||||
return JSON.stringify([el.value, el.checked]) === ~a;
|
||||
})()
|
||||
JS
|
||||
(jsexpr->string webview-set-value-program)
|
||||
(jsexpr->string "[\"2026-05-28\",false]")))
|
||||
|
||||
(define tests
|
||||
(list
|
||||
(js-expression-test 'if-zero (js/expression (if 0 1 2)) "1")
|
||||
@@ -112,6 +144,9 @@
|
||||
(js/expression (array (eval (list 1 2 3))
|
||||
(eval (string-append "a" "b"))))
|
||||
"[[1,2,3],\"ab\"]")
|
||||
(js-expression-test 'webview-top-level-script-vm
|
||||
webview-top-level-vm-smoke
|
||||
"true")
|
||||
(let ([x 10]
|
||||
[y 20])
|
||||
(js-expression-test 'runtime-eval-lexical-let
|
||||
|
||||
Reference in New Issue
Block a user