Skip to content

Commit 9315570

Browse files
antfupikax
andauthored
chore: add test cases for #448 (#548)
Co-Authored-By: Carlos Rodrigues <[email protected]> Co-authored-by: Carlos Rodrigues <[email protected]>
1 parent 535c829 commit 9315570

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

test/setup.spec.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ const {
1010
markRaw,
1111
toRaw,
1212
nextTick,
13+
defineComponent,
14+
onMounted,
1315
} = require('../src')
1416
const { sleep } = require('./helpers/utils')
1517

@@ -886,4 +888,65 @@ describe('setup', () => {
886888
await nextTick()
887889
expect(vm.$el.textContent).toBe('2')
888890
})
891+
892+
// #448
893+
it('should not cause infinite loop', async () => {
894+
const A = defineComponent({
895+
template: `<div></div>`,
896+
props: {
897+
pattern: {
898+
type: RegExp,
899+
required: true,
900+
},
901+
},
902+
903+
setup(props) {
904+
return {
905+
props,
906+
}
907+
},
908+
})
909+
const B = defineComponent({
910+
template: `<div></div>`,
911+
setup(props, { emit }) {
912+
onMounted(() => {
913+
emit('ev', true)
914+
})
915+
916+
return {}
917+
},
918+
})
919+
920+
const vm = new Vue(
921+
defineComponent({
922+
components: {
923+
A,
924+
B,
925+
},
926+
927+
template: ` <div>
928+
<A :pattern="/./"/>
929+
930+
<div
931+
v-for="(k, v) in o.v"
932+
:key="v"
933+
>{{v}}</div>
934+
935+
<B @ev="(v) => { o = v; }"/>
936+
</div>`,
937+
setup(props, { emit }) {
938+
const o = ref([false])
939+
940+
return {
941+
o,
942+
emit,
943+
}
944+
},
945+
})
946+
).$mount()
947+
948+
await vm.$nextTick()
949+
950+
expect(warn).not.toBeCalled()
951+
})
889952
})

0 commit comments

Comments
 (0)