mirror of
https://github.com/leporello-js/leporello-js
synced 2026-01-13 13:04:30 -08:00
fix tests
This commit is contained in:
2
src/effects.js
vendored
2
src/effects.js
vendored
@@ -181,7 +181,7 @@ export const apply_side_effects = (prev, next, ui) => {
|
|||||||
next.eval_modules_state != null
|
next.eval_modules_state != null
|
||||||
) {
|
) {
|
||||||
const s = next.eval_modules_state
|
const s = next.eval_modules_state
|
||||||
s.promise.__original_then(result => {
|
s.promise.then(result => {
|
||||||
exec('eval_modules_finished',
|
exec('eval_modules_finished',
|
||||||
next, /* becomes prev_state */
|
next, /* becomes prev_state */
|
||||||
result,
|
result,
|
||||||
|
|||||||
@@ -515,7 +515,8 @@ export const eval_modules = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(is_async) {
|
if(is_async) {
|
||||||
return result.__original_then(make_result)
|
// convert app_window.Promise to host Promise
|
||||||
|
return Promise.resolve(result).then(make_result)
|
||||||
} else {
|
} else {
|
||||||
return make_result(result)
|
return make_result(result)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ const make_patched_method = (window, original, name, use_context) => {
|
|||||||
? new original(...args)
|
? new original(...args)
|
||||||
: original.apply(this, args)
|
: original.apply(this, args)
|
||||||
|
|
||||||
if(value instanceof cxt.window.Promise) {
|
if(value?.[Symbol.toStringTag] == 'Promise') {
|
||||||
// TODO use __original_then, not finally which calls
|
// TODO use __original_then, not finally which calls
|
||||||
// patched 'then'?
|
// patched 'then'?
|
||||||
value = value.finally(() => {
|
value = value.finally(() => {
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ const __await_start = (cxt, promise) => {
|
|||||||
const children_copy = cxt.children
|
const children_copy = cxt.children
|
||||||
const result = {children_copy, promise}
|
const result = {children_copy, promise}
|
||||||
|
|
||||||
if(promise instanceof cxt.window.Promise) {
|
if(promise?.[Symbol.toStringTag] == 'Promise') {
|
||||||
result.promise = promise.then(
|
result.promise = promise.then(
|
||||||
(value) => {
|
(value) => {
|
||||||
result.status = {ok: true, value}
|
result.status = {ok: true, value}
|
||||||
|
|||||||
@@ -1,3 +1,13 @@
|
|||||||
|
/*
|
||||||
|
For node.js tests
|
||||||
|
|
||||||
|
It forces node.js to load Response (which is loaded lazily)
|
||||||
|
|
||||||
|
Without this, `Response` loading code would be executed in record_io.js and
|
||||||
|
break test by calling `now()`
|
||||||
|
*/
|
||||||
|
globalThis.Response
|
||||||
|
|
||||||
export const run = tests => {
|
export const run = tests => {
|
||||||
// Runs test, return failure or null if not failed
|
// Runs test, return failure or null if not failed
|
||||||
const run_test = t => {
|
const run_test = t => {
|
||||||
|
|||||||
@@ -1059,7 +1059,7 @@ export const tests = [
|
|||||||
'a': 'Object.assign(globalThis, {test_import: true})',
|
'a': 'Object.assign(globalThis, {test_import: true})',
|
||||||
})
|
})
|
||||||
assert_equal(i.active_calltree_node.ok, true)
|
assert_equal(i.active_calltree_node.ok, true)
|
||||||
assert_equal(globalThis.test_import, true)
|
assert_equal(globalThis.app_window.test_import, true)
|
||||||
}),
|
}),
|
||||||
|
|
||||||
test('modules bare import', () => {
|
test('modules bare import', () => {
|
||||||
@@ -1068,7 +1068,7 @@ export const tests = [
|
|||||||
'a': 'Object.assign(globalThis, {test_import: true})',
|
'a': 'Object.assign(globalThis, {test_import: true})',
|
||||||
})
|
})
|
||||||
assert_equal(i.active_calltree_node.ok, true)
|
assert_equal(i.active_calltree_node.ok, true)
|
||||||
assert_equal(globalThis.test_import, true)
|
assert_equal(globalThis.app_window.test_import, true)
|
||||||
}),
|
}),
|
||||||
|
|
||||||
test('bug parser pragma external', () => {
|
test('bug parser pragma external', () => {
|
||||||
|
|||||||
@@ -11,12 +11,17 @@ Object.assign(globalThis,
|
|||||||
// for convenince, to type just `log` instead of `console.log`
|
// for convenince, to type just `log` instead of `console.log`
|
||||||
log: console.log,
|
log: console.log,
|
||||||
|
|
||||||
// For test env, set globalThis.app_window to just globalThis
|
|
||||||
app_window: globalThis,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
export const patch_builtin = new Function(`
|
export const patch_builtin = new Function(`
|
||||||
|
if(globalThis.process != null ) {
|
||||||
|
globalThis.app_window = globalThis
|
||||||
|
} else {
|
||||||
|
const iframe = globalThis.document.createElement('iframe')
|
||||||
|
globalThis.document.body.appendChild(iframe)
|
||||||
|
globalThis.app_window = iframe.contentWindow
|
||||||
|
}
|
||||||
let originals = globalThis.app_window.__builtins_originals
|
let originals = globalThis.app_window.__builtins_originals
|
||||||
let patched = globalThis.app_window.__builtins_patched
|
let patched = globalThis.app_window.__builtins_patched
|
||||||
if(originals == null) {
|
if(originals == null) {
|
||||||
@@ -170,9 +175,9 @@ export const test_deferred_calls_state = code => {
|
|||||||
|
|
||||||
export const stringify = val =>
|
export const stringify = val =>
|
||||||
JSON.stringify(val, (key, value) => {
|
JSON.stringify(val, (key, value) => {
|
||||||
if(value instanceof Set){
|
if(value?.[Symbol.toStringTag] == 'Set'){
|
||||||
return [...value]
|
return [...value]
|
||||||
} else if (value instanceof Map) {
|
} else if(value?.[Symbol.toStringTag] == 'Map'){
|
||||||
return Object.fromEntries([...value.entries()])
|
return Object.fromEntries([...value.entries()])
|
||||||
} else if(value instanceof Error) {
|
} else if(value instanceof Error) {
|
||||||
return {message: value.message}
|
return {message: value.message}
|
||||||
|
|||||||
Reference in New Issue
Block a user