test: test case for 3d34f406a / #10870

This commit is contained in:
Evan You 2024-07-12 01:25:08 +08:00
parent ee0248accf
commit 314ce82e47
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
1 changed files with 78 additions and 0 deletions

View File

@ -8,6 +8,8 @@ import {
createApp,
createBlock,
createCommentVNode,
createElementBlock,
createElementVNode,
createTextVNode,
createVNode,
defineComponent,
@ -962,4 +964,80 @@ describe('renderer: optimized mode', () => {
// should successfully unmount without error
expect(inner(root)).toBe(`<!---->`)
})
// #10870
test('should bail manually rendered compiler slots for both mount and update', async () => {
// only reproducible in prod
__DEV__ = false
function Outer(_: any, { slots }: any) {
return slots.default()
}
const Mid = {
render(ctx: any) {
return (
openBlock(),
createElementBlock('div', null, [renderSlot(ctx.$slots, 'default')])
)
},
}
const state1 = ref(true)
const state2 = ref(true)
const App = {
render() {
return (
openBlock(),
createBlock(Outer, null, {
default: withCtx(() => [
createVNode(
Mid,
{ foo: state2.value },
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', null, [
state2.value
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
id: 'if',
foo: state1.value,
},
null,
8 /* PROPS */,
['foo'],
))
: createCommentVNode('v-if', true),
]),
]),
]),
_: 1 /* STABLE */,
},
8 /* PROPS */,
['foo'],
),
]),
_: 1 /* STABLE */,
})
)
},
}
const app = createApp(App)
app.config.errorHandler = vi.fn()
try {
app.mount(root)
state1.value = false
await nextTick()
state2.value = false
await nextTick()
} finally {
__DEV__ = true
expect(app.config.errorHandler).not.toHaveBeenCalled()
}
})
})