Dus.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#lang racket/base
|
#lang racket/base
|
||||||
|
|
||||||
(require racket/string
|
(require racket/string
|
||||||
|
json
|
||||||
"../main.rkt"
|
"../main.rkt"
|
||||||
"jsmaker-executors.rkt"
|
"jsmaker-executors.rkt"
|
||||||
"jsmaker-test-framework.rkt")
|
"jsmaker-test-framework.rkt")
|
||||||
@@ -86,6 +87,37 @@
|
|||||||
(unless (not (regexp-match? #rx"__let_star_value" simple-let-star))
|
(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))
|
(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
|
(define tests
|
||||||
(list
|
(list
|
||||||
(js-expression-test 'if-zero (js/expression (if 0 1 2)) "1")
|
(js-expression-test 'if-zero (js/expression (if 0 1 2)) "1")
|
||||||
@@ -112,6 +144,9 @@
|
|||||||
(js/expression (array (eval (list 1 2 3))
|
(js/expression (array (eval (list 1 2 3))
|
||||||
(eval (string-append "a" "b"))))
|
(eval (string-append "a" "b"))))
|
||||||
"[[1,2,3],\"ab\"]")
|
"[[1,2,3],\"ab\"]")
|
||||||
|
(js-expression-test 'webview-top-level-script-vm
|
||||||
|
webview-top-level-vm-smoke
|
||||||
|
"true")
|
||||||
(let ([x 10]
|
(let ([x 10]
|
||||||
[y 20])
|
[y 20])
|
||||||
(js-expression-test 'runtime-eval-lexical-let
|
(js-expression-test 'runtime-eval-lexical-let
|
||||||
|
|||||||
Reference in New Issue
Block a user