* [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg
@ 2012-01-09 15:56 Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment Anthony Liguori
` (11 more replies)
0 siblings, 12 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
Makefile | 4 ++--
configure | 6 +++---
tests/{ => tcg}/Makefile | 0
tests/{ => tcg}/alpha/Makefile | 0
tests/{ => tcg}/alpha/crt.s | 0
tests/{ => tcg}/alpha/hello-alpha.c | 0
tests/{ => tcg}/alpha/test-cond.c | 0
tests/{ => tcg}/alpha/test-ovf.c | 0
tests/{ => tcg}/cris/.gdbinit | 0
tests/{ => tcg}/cris/Makefile | 0
tests/{ => tcg}/cris/README | 0
tests/{ => tcg}/cris/check_abs.c | 0
tests/{ => tcg}/cris/check_addc.c | 0
tests/{ => tcg}/cris/check_addcm.c | 0
tests/{ => tcg}/cris/check_addi.s | 0
tests/{ => tcg}/cris/check_addiv32.s | 0
tests/{ => tcg}/cris/check_addm.s | 0
tests/{ => tcg}/cris/check_addo.c | 0
tests/{ => tcg}/cris/check_addoq.c | 0
tests/{ => tcg}/cris/check_addq.s | 0
tests/{ => tcg}/cris/check_addr.s | 0
tests/{ => tcg}/cris/check_addxc.s | 0
tests/{ => tcg}/cris/check_addxm.s | 0
tests/{ => tcg}/cris/check_addxr.s | 0
tests/{ => tcg}/cris/check_andc.s | 0
tests/{ => tcg}/cris/check_andm.s | 0
tests/{ => tcg}/cris/check_andq.s | 0
tests/{ => tcg}/cris/check_andr.s | 0
tests/{ => tcg}/cris/check_asr.s | 0
tests/{ => tcg}/cris/check_ba.s | 0
tests/{ => tcg}/cris/check_bas.s | 0
tests/{ => tcg}/cris/check_bcc.s | 0
tests/{ => tcg}/cris/check_bound.c | 0
tests/{ => tcg}/cris/check_boundc.s | 0
tests/{ => tcg}/cris/check_boundr.s | 0
tests/{ => tcg}/cris/check_btst.s | 0
tests/{ => tcg}/cris/check_clearfv32.s | 0
tests/{ => tcg}/cris/check_clrjmp1.s | 0
tests/{ => tcg}/cris/check_cmp-2.s | 0
tests/{ => tcg}/cris/check_cmpc.s | 0
tests/{ => tcg}/cris/check_cmpm.s | 0
tests/{ => tcg}/cris/check_cmpq.s | 0
tests/{ => tcg}/cris/check_cmpr.s | 0
tests/{ => tcg}/cris/check_cmpxc.s | 0
tests/{ => tcg}/cris/check_cmpxm.s | 0
tests/{ => tcg}/cris/check_dstep.s | 0
tests/{ => tcg}/cris/check_ftag.c | 0
tests/{ => tcg}/cris/check_gcctorture_pr28634-1.c | 0
tests/{ => tcg}/cris/check_gcctorture_pr28634.c | 0
tests/{ => tcg}/cris/check_glibc_kernelversion.c | 0
tests/{ => tcg}/cris/check_hello.c | 0
tests/{ => tcg}/cris/check_int64.c | 0
tests/{ => tcg}/cris/check_jsr.s | 0
tests/{ => tcg}/cris/check_lapc.s | 0
tests/{ => tcg}/cris/check_lsl.s | 0
tests/{ => tcg}/cris/check_lsr.s | 0
tests/{ => tcg}/cris/check_lz.c | 0
tests/{ => tcg}/cris/check_mapbrk.c | 0
tests/{ => tcg}/cris/check_mcp.s | 0
tests/{ => tcg}/cris/check_mmap1.c | 0
tests/{ => tcg}/cris/check_mmap2.c | 0
tests/{ => tcg}/cris/check_mmap3.c | 0
tests/{ => tcg}/cris/check_movdelsr1.s | 0
tests/{ => tcg}/cris/check_movecr.s | 0
tests/{ => tcg}/cris/check_movei.s | 0
tests/{ => tcg}/cris/check_movemr.s | 0
tests/{ => tcg}/cris/check_movemrv32.s | 0
tests/{ => tcg}/cris/check_moveq.c | 0
tests/{ => tcg}/cris/check_mover.s | 0
tests/{ => tcg}/cris/check_moverm.s | 0
tests/{ => tcg}/cris/check_movmp.s | 0
tests/{ => tcg}/cris/check_movpmv32.s | 0
tests/{ => tcg}/cris/check_movpr.s | 0
tests/{ => tcg}/cris/check_movprv32.s | 0
tests/{ => tcg}/cris/check_movscr.s | 0
tests/{ => tcg}/cris/check_movsm.s | 0
tests/{ => tcg}/cris/check_movsr.s | 0
tests/{ => tcg}/cris/check_movucr.s | 0
tests/{ => tcg}/cris/check_movum.s | 0
tests/{ => tcg}/cris/check_movur.s | 0
tests/{ => tcg}/cris/check_mulv32.s | 0
tests/{ => tcg}/cris/check_mulx.s | 0
tests/{ => tcg}/cris/check_neg.s | 0
tests/{ => tcg}/cris/check_not.s | 0
tests/{ => tcg}/cris/check_openpf1.c | 0
tests/{ => tcg}/cris/check_openpf2.c | 0
tests/{ => tcg}/cris/check_openpf3.c | 0
tests/{ => tcg}/cris/check_openpf4.c | 0
tests/{ => tcg}/cris/check_openpf5.c | 0
tests/{ => tcg}/cris/check_orc.s | 0
tests/{ => tcg}/cris/check_orm.s | 0
tests/{ => tcg}/cris/check_orq.s | 0
tests/{ => tcg}/cris/check_orr.s | 0
tests/{ => tcg}/cris/check_ret.s | 0
tests/{ => tcg}/cris/check_scc.s | 0
tests/{ => tcg}/cris/check_settls1.c | 0
tests/{ => tcg}/cris/check_sigalrm.c | 0
tests/{ => tcg}/cris/check_stat1.c | 0
tests/{ => tcg}/cris/check_stat2.c | 0
tests/{ => tcg}/cris/check_stat3.c | 0
tests/{ => tcg}/cris/check_stat4.c | 0
tests/{ => tcg}/cris/check_subc.s | 0
tests/{ => tcg}/cris/check_subm.s | 0
tests/{ => tcg}/cris/check_subq.s | 0
tests/{ => tcg}/cris/check_subr.s | 0
tests/{ => tcg}/cris/check_swap.c | 0
tests/{ => tcg}/cris/check_time1.c | 0
tests/{ => tcg}/cris/check_time2.c | 0
tests/{ => tcg}/cris/check_xarith.s | 0
tests/{ => tcg}/cris/crisutils.h | 0
tests/{ => tcg}/cris/crt.s | 0
tests/{ => tcg}/cris/sys.c | 0
tests/{ => tcg}/cris/sys.h | 0
tests/{ => tcg}/cris/testutils.inc | 0
tests/{ => tcg}/hello-arm.c | 0
tests/{ => tcg}/hello-i386.c | 0
tests/{ => tcg}/hello-mips.c | 0
tests/{ => tcg}/linux-test.c | 0
tests/{ => tcg}/lm32/Makefile | 0
tests/{ => tcg}/lm32/crt.S | 0
tests/{ => tcg}/lm32/linker.ld | 0
tests/{ => tcg}/lm32/macros.inc | 0
tests/{ => tcg}/lm32/test_add.S | 0
tests/{ => tcg}/lm32/test_addi.S | 0
tests/{ => tcg}/lm32/test_and.S | 0
tests/{ => tcg}/lm32/test_andhi.S | 0
tests/{ => tcg}/lm32/test_andi.S | 0
tests/{ => tcg}/lm32/test_b.S | 0
tests/{ => tcg}/lm32/test_be.S | 0
tests/{ => tcg}/lm32/test_bg.S | 0
tests/{ => tcg}/lm32/test_bge.S | 0
tests/{ => tcg}/lm32/test_bgeu.S | 0
tests/{ => tcg}/lm32/test_bgu.S | 0
tests/{ => tcg}/lm32/test_bi.S | 0
tests/{ => tcg}/lm32/test_bne.S | 0
tests/{ => tcg}/lm32/test_break.S | 0
tests/{ => tcg}/lm32/test_bret.S | 0
tests/{ => tcg}/lm32/test_call.S | 0
tests/{ => tcg}/lm32/test_calli.S | 0
tests/{ => tcg}/lm32/test_cmpe.S | 0
tests/{ => tcg}/lm32/test_cmpei.S | 0
tests/{ => tcg}/lm32/test_cmpg.S | 0
tests/{ => tcg}/lm32/test_cmpge.S | 0
tests/{ => tcg}/lm32/test_cmpgei.S | 0
tests/{ => tcg}/lm32/test_cmpgeu.S | 0
tests/{ => tcg}/lm32/test_cmpgeui.S | 0
tests/{ => tcg}/lm32/test_cmpgi.S | 0
tests/{ => tcg}/lm32/test_cmpgu.S | 0
tests/{ => tcg}/lm32/test_cmpgui.S | 0
tests/{ => tcg}/lm32/test_cmpne.S | 0
tests/{ => tcg}/lm32/test_cmpnei.S | 0
tests/{ => tcg}/lm32/test_divu.S | 0
tests/{ => tcg}/lm32/test_eret.S | 0
tests/{ => tcg}/lm32/test_lb.S | 0
tests/{ => tcg}/lm32/test_lbu.S | 0
tests/{ => tcg}/lm32/test_lh.S | 0
tests/{ => tcg}/lm32/test_lhu.S | 0
tests/{ => tcg}/lm32/test_lw.S | 0
tests/{ => tcg}/lm32/test_modu.S | 0
tests/{ => tcg}/lm32/test_mul.S | 0
tests/{ => tcg}/lm32/test_muli.S | 0
tests/{ => tcg}/lm32/test_nor.S | 0
tests/{ => tcg}/lm32/test_nori.S | 0
tests/{ => tcg}/lm32/test_or.S | 0
tests/{ => tcg}/lm32/test_orhi.S | 0
tests/{ => tcg}/lm32/test_ori.S | 0
tests/{ => tcg}/lm32/test_ret.S | 0
tests/{ => tcg}/lm32/test_sb.S | 0
tests/{ => tcg}/lm32/test_scall.S | 0
tests/{ => tcg}/lm32/test_sextb.S | 0
tests/{ => tcg}/lm32/test_sexth.S | 0
tests/{ => tcg}/lm32/test_sh.S | 0
tests/{ => tcg}/lm32/test_sl.S | 0
tests/{ => tcg}/lm32/test_sli.S | 0
tests/{ => tcg}/lm32/test_sr.S | 0
tests/{ => tcg}/lm32/test_sri.S | 0
tests/{ => tcg}/lm32/test_sru.S | 0
tests/{ => tcg}/lm32/test_srui.S | 0
tests/{ => tcg}/lm32/test_sub.S | 0
tests/{ => tcg}/lm32/test_sw.S | 0
tests/{ => tcg}/lm32/test_xnor.S | 0
tests/{ => tcg}/lm32/test_xnori.S | 0
tests/{ => tcg}/lm32/test_xor.S | 0
tests/{ => tcg}/lm32/test_xori.S | 0
tests/{ => tcg}/pi_10.com | Bin 54 -> 54 bytes
tests/{ => tcg}/runcom.c | 0
tests/{ => tcg}/sha1.c | 0
tests/{ => tcg}/test-arm-iwmmxt.s | 0
tests/{ => tcg}/test-i386-code16.S | 0
tests/{ => tcg}/test-i386-muldiv.h | 0
tests/{ => tcg}/test-i386-shift.h | 0
tests/{ => tcg}/test-i386-ssse3.c | 0
tests/{ => tcg}/test-i386-vm86.S | 0
tests/{ => tcg}/test-i386.c | 0
tests/{ => tcg}/test-i386.h | 0
tests/{ => tcg}/test-mmap.c | 0
tests/{ => tcg}/test_path.c | 0
tests/{ => tcg}/testthread.c | 0
tests/{ => tcg}/xtensa/Makefile | 0
tests/{ => tcg}/xtensa/crt.S | 0
tests/{ => tcg}/xtensa/linker.ld | 0
tests/{ => tcg}/xtensa/macros.inc | 0
tests/{ => tcg}/xtensa/test_b.S | 0
tests/{ => tcg}/xtensa/test_bi.S | 0
tests/{ => tcg}/xtensa/test_boolean.S | 0
tests/{ => tcg}/xtensa/test_bz.S | 0
tests/{ => tcg}/xtensa/test_clamps.S | 0
tests/{ => tcg}/xtensa/test_fail.S | 0
tests/{ => tcg}/xtensa/test_interrupt.S | 0
tests/{ => tcg}/xtensa/test_loop.S | 0
tests/{ => tcg}/xtensa/test_mac16.S | 0
tests/{ => tcg}/xtensa/test_max.S | 0
tests/{ => tcg}/xtensa/test_min.S | 0
tests/{ => tcg}/xtensa/test_mmu.S | 0
tests/{ => tcg}/xtensa/test_mul16.S | 0
tests/{ => tcg}/xtensa/test_mul32.S | 0
tests/{ => tcg}/xtensa/test_nsa.S | 0
tests/{ => tcg}/xtensa/test_pipeline.S | 0
tests/{ => tcg}/xtensa/test_quo.S | 0
tests/{ => tcg}/xtensa/test_rem.S | 0
tests/{ => tcg}/xtensa/test_rst0.S | 0
tests/{ => tcg}/xtensa/test_sar.S | 0
tests/{ => tcg}/xtensa/test_sext.S | 0
tests/{ => tcg}/xtensa/test_shift.S | 0
tests/{ => tcg}/xtensa/test_timer.S | 0
tests/{ => tcg}/xtensa/test_windowed.S | 0
tests/{ => tcg}/xtensa/vectors.S | 0
227 files changed, 5 insertions(+), 5 deletions(-)
rename tests/{ => tcg}/Makefile (100%)
rename tests/{ => tcg}/alpha/Makefile (100%)
rename tests/{ => tcg}/alpha/crt.s (100%)
rename tests/{ => tcg}/alpha/hello-alpha.c (100%)
rename tests/{ => tcg}/alpha/test-cond.c (100%)
rename tests/{ => tcg}/alpha/test-ovf.c (100%)
rename tests/{ => tcg}/cris/.gdbinit (100%)
rename tests/{ => tcg}/cris/Makefile (100%)
rename tests/{ => tcg}/cris/README (100%)
rename tests/{ => tcg}/cris/check_abs.c (100%)
rename tests/{ => tcg}/cris/check_addc.c (100%)
rename tests/{ => tcg}/cris/check_addcm.c (100%)
rename tests/{ => tcg}/cris/check_addi.s (100%)
rename tests/{ => tcg}/cris/check_addiv32.s (100%)
rename tests/{ => tcg}/cris/check_addm.s (100%)
rename tests/{ => tcg}/cris/check_addo.c (100%)
rename tests/{ => tcg}/cris/check_addoq.c (100%)
rename tests/{ => tcg}/cris/check_addq.s (100%)
rename tests/{ => tcg}/cris/check_addr.s (100%)
rename tests/{ => tcg}/cris/check_addxc.s (100%)
rename tests/{ => tcg}/cris/check_addxm.s (100%)
rename tests/{ => tcg}/cris/check_addxr.s (100%)
rename tests/{ => tcg}/cris/check_andc.s (100%)
rename tests/{ => tcg}/cris/check_andm.s (100%)
rename tests/{ => tcg}/cris/check_andq.s (100%)
rename tests/{ => tcg}/cris/check_andr.s (100%)
rename tests/{ => tcg}/cris/check_asr.s (100%)
rename tests/{ => tcg}/cris/check_ba.s (100%)
rename tests/{ => tcg}/cris/check_bas.s (100%)
rename tests/{ => tcg}/cris/check_bcc.s (100%)
rename tests/{ => tcg}/cris/check_bound.c (100%)
rename tests/{ => tcg}/cris/check_boundc.s (100%)
rename tests/{ => tcg}/cris/check_boundr.s (100%)
rename tests/{ => tcg}/cris/check_btst.s (100%)
rename tests/{ => tcg}/cris/check_clearfv32.s (100%)
rename tests/{ => tcg}/cris/check_clrjmp1.s (100%)
rename tests/{ => tcg}/cris/check_cmp-2.s (100%)
rename tests/{ => tcg}/cris/check_cmpc.s (100%)
rename tests/{ => tcg}/cris/check_cmpm.s (100%)
rename tests/{ => tcg}/cris/check_cmpq.s (100%)
rename tests/{ => tcg}/cris/check_cmpr.s (100%)
rename tests/{ => tcg}/cris/check_cmpxc.s (100%)
rename tests/{ => tcg}/cris/check_cmpxm.s (100%)
rename tests/{ => tcg}/cris/check_dstep.s (100%)
rename tests/{ => tcg}/cris/check_ftag.c (100%)
rename tests/{ => tcg}/cris/check_gcctorture_pr28634-1.c (100%)
rename tests/{ => tcg}/cris/check_gcctorture_pr28634.c (100%)
rename tests/{ => tcg}/cris/check_glibc_kernelversion.c (100%)
rename tests/{ => tcg}/cris/check_hello.c (100%)
rename tests/{ => tcg}/cris/check_int64.c (100%)
rename tests/{ => tcg}/cris/check_jsr.s (100%)
rename tests/{ => tcg}/cris/check_lapc.s (100%)
rename tests/{ => tcg}/cris/check_lsl.s (100%)
rename tests/{ => tcg}/cris/check_lsr.s (100%)
rename tests/{ => tcg}/cris/check_lz.c (100%)
rename tests/{ => tcg}/cris/check_mapbrk.c (100%)
rename tests/{ => tcg}/cris/check_mcp.s (100%)
rename tests/{ => tcg}/cris/check_mmap1.c (100%)
rename tests/{ => tcg}/cris/check_mmap2.c (100%)
rename tests/{ => tcg}/cris/check_mmap3.c (100%)
rename tests/{ => tcg}/cris/check_movdelsr1.s (100%)
rename tests/{ => tcg}/cris/check_movecr.s (100%)
rename tests/{ => tcg}/cris/check_movei.s (100%)
rename tests/{ => tcg}/cris/check_movemr.s (100%)
rename tests/{ => tcg}/cris/check_movemrv32.s (100%)
rename tests/{ => tcg}/cris/check_moveq.c (100%)
rename tests/{ => tcg}/cris/check_mover.s (100%)
rename tests/{ => tcg}/cris/check_moverm.s (100%)
rename tests/{ => tcg}/cris/check_movmp.s (100%)
rename tests/{ => tcg}/cris/check_movpmv32.s (100%)
rename tests/{ => tcg}/cris/check_movpr.s (100%)
rename tests/{ => tcg}/cris/check_movprv32.s (100%)
rename tests/{ => tcg}/cris/check_movscr.s (100%)
rename tests/{ => tcg}/cris/check_movsm.s (100%)
rename tests/{ => tcg}/cris/check_movsr.s (100%)
rename tests/{ => tcg}/cris/check_movucr.s (100%)
rename tests/{ => tcg}/cris/check_movum.s (100%)
rename tests/{ => tcg}/cris/check_movur.s (100%)
rename tests/{ => tcg}/cris/check_mulv32.s (100%)
rename tests/{ => tcg}/cris/check_mulx.s (100%)
rename tests/{ => tcg}/cris/check_neg.s (100%)
rename tests/{ => tcg}/cris/check_not.s (100%)
rename tests/{ => tcg}/cris/check_openpf1.c (100%)
rename tests/{ => tcg}/cris/check_openpf2.c (100%)
rename tests/{ => tcg}/cris/check_openpf3.c (100%)
rename tests/{ => tcg}/cris/check_openpf4.c (100%)
rename tests/{ => tcg}/cris/check_openpf5.c (100%)
rename tests/{ => tcg}/cris/check_orc.s (100%)
rename tests/{ => tcg}/cris/check_orm.s (100%)
rename tests/{ => tcg}/cris/check_orq.s (100%)
rename tests/{ => tcg}/cris/check_orr.s (100%)
rename tests/{ => tcg}/cris/check_ret.s (100%)
rename tests/{ => tcg}/cris/check_scc.s (100%)
rename tests/{ => tcg}/cris/check_settls1.c (100%)
rename tests/{ => tcg}/cris/check_sigalrm.c (100%)
rename tests/{ => tcg}/cris/check_stat1.c (100%)
rename tests/{ => tcg}/cris/check_stat2.c (100%)
rename tests/{ => tcg}/cris/check_stat3.c (100%)
rename tests/{ => tcg}/cris/check_stat4.c (100%)
rename tests/{ => tcg}/cris/check_subc.s (100%)
rename tests/{ => tcg}/cris/check_subm.s (100%)
rename tests/{ => tcg}/cris/check_subq.s (100%)
rename tests/{ => tcg}/cris/check_subr.s (100%)
rename tests/{ => tcg}/cris/check_swap.c (100%)
rename tests/{ => tcg}/cris/check_time1.c (100%)
rename tests/{ => tcg}/cris/check_time2.c (100%)
rename tests/{ => tcg}/cris/check_xarith.s (100%)
rename tests/{ => tcg}/cris/crisutils.h (100%)
rename tests/{ => tcg}/cris/crt.s (100%)
rename tests/{ => tcg}/cris/sys.c (100%)
rename tests/{ => tcg}/cris/sys.h (100%)
rename tests/{ => tcg}/cris/testutils.inc (100%)
rename tests/{ => tcg}/hello-arm.c (100%)
rename tests/{ => tcg}/hello-i386.c (100%)
rename tests/{ => tcg}/hello-mips.c (100%)
rename tests/{ => tcg}/linux-test.c (100%)
rename tests/{ => tcg}/lm32/Makefile (100%)
rename tests/{ => tcg}/lm32/crt.S (100%)
rename tests/{ => tcg}/lm32/linker.ld (100%)
rename tests/{ => tcg}/lm32/macros.inc (100%)
rename tests/{ => tcg}/lm32/test_add.S (100%)
rename tests/{ => tcg}/lm32/test_addi.S (100%)
rename tests/{ => tcg}/lm32/test_and.S (100%)
rename tests/{ => tcg}/lm32/test_andhi.S (100%)
rename tests/{ => tcg}/lm32/test_andi.S (100%)
rename tests/{ => tcg}/lm32/test_b.S (100%)
rename tests/{ => tcg}/lm32/test_be.S (100%)
rename tests/{ => tcg}/lm32/test_bg.S (100%)
rename tests/{ => tcg}/lm32/test_bge.S (100%)
rename tests/{ => tcg}/lm32/test_bgeu.S (100%)
rename tests/{ => tcg}/lm32/test_bgu.S (100%)
rename tests/{ => tcg}/lm32/test_bi.S (100%)
rename tests/{ => tcg}/lm32/test_bne.S (100%)
rename tests/{ => tcg}/lm32/test_break.S (100%)
rename tests/{ => tcg}/lm32/test_bret.S (100%)
rename tests/{ => tcg}/lm32/test_call.S (100%)
rename tests/{ => tcg}/lm32/test_calli.S (100%)
rename tests/{ => tcg}/lm32/test_cmpe.S (100%)
rename tests/{ => tcg}/lm32/test_cmpei.S (100%)
rename tests/{ => tcg}/lm32/test_cmpg.S (100%)
rename tests/{ => tcg}/lm32/test_cmpge.S (100%)
rename tests/{ => tcg}/lm32/test_cmpgei.S (100%)
rename tests/{ => tcg}/lm32/test_cmpgeu.S (100%)
rename tests/{ => tcg}/lm32/test_cmpgeui.S (100%)
rename tests/{ => tcg}/lm32/test_cmpgi.S (100%)
rename tests/{ => tcg}/lm32/test_cmpgu.S (100%)
rename tests/{ => tcg}/lm32/test_cmpgui.S (100%)
rename tests/{ => tcg}/lm32/test_cmpne.S (100%)
rename tests/{ => tcg}/lm32/test_cmpnei.S (100%)
rename tests/{ => tcg}/lm32/test_divu.S (100%)
rename tests/{ => tcg}/lm32/test_eret.S (100%)
rename tests/{ => tcg}/lm32/test_lb.S (100%)
rename tests/{ => tcg}/lm32/test_lbu.S (100%)
rename tests/{ => tcg}/lm32/test_lh.S (100%)
rename tests/{ => tcg}/lm32/test_lhu.S (100%)
rename tests/{ => tcg}/lm32/test_lw.S (100%)
rename tests/{ => tcg}/lm32/test_modu.S (100%)
rename tests/{ => tcg}/lm32/test_mul.S (100%)
rename tests/{ => tcg}/lm32/test_muli.S (100%)
rename tests/{ => tcg}/lm32/test_nor.S (100%)
rename tests/{ => tcg}/lm32/test_nori.S (100%)
rename tests/{ => tcg}/lm32/test_or.S (100%)
rename tests/{ => tcg}/lm32/test_orhi.S (100%)
rename tests/{ => tcg}/lm32/test_ori.S (100%)
rename tests/{ => tcg}/lm32/test_ret.S (100%)
rename tests/{ => tcg}/lm32/test_sb.S (100%)
rename tests/{ => tcg}/lm32/test_scall.S (100%)
rename tests/{ => tcg}/lm32/test_sextb.S (100%)
rename tests/{ => tcg}/lm32/test_sexth.S (100%)
rename tests/{ => tcg}/lm32/test_sh.S (100%)
rename tests/{ => tcg}/lm32/test_sl.S (100%)
rename tests/{ => tcg}/lm32/test_sli.S (100%)
rename tests/{ => tcg}/lm32/test_sr.S (100%)
rename tests/{ => tcg}/lm32/test_sri.S (100%)
rename tests/{ => tcg}/lm32/test_sru.S (100%)
rename tests/{ => tcg}/lm32/test_srui.S (100%)
rename tests/{ => tcg}/lm32/test_sub.S (100%)
rename tests/{ => tcg}/lm32/test_sw.S (100%)
rename tests/{ => tcg}/lm32/test_xnor.S (100%)
rename tests/{ => tcg}/lm32/test_xnori.S (100%)
rename tests/{ => tcg}/lm32/test_xor.S (100%)
rename tests/{ => tcg}/lm32/test_xori.S (100%)
rename tests/{ => tcg}/pi_10.com (100%)
rename tests/{ => tcg}/runcom.c (100%)
rename tests/{ => tcg}/sha1.c (100%)
rename tests/{ => tcg}/test-arm-iwmmxt.s (100%)
rename tests/{ => tcg}/test-i386-code16.S (100%)
rename tests/{ => tcg}/test-i386-muldiv.h (100%)
rename tests/{ => tcg}/test-i386-shift.h (100%)
rename tests/{ => tcg}/test-i386-ssse3.c (100%)
rename tests/{ => tcg}/test-i386-vm86.S (100%)
rename tests/{ => tcg}/test-i386.c (100%)
rename tests/{ => tcg}/test-i386.h (100%)
rename tests/{ => tcg}/test-mmap.c (100%)
rename tests/{ => tcg}/test_path.c (100%)
rename tests/{ => tcg}/testthread.c (100%)
rename tests/{ => tcg}/xtensa/Makefile (100%)
rename tests/{ => tcg}/xtensa/crt.S (100%)
rename tests/{ => tcg}/xtensa/linker.ld (100%)
rename tests/{ => tcg}/xtensa/macros.inc (100%)
rename tests/{ => tcg}/xtensa/test_b.S (100%)
rename tests/{ => tcg}/xtensa/test_bi.S (100%)
rename tests/{ => tcg}/xtensa/test_boolean.S (100%)
rename tests/{ => tcg}/xtensa/test_bz.S (100%)
rename tests/{ => tcg}/xtensa/test_clamps.S (100%)
rename tests/{ => tcg}/xtensa/test_fail.S (100%)
rename tests/{ => tcg}/xtensa/test_interrupt.S (100%)
rename tests/{ => tcg}/xtensa/test_loop.S (100%)
rename tests/{ => tcg}/xtensa/test_mac16.S (100%)
rename tests/{ => tcg}/xtensa/test_max.S (100%)
rename tests/{ => tcg}/xtensa/test_min.S (100%)
rename tests/{ => tcg}/xtensa/test_mmu.S (100%)
rename tests/{ => tcg}/xtensa/test_mul16.S (100%)
rename tests/{ => tcg}/xtensa/test_mul32.S (100%)
rename tests/{ => tcg}/xtensa/test_nsa.S (100%)
rename tests/{ => tcg}/xtensa/test_pipeline.S (100%)
rename tests/{ => tcg}/xtensa/test_quo.S (100%)
rename tests/{ => tcg}/xtensa/test_rem.S (100%)
rename tests/{ => tcg}/xtensa/test_rst0.S (100%)
rename tests/{ => tcg}/xtensa/test_sar.S (100%)
rename tests/{ => tcg}/xtensa/test_sext.S (100%)
rename tests/{ => tcg}/xtensa/test_shift.S (100%)
rename tests/{ => tcg}/xtensa/test_timer.S (100%)
rename tests/{ => tcg}/xtensa/test_windowed.S (100%)
rename tests/{ => tcg}/xtensa/vectors.S (100%)
diff --git a/Makefile b/Makefile
index 9ce8768..0cbe7c2 100644
--- a/Makefile
+++ b/Makefile
@@ -241,7 +241,7 @@ clean:
rm -f trace-dtrace.h trace-dtrace.h-timestamp
rm -f $(GENERATED_SOURCES)
rm -rf $(qapi-dir)
- $(MAKE) -C tests clean
+ $(MAKE) -C tests/tcg clean
for d in $(ALL_SUBDIRS) $(QEMULIBS) libcacard; do \
if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
rm -f $$d/qemu-options.def; \
@@ -319,7 +319,7 @@ endif
# various test targets
test speed: all
- $(MAKE) -C tests $@
+ $(MAKE) -C tests/tcg $@
.PHONY: check
check: $(patsubst %,run-check-%,$(CHECKS))
diff --git a/configure b/configure
index 0309dad..79790b3 100755
--- a/configure
+++ b/configure
@@ -3809,14 +3809,14 @@ echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
done # for target in $targets
# build tree in object directory in case the source is not in the current directory
-DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
+DIRS="tests tests/tcg tests/tcg/cris slirp audio block net pc-bios/optionrom"
DIRS="$DIRS pc-bios/spapr-rtas"
DIRS="$DIRS roms/seabios roms/vgabios"
DIRS="$DIRS fsdev ui"
DIRS="$DIRS qapi qapi-generated"
DIRS="$DIRS qga trace"
-FILES="Makefile tests/Makefile qdict-test-data.txt"
-FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
+FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
+FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
FILES="$FILES pc-bios/spapr-rtas/Makefile"
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
diff --git a/tests/Makefile b/tests/tcg/Makefile
similarity index 100%
rename from tests/Makefile
rename to tests/tcg/Makefile
diff --git a/tests/alpha/Makefile b/tests/tcg/alpha/Makefile
similarity index 100%
rename from tests/alpha/Makefile
rename to tests/tcg/alpha/Makefile
diff --git a/tests/alpha/crt.s b/tests/tcg/alpha/crt.s
similarity index 100%
rename from tests/alpha/crt.s
rename to tests/tcg/alpha/crt.s
diff --git a/tests/alpha/hello-alpha.c b/tests/tcg/alpha/hello-alpha.c
similarity index 100%
rename from tests/alpha/hello-alpha.c
rename to tests/tcg/alpha/hello-alpha.c
diff --git a/tests/alpha/test-cond.c b/tests/tcg/alpha/test-cond.c
similarity index 100%
rename from tests/alpha/test-cond.c
rename to tests/tcg/alpha/test-cond.c
diff --git a/tests/alpha/test-ovf.c b/tests/tcg/alpha/test-ovf.c
similarity index 100%
rename from tests/alpha/test-ovf.c
rename to tests/tcg/alpha/test-ovf.c
diff --git a/tests/cris/.gdbinit b/tests/tcg/cris/.gdbinit
similarity index 100%
rename from tests/cris/.gdbinit
rename to tests/tcg/cris/.gdbinit
diff --git a/tests/cris/Makefile b/tests/tcg/cris/Makefile
similarity index 100%
rename from tests/cris/Makefile
rename to tests/tcg/cris/Makefile
diff --git a/tests/cris/README b/tests/tcg/cris/README
similarity index 100%
rename from tests/cris/README
rename to tests/tcg/cris/README
diff --git a/tests/cris/check_abs.c b/tests/tcg/cris/check_abs.c
similarity index 100%
rename from tests/cris/check_abs.c
rename to tests/tcg/cris/check_abs.c
diff --git a/tests/cris/check_addc.c b/tests/tcg/cris/check_addc.c
similarity index 100%
rename from tests/cris/check_addc.c
rename to tests/tcg/cris/check_addc.c
diff --git a/tests/cris/check_addcm.c b/tests/tcg/cris/check_addcm.c
similarity index 100%
rename from tests/cris/check_addcm.c
rename to tests/tcg/cris/check_addcm.c
diff --git a/tests/cris/check_addi.s b/tests/tcg/cris/check_addi.s
similarity index 100%
rename from tests/cris/check_addi.s
rename to tests/tcg/cris/check_addi.s
diff --git a/tests/cris/check_addiv32.s b/tests/tcg/cris/check_addiv32.s
similarity index 100%
rename from tests/cris/check_addiv32.s
rename to tests/tcg/cris/check_addiv32.s
diff --git a/tests/cris/check_addm.s b/tests/tcg/cris/check_addm.s
similarity index 100%
rename from tests/cris/check_addm.s
rename to tests/tcg/cris/check_addm.s
diff --git a/tests/cris/check_addo.c b/tests/tcg/cris/check_addo.c
similarity index 100%
rename from tests/cris/check_addo.c
rename to tests/tcg/cris/check_addo.c
diff --git a/tests/cris/check_addoq.c b/tests/tcg/cris/check_addoq.c
similarity index 100%
rename from tests/cris/check_addoq.c
rename to tests/tcg/cris/check_addoq.c
diff --git a/tests/cris/check_addq.s b/tests/tcg/cris/check_addq.s
similarity index 100%
rename from tests/cris/check_addq.s
rename to tests/tcg/cris/check_addq.s
diff --git a/tests/cris/check_addr.s b/tests/tcg/cris/check_addr.s
similarity index 100%
rename from tests/cris/check_addr.s
rename to tests/tcg/cris/check_addr.s
diff --git a/tests/cris/check_addxc.s b/tests/tcg/cris/check_addxc.s
similarity index 100%
rename from tests/cris/check_addxc.s
rename to tests/tcg/cris/check_addxc.s
diff --git a/tests/cris/check_addxm.s b/tests/tcg/cris/check_addxm.s
similarity index 100%
rename from tests/cris/check_addxm.s
rename to tests/tcg/cris/check_addxm.s
diff --git a/tests/cris/check_addxr.s b/tests/tcg/cris/check_addxr.s
similarity index 100%
rename from tests/cris/check_addxr.s
rename to tests/tcg/cris/check_addxr.s
diff --git a/tests/cris/check_andc.s b/tests/tcg/cris/check_andc.s
similarity index 100%
rename from tests/cris/check_andc.s
rename to tests/tcg/cris/check_andc.s
diff --git a/tests/cris/check_andm.s b/tests/tcg/cris/check_andm.s
similarity index 100%
rename from tests/cris/check_andm.s
rename to tests/tcg/cris/check_andm.s
diff --git a/tests/cris/check_andq.s b/tests/tcg/cris/check_andq.s
similarity index 100%
rename from tests/cris/check_andq.s
rename to tests/tcg/cris/check_andq.s
diff --git a/tests/cris/check_andr.s b/tests/tcg/cris/check_andr.s
similarity index 100%
rename from tests/cris/check_andr.s
rename to tests/tcg/cris/check_andr.s
diff --git a/tests/cris/check_asr.s b/tests/tcg/cris/check_asr.s
similarity index 100%
rename from tests/cris/check_asr.s
rename to tests/tcg/cris/check_asr.s
diff --git a/tests/cris/check_ba.s b/tests/tcg/cris/check_ba.s
similarity index 100%
rename from tests/cris/check_ba.s
rename to tests/tcg/cris/check_ba.s
diff --git a/tests/cris/check_bas.s b/tests/tcg/cris/check_bas.s
similarity index 100%
rename from tests/cris/check_bas.s
rename to tests/tcg/cris/check_bas.s
diff --git a/tests/cris/check_bcc.s b/tests/tcg/cris/check_bcc.s
similarity index 100%
rename from tests/cris/check_bcc.s
rename to tests/tcg/cris/check_bcc.s
diff --git a/tests/cris/check_bound.c b/tests/tcg/cris/check_bound.c
similarity index 100%
rename from tests/cris/check_bound.c
rename to tests/tcg/cris/check_bound.c
diff --git a/tests/cris/check_boundc.s b/tests/tcg/cris/check_boundc.s
similarity index 100%
rename from tests/cris/check_boundc.s
rename to tests/tcg/cris/check_boundc.s
diff --git a/tests/cris/check_boundr.s b/tests/tcg/cris/check_boundr.s
similarity index 100%
rename from tests/cris/check_boundr.s
rename to tests/tcg/cris/check_boundr.s
diff --git a/tests/cris/check_btst.s b/tests/tcg/cris/check_btst.s
similarity index 100%
rename from tests/cris/check_btst.s
rename to tests/tcg/cris/check_btst.s
diff --git a/tests/cris/check_clearfv32.s b/tests/tcg/cris/check_clearfv32.s
similarity index 100%
rename from tests/cris/check_clearfv32.s
rename to tests/tcg/cris/check_clearfv32.s
diff --git a/tests/cris/check_clrjmp1.s b/tests/tcg/cris/check_clrjmp1.s
similarity index 100%
rename from tests/cris/check_clrjmp1.s
rename to tests/tcg/cris/check_clrjmp1.s
diff --git a/tests/cris/check_cmp-2.s b/tests/tcg/cris/check_cmp-2.s
similarity index 100%
rename from tests/cris/check_cmp-2.s
rename to tests/tcg/cris/check_cmp-2.s
diff --git a/tests/cris/check_cmpc.s b/tests/tcg/cris/check_cmpc.s
similarity index 100%
rename from tests/cris/check_cmpc.s
rename to tests/tcg/cris/check_cmpc.s
diff --git a/tests/cris/check_cmpm.s b/tests/tcg/cris/check_cmpm.s
similarity index 100%
rename from tests/cris/check_cmpm.s
rename to tests/tcg/cris/check_cmpm.s
diff --git a/tests/cris/check_cmpq.s b/tests/tcg/cris/check_cmpq.s
similarity index 100%
rename from tests/cris/check_cmpq.s
rename to tests/tcg/cris/check_cmpq.s
diff --git a/tests/cris/check_cmpr.s b/tests/tcg/cris/check_cmpr.s
similarity index 100%
rename from tests/cris/check_cmpr.s
rename to tests/tcg/cris/check_cmpr.s
diff --git a/tests/cris/check_cmpxc.s b/tests/tcg/cris/check_cmpxc.s
similarity index 100%
rename from tests/cris/check_cmpxc.s
rename to tests/tcg/cris/check_cmpxc.s
diff --git a/tests/cris/check_cmpxm.s b/tests/tcg/cris/check_cmpxm.s
similarity index 100%
rename from tests/cris/check_cmpxm.s
rename to tests/tcg/cris/check_cmpxm.s
diff --git a/tests/cris/check_dstep.s b/tests/tcg/cris/check_dstep.s
similarity index 100%
rename from tests/cris/check_dstep.s
rename to tests/tcg/cris/check_dstep.s
diff --git a/tests/cris/check_ftag.c b/tests/tcg/cris/check_ftag.c
similarity index 100%
rename from tests/cris/check_ftag.c
rename to tests/tcg/cris/check_ftag.c
diff --git a/tests/cris/check_gcctorture_pr28634-1.c b/tests/tcg/cris/check_gcctorture_pr28634-1.c
similarity index 100%
rename from tests/cris/check_gcctorture_pr28634-1.c
rename to tests/tcg/cris/check_gcctorture_pr28634-1.c
diff --git a/tests/cris/check_gcctorture_pr28634.c b/tests/tcg/cris/check_gcctorture_pr28634.c
similarity index 100%
rename from tests/cris/check_gcctorture_pr28634.c
rename to tests/tcg/cris/check_gcctorture_pr28634.c
diff --git a/tests/cris/check_glibc_kernelversion.c b/tests/tcg/cris/check_glibc_kernelversion.c
similarity index 100%
rename from tests/cris/check_glibc_kernelversion.c
rename to tests/tcg/cris/check_glibc_kernelversion.c
diff --git a/tests/cris/check_hello.c b/tests/tcg/cris/check_hello.c
similarity index 100%
rename from tests/cris/check_hello.c
rename to tests/tcg/cris/check_hello.c
diff --git a/tests/cris/check_int64.c b/tests/tcg/cris/check_int64.c
similarity index 100%
rename from tests/cris/check_int64.c
rename to tests/tcg/cris/check_int64.c
diff --git a/tests/cris/check_jsr.s b/tests/tcg/cris/check_jsr.s
similarity index 100%
rename from tests/cris/check_jsr.s
rename to tests/tcg/cris/check_jsr.s
diff --git a/tests/cris/check_lapc.s b/tests/tcg/cris/check_lapc.s
similarity index 100%
rename from tests/cris/check_lapc.s
rename to tests/tcg/cris/check_lapc.s
diff --git a/tests/cris/check_lsl.s b/tests/tcg/cris/check_lsl.s
similarity index 100%
rename from tests/cris/check_lsl.s
rename to tests/tcg/cris/check_lsl.s
diff --git a/tests/cris/check_lsr.s b/tests/tcg/cris/check_lsr.s
similarity index 100%
rename from tests/cris/check_lsr.s
rename to tests/tcg/cris/check_lsr.s
diff --git a/tests/cris/check_lz.c b/tests/tcg/cris/check_lz.c
similarity index 100%
rename from tests/cris/check_lz.c
rename to tests/tcg/cris/check_lz.c
diff --git a/tests/cris/check_mapbrk.c b/tests/tcg/cris/check_mapbrk.c
similarity index 100%
rename from tests/cris/check_mapbrk.c
rename to tests/tcg/cris/check_mapbrk.c
diff --git a/tests/cris/check_mcp.s b/tests/tcg/cris/check_mcp.s
similarity index 100%
rename from tests/cris/check_mcp.s
rename to tests/tcg/cris/check_mcp.s
diff --git a/tests/cris/check_mmap1.c b/tests/tcg/cris/check_mmap1.c
similarity index 100%
rename from tests/cris/check_mmap1.c
rename to tests/tcg/cris/check_mmap1.c
diff --git a/tests/cris/check_mmap2.c b/tests/tcg/cris/check_mmap2.c
similarity index 100%
rename from tests/cris/check_mmap2.c
rename to tests/tcg/cris/check_mmap2.c
diff --git a/tests/cris/check_mmap3.c b/tests/tcg/cris/check_mmap3.c
similarity index 100%
rename from tests/cris/check_mmap3.c
rename to tests/tcg/cris/check_mmap3.c
diff --git a/tests/cris/check_movdelsr1.s b/tests/tcg/cris/check_movdelsr1.s
similarity index 100%
rename from tests/cris/check_movdelsr1.s
rename to tests/tcg/cris/check_movdelsr1.s
diff --git a/tests/cris/check_movecr.s b/tests/tcg/cris/check_movecr.s
similarity index 100%
rename from tests/cris/check_movecr.s
rename to tests/tcg/cris/check_movecr.s
diff --git a/tests/cris/check_movei.s b/tests/tcg/cris/check_movei.s
similarity index 100%
rename from tests/cris/check_movei.s
rename to tests/tcg/cris/check_movei.s
diff --git a/tests/cris/check_movemr.s b/tests/tcg/cris/check_movemr.s
similarity index 100%
rename from tests/cris/check_movemr.s
rename to tests/tcg/cris/check_movemr.s
diff --git a/tests/cris/check_movemrv32.s b/tests/tcg/cris/check_movemrv32.s
similarity index 100%
rename from tests/cris/check_movemrv32.s
rename to tests/tcg/cris/check_movemrv32.s
diff --git a/tests/cris/check_moveq.c b/tests/tcg/cris/check_moveq.c
similarity index 100%
rename from tests/cris/check_moveq.c
rename to tests/tcg/cris/check_moveq.c
diff --git a/tests/cris/check_mover.s b/tests/tcg/cris/check_mover.s
similarity index 100%
rename from tests/cris/check_mover.s
rename to tests/tcg/cris/check_mover.s
diff --git a/tests/cris/check_moverm.s b/tests/tcg/cris/check_moverm.s
similarity index 100%
rename from tests/cris/check_moverm.s
rename to tests/tcg/cris/check_moverm.s
diff --git a/tests/cris/check_movmp.s b/tests/tcg/cris/check_movmp.s
similarity index 100%
rename from tests/cris/check_movmp.s
rename to tests/tcg/cris/check_movmp.s
diff --git a/tests/cris/check_movpmv32.s b/tests/tcg/cris/check_movpmv32.s
similarity index 100%
rename from tests/cris/check_movpmv32.s
rename to tests/tcg/cris/check_movpmv32.s
diff --git a/tests/cris/check_movpr.s b/tests/tcg/cris/check_movpr.s
similarity index 100%
rename from tests/cris/check_movpr.s
rename to tests/tcg/cris/check_movpr.s
diff --git a/tests/cris/check_movprv32.s b/tests/tcg/cris/check_movprv32.s
similarity index 100%
rename from tests/cris/check_movprv32.s
rename to tests/tcg/cris/check_movprv32.s
diff --git a/tests/cris/check_movscr.s b/tests/tcg/cris/check_movscr.s
similarity index 100%
rename from tests/cris/check_movscr.s
rename to tests/tcg/cris/check_movscr.s
diff --git a/tests/cris/check_movsm.s b/tests/tcg/cris/check_movsm.s
similarity index 100%
rename from tests/cris/check_movsm.s
rename to tests/tcg/cris/check_movsm.s
diff --git a/tests/cris/check_movsr.s b/tests/tcg/cris/check_movsr.s
similarity index 100%
rename from tests/cris/check_movsr.s
rename to tests/tcg/cris/check_movsr.s
diff --git a/tests/cris/check_movucr.s b/tests/tcg/cris/check_movucr.s
similarity index 100%
rename from tests/cris/check_movucr.s
rename to tests/tcg/cris/check_movucr.s
diff --git a/tests/cris/check_movum.s b/tests/tcg/cris/check_movum.s
similarity index 100%
rename from tests/cris/check_movum.s
rename to tests/tcg/cris/check_movum.s
diff --git a/tests/cris/check_movur.s b/tests/tcg/cris/check_movur.s
similarity index 100%
rename from tests/cris/check_movur.s
rename to tests/tcg/cris/check_movur.s
diff --git a/tests/cris/check_mulv32.s b/tests/tcg/cris/check_mulv32.s
similarity index 100%
rename from tests/cris/check_mulv32.s
rename to tests/tcg/cris/check_mulv32.s
diff --git a/tests/cris/check_mulx.s b/tests/tcg/cris/check_mulx.s
similarity index 100%
rename from tests/cris/check_mulx.s
rename to tests/tcg/cris/check_mulx.s
diff --git a/tests/cris/check_neg.s b/tests/tcg/cris/check_neg.s
similarity index 100%
rename from tests/cris/check_neg.s
rename to tests/tcg/cris/check_neg.s
diff --git a/tests/cris/check_not.s b/tests/tcg/cris/check_not.s
similarity index 100%
rename from tests/cris/check_not.s
rename to tests/tcg/cris/check_not.s
diff --git a/tests/cris/check_openpf1.c b/tests/tcg/cris/check_openpf1.c
similarity index 100%
rename from tests/cris/check_openpf1.c
rename to tests/tcg/cris/check_openpf1.c
diff --git a/tests/cris/check_openpf2.c b/tests/tcg/cris/check_openpf2.c
similarity index 100%
rename from tests/cris/check_openpf2.c
rename to tests/tcg/cris/check_openpf2.c
diff --git a/tests/cris/check_openpf3.c b/tests/tcg/cris/check_openpf3.c
similarity index 100%
rename from tests/cris/check_openpf3.c
rename to tests/tcg/cris/check_openpf3.c
diff --git a/tests/cris/check_openpf4.c b/tests/tcg/cris/check_openpf4.c
similarity index 100%
rename from tests/cris/check_openpf4.c
rename to tests/tcg/cris/check_openpf4.c
diff --git a/tests/cris/check_openpf5.c b/tests/tcg/cris/check_openpf5.c
similarity index 100%
rename from tests/cris/check_openpf5.c
rename to tests/tcg/cris/check_openpf5.c
diff --git a/tests/cris/check_orc.s b/tests/tcg/cris/check_orc.s
similarity index 100%
rename from tests/cris/check_orc.s
rename to tests/tcg/cris/check_orc.s
diff --git a/tests/cris/check_orm.s b/tests/tcg/cris/check_orm.s
similarity index 100%
rename from tests/cris/check_orm.s
rename to tests/tcg/cris/check_orm.s
diff --git a/tests/cris/check_orq.s b/tests/tcg/cris/check_orq.s
similarity index 100%
rename from tests/cris/check_orq.s
rename to tests/tcg/cris/check_orq.s
diff --git a/tests/cris/check_orr.s b/tests/tcg/cris/check_orr.s
similarity index 100%
rename from tests/cris/check_orr.s
rename to tests/tcg/cris/check_orr.s
diff --git a/tests/cris/check_ret.s b/tests/tcg/cris/check_ret.s
similarity index 100%
rename from tests/cris/check_ret.s
rename to tests/tcg/cris/check_ret.s
diff --git a/tests/cris/check_scc.s b/tests/tcg/cris/check_scc.s
similarity index 100%
rename from tests/cris/check_scc.s
rename to tests/tcg/cris/check_scc.s
diff --git a/tests/cris/check_settls1.c b/tests/tcg/cris/check_settls1.c
similarity index 100%
rename from tests/cris/check_settls1.c
rename to tests/tcg/cris/check_settls1.c
diff --git a/tests/cris/check_sigalrm.c b/tests/tcg/cris/check_sigalrm.c
similarity index 100%
rename from tests/cris/check_sigalrm.c
rename to tests/tcg/cris/check_sigalrm.c
diff --git a/tests/cris/check_stat1.c b/tests/tcg/cris/check_stat1.c
similarity index 100%
rename from tests/cris/check_stat1.c
rename to tests/tcg/cris/check_stat1.c
diff --git a/tests/cris/check_stat2.c b/tests/tcg/cris/check_stat2.c
similarity index 100%
rename from tests/cris/check_stat2.c
rename to tests/tcg/cris/check_stat2.c
diff --git a/tests/cris/check_stat3.c b/tests/tcg/cris/check_stat3.c
similarity index 100%
rename from tests/cris/check_stat3.c
rename to tests/tcg/cris/check_stat3.c
diff --git a/tests/cris/check_stat4.c b/tests/tcg/cris/check_stat4.c
similarity index 100%
rename from tests/cris/check_stat4.c
rename to tests/tcg/cris/check_stat4.c
diff --git a/tests/cris/check_subc.s b/tests/tcg/cris/check_subc.s
similarity index 100%
rename from tests/cris/check_subc.s
rename to tests/tcg/cris/check_subc.s
diff --git a/tests/cris/check_subm.s b/tests/tcg/cris/check_subm.s
similarity index 100%
rename from tests/cris/check_subm.s
rename to tests/tcg/cris/check_subm.s
diff --git a/tests/cris/check_subq.s b/tests/tcg/cris/check_subq.s
similarity index 100%
rename from tests/cris/check_subq.s
rename to tests/tcg/cris/check_subq.s
diff --git a/tests/cris/check_subr.s b/tests/tcg/cris/check_subr.s
similarity index 100%
rename from tests/cris/check_subr.s
rename to tests/tcg/cris/check_subr.s
diff --git a/tests/cris/check_swap.c b/tests/tcg/cris/check_swap.c
similarity index 100%
rename from tests/cris/check_swap.c
rename to tests/tcg/cris/check_swap.c
diff --git a/tests/cris/check_time1.c b/tests/tcg/cris/check_time1.c
similarity index 100%
rename from tests/cris/check_time1.c
rename to tests/tcg/cris/check_time1.c
diff --git a/tests/cris/check_time2.c b/tests/tcg/cris/check_time2.c
similarity index 100%
rename from tests/cris/check_time2.c
rename to tests/tcg/cris/check_time2.c
diff --git a/tests/cris/check_xarith.s b/tests/tcg/cris/check_xarith.s
similarity index 100%
rename from tests/cris/check_xarith.s
rename to tests/tcg/cris/check_xarith.s
diff --git a/tests/cris/crisutils.h b/tests/tcg/cris/crisutils.h
similarity index 100%
rename from tests/cris/crisutils.h
rename to tests/tcg/cris/crisutils.h
diff --git a/tests/cris/crt.s b/tests/tcg/cris/crt.s
similarity index 100%
rename from tests/cris/crt.s
rename to tests/tcg/cris/crt.s
diff --git a/tests/cris/sys.c b/tests/tcg/cris/sys.c
similarity index 100%
rename from tests/cris/sys.c
rename to tests/tcg/cris/sys.c
diff --git a/tests/cris/sys.h b/tests/tcg/cris/sys.h
similarity index 100%
rename from tests/cris/sys.h
rename to tests/tcg/cris/sys.h
diff --git a/tests/cris/testutils.inc b/tests/tcg/cris/testutils.inc
similarity index 100%
rename from tests/cris/testutils.inc
rename to tests/tcg/cris/testutils.inc
diff --git a/tests/hello-arm.c b/tests/tcg/hello-arm.c
similarity index 100%
rename from tests/hello-arm.c
rename to tests/tcg/hello-arm.c
diff --git a/tests/hello-i386.c b/tests/tcg/hello-i386.c
similarity index 100%
rename from tests/hello-i386.c
rename to tests/tcg/hello-i386.c
diff --git a/tests/hello-mips.c b/tests/tcg/hello-mips.c
similarity index 100%
rename from tests/hello-mips.c
rename to tests/tcg/hello-mips.c
diff --git a/tests/linux-test.c b/tests/tcg/linux-test.c
similarity index 100%
rename from tests/linux-test.c
rename to tests/tcg/linux-test.c
diff --git a/tests/lm32/Makefile b/tests/tcg/lm32/Makefile
similarity index 100%
rename from tests/lm32/Makefile
rename to tests/tcg/lm32/Makefile
diff --git a/tests/lm32/crt.S b/tests/tcg/lm32/crt.S
similarity index 100%
rename from tests/lm32/crt.S
rename to tests/tcg/lm32/crt.S
diff --git a/tests/lm32/linker.ld b/tests/tcg/lm32/linker.ld
similarity index 100%
rename from tests/lm32/linker.ld
rename to tests/tcg/lm32/linker.ld
diff --git a/tests/lm32/macros.inc b/tests/tcg/lm32/macros.inc
similarity index 100%
rename from tests/lm32/macros.inc
rename to tests/tcg/lm32/macros.inc
diff --git a/tests/lm32/test_add.S b/tests/tcg/lm32/test_add.S
similarity index 100%
rename from tests/lm32/test_add.S
rename to tests/tcg/lm32/test_add.S
diff --git a/tests/lm32/test_addi.S b/tests/tcg/lm32/test_addi.S
similarity index 100%
rename from tests/lm32/test_addi.S
rename to tests/tcg/lm32/test_addi.S
diff --git a/tests/lm32/test_and.S b/tests/tcg/lm32/test_and.S
similarity index 100%
rename from tests/lm32/test_and.S
rename to tests/tcg/lm32/test_and.S
diff --git a/tests/lm32/test_andhi.S b/tests/tcg/lm32/test_andhi.S
similarity index 100%
rename from tests/lm32/test_andhi.S
rename to tests/tcg/lm32/test_andhi.S
diff --git a/tests/lm32/test_andi.S b/tests/tcg/lm32/test_andi.S
similarity index 100%
rename from tests/lm32/test_andi.S
rename to tests/tcg/lm32/test_andi.S
diff --git a/tests/lm32/test_b.S b/tests/tcg/lm32/test_b.S
similarity index 100%
rename from tests/lm32/test_b.S
rename to tests/tcg/lm32/test_b.S
diff --git a/tests/lm32/test_be.S b/tests/tcg/lm32/test_be.S
similarity index 100%
rename from tests/lm32/test_be.S
rename to tests/tcg/lm32/test_be.S
diff --git a/tests/lm32/test_bg.S b/tests/tcg/lm32/test_bg.S
similarity index 100%
rename from tests/lm32/test_bg.S
rename to tests/tcg/lm32/test_bg.S
diff --git a/tests/lm32/test_bge.S b/tests/tcg/lm32/test_bge.S
similarity index 100%
rename from tests/lm32/test_bge.S
rename to tests/tcg/lm32/test_bge.S
diff --git a/tests/lm32/test_bgeu.S b/tests/tcg/lm32/test_bgeu.S
similarity index 100%
rename from tests/lm32/test_bgeu.S
rename to tests/tcg/lm32/test_bgeu.S
diff --git a/tests/lm32/test_bgu.S b/tests/tcg/lm32/test_bgu.S
similarity index 100%
rename from tests/lm32/test_bgu.S
rename to tests/tcg/lm32/test_bgu.S
diff --git a/tests/lm32/test_bi.S b/tests/tcg/lm32/test_bi.S
similarity index 100%
rename from tests/lm32/test_bi.S
rename to tests/tcg/lm32/test_bi.S
diff --git a/tests/lm32/test_bne.S b/tests/tcg/lm32/test_bne.S
similarity index 100%
rename from tests/lm32/test_bne.S
rename to tests/tcg/lm32/test_bne.S
diff --git a/tests/lm32/test_break.S b/tests/tcg/lm32/test_break.S
similarity index 100%
rename from tests/lm32/test_break.S
rename to tests/tcg/lm32/test_break.S
diff --git a/tests/lm32/test_bret.S b/tests/tcg/lm32/test_bret.S
similarity index 100%
rename from tests/lm32/test_bret.S
rename to tests/tcg/lm32/test_bret.S
diff --git a/tests/lm32/test_call.S b/tests/tcg/lm32/test_call.S
similarity index 100%
rename from tests/lm32/test_call.S
rename to tests/tcg/lm32/test_call.S
diff --git a/tests/lm32/test_calli.S b/tests/tcg/lm32/test_calli.S
similarity index 100%
rename from tests/lm32/test_calli.S
rename to tests/tcg/lm32/test_calli.S
diff --git a/tests/lm32/test_cmpe.S b/tests/tcg/lm32/test_cmpe.S
similarity index 100%
rename from tests/lm32/test_cmpe.S
rename to tests/tcg/lm32/test_cmpe.S
diff --git a/tests/lm32/test_cmpei.S b/tests/tcg/lm32/test_cmpei.S
similarity index 100%
rename from tests/lm32/test_cmpei.S
rename to tests/tcg/lm32/test_cmpei.S
diff --git a/tests/lm32/test_cmpg.S b/tests/tcg/lm32/test_cmpg.S
similarity index 100%
rename from tests/lm32/test_cmpg.S
rename to tests/tcg/lm32/test_cmpg.S
diff --git a/tests/lm32/test_cmpge.S b/tests/tcg/lm32/test_cmpge.S
similarity index 100%
rename from tests/lm32/test_cmpge.S
rename to tests/tcg/lm32/test_cmpge.S
diff --git a/tests/lm32/test_cmpgei.S b/tests/tcg/lm32/test_cmpgei.S
similarity index 100%
rename from tests/lm32/test_cmpgei.S
rename to tests/tcg/lm32/test_cmpgei.S
diff --git a/tests/lm32/test_cmpgeu.S b/tests/tcg/lm32/test_cmpgeu.S
similarity index 100%
rename from tests/lm32/test_cmpgeu.S
rename to tests/tcg/lm32/test_cmpgeu.S
diff --git a/tests/lm32/test_cmpgeui.S b/tests/tcg/lm32/test_cmpgeui.S
similarity index 100%
rename from tests/lm32/test_cmpgeui.S
rename to tests/tcg/lm32/test_cmpgeui.S
diff --git a/tests/lm32/test_cmpgi.S b/tests/tcg/lm32/test_cmpgi.S
similarity index 100%
rename from tests/lm32/test_cmpgi.S
rename to tests/tcg/lm32/test_cmpgi.S
diff --git a/tests/lm32/test_cmpgu.S b/tests/tcg/lm32/test_cmpgu.S
similarity index 100%
rename from tests/lm32/test_cmpgu.S
rename to tests/tcg/lm32/test_cmpgu.S
diff --git a/tests/lm32/test_cmpgui.S b/tests/tcg/lm32/test_cmpgui.S
similarity index 100%
rename from tests/lm32/test_cmpgui.S
rename to tests/tcg/lm32/test_cmpgui.S
diff --git a/tests/lm32/test_cmpne.S b/tests/tcg/lm32/test_cmpne.S
similarity index 100%
rename from tests/lm32/test_cmpne.S
rename to tests/tcg/lm32/test_cmpne.S
diff --git a/tests/lm32/test_cmpnei.S b/tests/tcg/lm32/test_cmpnei.S
similarity index 100%
rename from tests/lm32/test_cmpnei.S
rename to tests/tcg/lm32/test_cmpnei.S
diff --git a/tests/lm32/test_divu.S b/tests/tcg/lm32/test_divu.S
similarity index 100%
rename from tests/lm32/test_divu.S
rename to tests/tcg/lm32/test_divu.S
diff --git a/tests/lm32/test_eret.S b/tests/tcg/lm32/test_eret.S
similarity index 100%
rename from tests/lm32/test_eret.S
rename to tests/tcg/lm32/test_eret.S
diff --git a/tests/lm32/test_lb.S b/tests/tcg/lm32/test_lb.S
similarity index 100%
rename from tests/lm32/test_lb.S
rename to tests/tcg/lm32/test_lb.S
diff --git a/tests/lm32/test_lbu.S b/tests/tcg/lm32/test_lbu.S
similarity index 100%
rename from tests/lm32/test_lbu.S
rename to tests/tcg/lm32/test_lbu.S
diff --git a/tests/lm32/test_lh.S b/tests/tcg/lm32/test_lh.S
similarity index 100%
rename from tests/lm32/test_lh.S
rename to tests/tcg/lm32/test_lh.S
diff --git a/tests/lm32/test_lhu.S b/tests/tcg/lm32/test_lhu.S
similarity index 100%
rename from tests/lm32/test_lhu.S
rename to tests/tcg/lm32/test_lhu.S
diff --git a/tests/lm32/test_lw.S b/tests/tcg/lm32/test_lw.S
similarity index 100%
rename from tests/lm32/test_lw.S
rename to tests/tcg/lm32/test_lw.S
diff --git a/tests/lm32/test_modu.S b/tests/tcg/lm32/test_modu.S
similarity index 100%
rename from tests/lm32/test_modu.S
rename to tests/tcg/lm32/test_modu.S
diff --git a/tests/lm32/test_mul.S b/tests/tcg/lm32/test_mul.S
similarity index 100%
rename from tests/lm32/test_mul.S
rename to tests/tcg/lm32/test_mul.S
diff --git a/tests/lm32/test_muli.S b/tests/tcg/lm32/test_muli.S
similarity index 100%
rename from tests/lm32/test_muli.S
rename to tests/tcg/lm32/test_muli.S
diff --git a/tests/lm32/test_nor.S b/tests/tcg/lm32/test_nor.S
similarity index 100%
rename from tests/lm32/test_nor.S
rename to tests/tcg/lm32/test_nor.S
diff --git a/tests/lm32/test_nori.S b/tests/tcg/lm32/test_nori.S
similarity index 100%
rename from tests/lm32/test_nori.S
rename to tests/tcg/lm32/test_nori.S
diff --git a/tests/lm32/test_or.S b/tests/tcg/lm32/test_or.S
similarity index 100%
rename from tests/lm32/test_or.S
rename to tests/tcg/lm32/test_or.S
diff --git a/tests/lm32/test_orhi.S b/tests/tcg/lm32/test_orhi.S
similarity index 100%
rename from tests/lm32/test_orhi.S
rename to tests/tcg/lm32/test_orhi.S
diff --git a/tests/lm32/test_ori.S b/tests/tcg/lm32/test_ori.S
similarity index 100%
rename from tests/lm32/test_ori.S
rename to tests/tcg/lm32/test_ori.S
diff --git a/tests/lm32/test_ret.S b/tests/tcg/lm32/test_ret.S
similarity index 100%
rename from tests/lm32/test_ret.S
rename to tests/tcg/lm32/test_ret.S
diff --git a/tests/lm32/test_sb.S b/tests/tcg/lm32/test_sb.S
similarity index 100%
rename from tests/lm32/test_sb.S
rename to tests/tcg/lm32/test_sb.S
diff --git a/tests/lm32/test_scall.S b/tests/tcg/lm32/test_scall.S
similarity index 100%
rename from tests/lm32/test_scall.S
rename to tests/tcg/lm32/test_scall.S
diff --git a/tests/lm32/test_sextb.S b/tests/tcg/lm32/test_sextb.S
similarity index 100%
rename from tests/lm32/test_sextb.S
rename to tests/tcg/lm32/test_sextb.S
diff --git a/tests/lm32/test_sexth.S b/tests/tcg/lm32/test_sexth.S
similarity index 100%
rename from tests/lm32/test_sexth.S
rename to tests/tcg/lm32/test_sexth.S
diff --git a/tests/lm32/test_sh.S b/tests/tcg/lm32/test_sh.S
similarity index 100%
rename from tests/lm32/test_sh.S
rename to tests/tcg/lm32/test_sh.S
diff --git a/tests/lm32/test_sl.S b/tests/tcg/lm32/test_sl.S
similarity index 100%
rename from tests/lm32/test_sl.S
rename to tests/tcg/lm32/test_sl.S
diff --git a/tests/lm32/test_sli.S b/tests/tcg/lm32/test_sli.S
similarity index 100%
rename from tests/lm32/test_sli.S
rename to tests/tcg/lm32/test_sli.S
diff --git a/tests/lm32/test_sr.S b/tests/tcg/lm32/test_sr.S
similarity index 100%
rename from tests/lm32/test_sr.S
rename to tests/tcg/lm32/test_sr.S
diff --git a/tests/lm32/test_sri.S b/tests/tcg/lm32/test_sri.S
similarity index 100%
rename from tests/lm32/test_sri.S
rename to tests/tcg/lm32/test_sri.S
diff --git a/tests/lm32/test_sru.S b/tests/tcg/lm32/test_sru.S
similarity index 100%
rename from tests/lm32/test_sru.S
rename to tests/tcg/lm32/test_sru.S
diff --git a/tests/lm32/test_srui.S b/tests/tcg/lm32/test_srui.S
similarity index 100%
rename from tests/lm32/test_srui.S
rename to tests/tcg/lm32/test_srui.S
diff --git a/tests/lm32/test_sub.S b/tests/tcg/lm32/test_sub.S
similarity index 100%
rename from tests/lm32/test_sub.S
rename to tests/tcg/lm32/test_sub.S
diff --git a/tests/lm32/test_sw.S b/tests/tcg/lm32/test_sw.S
similarity index 100%
rename from tests/lm32/test_sw.S
rename to tests/tcg/lm32/test_sw.S
diff --git a/tests/lm32/test_xnor.S b/tests/tcg/lm32/test_xnor.S
similarity index 100%
rename from tests/lm32/test_xnor.S
rename to tests/tcg/lm32/test_xnor.S
diff --git a/tests/lm32/test_xnori.S b/tests/tcg/lm32/test_xnori.S
similarity index 100%
rename from tests/lm32/test_xnori.S
rename to tests/tcg/lm32/test_xnori.S
diff --git a/tests/lm32/test_xor.S b/tests/tcg/lm32/test_xor.S
similarity index 100%
rename from tests/lm32/test_xor.S
rename to tests/tcg/lm32/test_xor.S
diff --git a/tests/lm32/test_xori.S b/tests/tcg/lm32/test_xori.S
similarity index 100%
rename from tests/lm32/test_xori.S
rename to tests/tcg/lm32/test_xori.S
diff --git a/tests/pi_10.com b/tests/tcg/pi_10.com
similarity index 100%
rename from tests/pi_10.com
rename to tests/tcg/pi_10.com
diff --git a/tests/runcom.c b/tests/tcg/runcom.c
similarity index 100%
rename from tests/runcom.c
rename to tests/tcg/runcom.c
diff --git a/tests/sha1.c b/tests/tcg/sha1.c
similarity index 100%
rename from tests/sha1.c
rename to tests/tcg/sha1.c
diff --git a/tests/test-arm-iwmmxt.s b/tests/tcg/test-arm-iwmmxt.s
similarity index 100%
rename from tests/test-arm-iwmmxt.s
rename to tests/tcg/test-arm-iwmmxt.s
diff --git a/tests/test-i386-code16.S b/tests/tcg/test-i386-code16.S
similarity index 100%
rename from tests/test-i386-code16.S
rename to tests/tcg/test-i386-code16.S
diff --git a/tests/test-i386-muldiv.h b/tests/tcg/test-i386-muldiv.h
similarity index 100%
rename from tests/test-i386-muldiv.h
rename to tests/tcg/test-i386-muldiv.h
diff --git a/tests/test-i386-shift.h b/tests/tcg/test-i386-shift.h
similarity index 100%
rename from tests/test-i386-shift.h
rename to tests/tcg/test-i386-shift.h
diff --git a/tests/test-i386-ssse3.c b/tests/tcg/test-i386-ssse3.c
similarity index 100%
rename from tests/test-i386-ssse3.c
rename to tests/tcg/test-i386-ssse3.c
diff --git a/tests/test-i386-vm86.S b/tests/tcg/test-i386-vm86.S
similarity index 100%
rename from tests/test-i386-vm86.S
rename to tests/tcg/test-i386-vm86.S
diff --git a/tests/test-i386.c b/tests/tcg/test-i386.c
similarity index 100%
rename from tests/test-i386.c
rename to tests/tcg/test-i386.c
diff --git a/tests/test-i386.h b/tests/tcg/test-i386.h
similarity index 100%
rename from tests/test-i386.h
rename to tests/tcg/test-i386.h
diff --git a/tests/test-mmap.c b/tests/tcg/test-mmap.c
similarity index 100%
rename from tests/test-mmap.c
rename to tests/tcg/test-mmap.c
diff --git a/tests/test_path.c b/tests/tcg/test_path.c
similarity index 100%
rename from tests/test_path.c
rename to tests/tcg/test_path.c
diff --git a/tests/testthread.c b/tests/tcg/testthread.c
similarity index 100%
rename from tests/testthread.c
rename to tests/tcg/testthread.c
diff --git a/tests/xtensa/Makefile b/tests/tcg/xtensa/Makefile
similarity index 100%
rename from tests/xtensa/Makefile
rename to tests/tcg/xtensa/Makefile
diff --git a/tests/xtensa/crt.S b/tests/tcg/xtensa/crt.S
similarity index 100%
rename from tests/xtensa/crt.S
rename to tests/tcg/xtensa/crt.S
diff --git a/tests/xtensa/linker.ld b/tests/tcg/xtensa/linker.ld
similarity index 100%
rename from tests/xtensa/linker.ld
rename to tests/tcg/xtensa/linker.ld
diff --git a/tests/xtensa/macros.inc b/tests/tcg/xtensa/macros.inc
similarity index 100%
rename from tests/xtensa/macros.inc
rename to tests/tcg/xtensa/macros.inc
diff --git a/tests/xtensa/test_b.S b/tests/tcg/xtensa/test_b.S
similarity index 100%
rename from tests/xtensa/test_b.S
rename to tests/tcg/xtensa/test_b.S
diff --git a/tests/xtensa/test_bi.S b/tests/tcg/xtensa/test_bi.S
similarity index 100%
rename from tests/xtensa/test_bi.S
rename to tests/tcg/xtensa/test_bi.S
diff --git a/tests/xtensa/test_boolean.S b/tests/tcg/xtensa/test_boolean.S
similarity index 100%
rename from tests/xtensa/test_boolean.S
rename to tests/tcg/xtensa/test_boolean.S
diff --git a/tests/xtensa/test_bz.S b/tests/tcg/xtensa/test_bz.S
similarity index 100%
rename from tests/xtensa/test_bz.S
rename to tests/tcg/xtensa/test_bz.S
diff --git a/tests/xtensa/test_clamps.S b/tests/tcg/xtensa/test_clamps.S
similarity index 100%
rename from tests/xtensa/test_clamps.S
rename to tests/tcg/xtensa/test_clamps.S
diff --git a/tests/xtensa/test_fail.S b/tests/tcg/xtensa/test_fail.S
similarity index 100%
rename from tests/xtensa/test_fail.S
rename to tests/tcg/xtensa/test_fail.S
diff --git a/tests/xtensa/test_interrupt.S b/tests/tcg/xtensa/test_interrupt.S
similarity index 100%
rename from tests/xtensa/test_interrupt.S
rename to tests/tcg/xtensa/test_interrupt.S
diff --git a/tests/xtensa/test_loop.S b/tests/tcg/xtensa/test_loop.S
similarity index 100%
rename from tests/xtensa/test_loop.S
rename to tests/tcg/xtensa/test_loop.S
diff --git a/tests/xtensa/test_mac16.S b/tests/tcg/xtensa/test_mac16.S
similarity index 100%
rename from tests/xtensa/test_mac16.S
rename to tests/tcg/xtensa/test_mac16.S
diff --git a/tests/xtensa/test_max.S b/tests/tcg/xtensa/test_max.S
similarity index 100%
rename from tests/xtensa/test_max.S
rename to tests/tcg/xtensa/test_max.S
diff --git a/tests/xtensa/test_min.S b/tests/tcg/xtensa/test_min.S
similarity index 100%
rename from tests/xtensa/test_min.S
rename to tests/tcg/xtensa/test_min.S
diff --git a/tests/xtensa/test_mmu.S b/tests/tcg/xtensa/test_mmu.S
similarity index 100%
rename from tests/xtensa/test_mmu.S
rename to tests/tcg/xtensa/test_mmu.S
diff --git a/tests/xtensa/test_mul16.S b/tests/tcg/xtensa/test_mul16.S
similarity index 100%
rename from tests/xtensa/test_mul16.S
rename to tests/tcg/xtensa/test_mul16.S
diff --git a/tests/xtensa/test_mul32.S b/tests/tcg/xtensa/test_mul32.S
similarity index 100%
rename from tests/xtensa/test_mul32.S
rename to tests/tcg/xtensa/test_mul32.S
diff --git a/tests/xtensa/test_nsa.S b/tests/tcg/xtensa/test_nsa.S
similarity index 100%
rename from tests/xtensa/test_nsa.S
rename to tests/tcg/xtensa/test_nsa.S
diff --git a/tests/xtensa/test_pipeline.S b/tests/tcg/xtensa/test_pipeline.S
similarity index 100%
rename from tests/xtensa/test_pipeline.S
rename to tests/tcg/xtensa/test_pipeline.S
diff --git a/tests/xtensa/test_quo.S b/tests/tcg/xtensa/test_quo.S
similarity index 100%
rename from tests/xtensa/test_quo.S
rename to tests/tcg/xtensa/test_quo.S
diff --git a/tests/xtensa/test_rem.S b/tests/tcg/xtensa/test_rem.S
similarity index 100%
rename from tests/xtensa/test_rem.S
rename to tests/tcg/xtensa/test_rem.S
diff --git a/tests/xtensa/test_rst0.S b/tests/tcg/xtensa/test_rst0.S
similarity index 100%
rename from tests/xtensa/test_rst0.S
rename to tests/tcg/xtensa/test_rst0.S
diff --git a/tests/xtensa/test_sar.S b/tests/tcg/xtensa/test_sar.S
similarity index 100%
rename from tests/xtensa/test_sar.S
rename to tests/tcg/xtensa/test_sar.S
diff --git a/tests/xtensa/test_sext.S b/tests/tcg/xtensa/test_sext.S
similarity index 100%
rename from tests/xtensa/test_sext.S
rename to tests/tcg/xtensa/test_sext.S
diff --git a/tests/xtensa/test_shift.S b/tests/tcg/xtensa/test_shift.S
similarity index 100%
rename from tests/xtensa/test_shift.S
rename to tests/tcg/xtensa/test_shift.S
diff --git a/tests/xtensa/test_timer.S b/tests/tcg/xtensa/test_timer.S
similarity index 100%
rename from tests/xtensa/test_timer.S
rename to tests/tcg/xtensa/test_timer.S
diff --git a/tests/xtensa/test_windowed.S b/tests/tcg/xtensa/test_windowed.S
similarity index 100%
rename from tests/xtensa/test_windowed.S
rename to tests/tcg/xtensa/test_windowed.S
diff --git a/tests/xtensa/vectors.S b/tests/tcg/xtensa/vectors.S
similarity index 100%
rename from tests/xtensa/vectors.S
rename to tests/tcg/xtensa/vectors.S
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 19:23 ` Andreas Färber
2012-01-09 15:56 ` [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest Anthony Liguori
` (10 subsequent siblings)
11 siblings, 1 reply; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
Makefile | 31 ++-----------------------------
tests/Makefile | 31 +++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 29 deletions(-)
create mode 100644 tests/Makefile
diff --git a/Makefile b/Makefile
index 0cbe7c2..80fb512 100644
--- a/Makefile
+++ b/Makefile
@@ -162,32 +162,14 @@ fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
-check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
-
-check-qint: check-qint.o qint.o $(tools-obj-y)
-check-qstring: check-qstring.o qstring.o $(tools-obj-y)
-check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qlist.o $(tools-obj-y)
-check-qlist: check-qlist.o qlist.o qint.o $(tools-obj-y)
-check-qfloat: check-qfloat.o qfloat.o $(tools-obj-y)
-check-qjson: check-qjson.o $(qobject-obj-y) $(tools-obj-y)
-test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y) $(tools-obj-y)
-
$(qapi-obj-y): $(GENERATED_HEADERS)
qapi-dir := $(BUILD_DIR)/qapi-generated
-test-qmp-input-visitor.o test-qmp-output-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
+
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
gen-out-type = $(subst .,-,$@)
-$(qapi-dir)/test-qapi-types.c $(qapi-dir)/test-qapi-types.h :\
-$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
- $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
-$(qapi-dir)/test-qapi-visit.c $(qapi-dir)/test-qapi-visit.h :\
-$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py
- $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
-$(qapi-dir)/test-qmp-commands.h $(qapi-dir)/test-qmp-marshal.c :\
-$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py
- $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
+include $(SRC_PATH)/tests/Makefile
$(qapi-dir)/qga-qapi-types.c $(qapi-dir)/qga-qapi-types.h :\
$(SRC_PATH)/qapi-schema-guest.json $(SRC_PATH)/scripts/qapi-types.py
@@ -209,15 +191,6 @@ qmp-commands.h qmp-marshal.c :\
$(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py
$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -m -o "." < $<, " GEN $@")
-test-qmp-output-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
-test-qmp-output-visitor: test-qmp-output-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
-
-test-qmp-input-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
-test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
-
-test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
-test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
-
QGALIB_OBJ=$(addprefix $(qapi-dir)/, qga-qapi-types.o qga-qapi-visit.o qga-qmp-marshal.o)
QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.h qga-qapi-visit.h qga-qmp-commands.h)
$(QGALIB_OBJ): $(QGALIB_GEN) $(GENERATED_HEADERS)
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..c11d980
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,31 @@
+check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
+
+check-qint: check-qint.o qint.o $(tools-obj-y)
+check-qstring: check-qstring.o qstring.o $(tools-obj-y)
+check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qlist.o $(tools-obj-y)
+check-qlist: check-qlist.o qlist.o qint.o $(tools-obj-y)
+check-qfloat: check-qfloat.o qfloat.o $(tools-obj-y)
+check-qjson: check-qjson.o $(qobject-obj-y) $(tools-obj-y)
+test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y) $(tools-obj-y)
+
+test-qmp-input-visitor.o test-qmp-output-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
+
+$(qapi-dir)/test-qapi-types.c $(qapi-dir)/test-qapi-types.h :\
+$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
+ $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
+$(qapi-dir)/test-qapi-visit.c $(qapi-dir)/test-qapi-visit.h :\
+$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py
+ $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
+$(qapi-dir)/test-qmp-commands.h $(qapi-dir)/test-qmp-marshal.c :\
+$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py
+ $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
+
+test-qmp-output-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
+test-qmp-output-visitor: test-qmp-output-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
+
+test-qmp-input-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
+test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
+
+test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
+test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
+
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 18:27 ` Luiz Capitulino
2012-01-09 19:26 ` Andreas Färber
2012-01-09 15:56 ` [Qemu-devel] [PATCH 04/11] check-qfloat: " Anthony Liguori
` (9 subsequent siblings)
11 siblings, 2 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
Makefile | 6 --
check-qdict.c | 246 +++++++++++++++++++++++++-------------------------------
configure | 4 +-
tests/Makefile | 6 ++
4 files changed, 119 insertions(+), 143 deletions(-)
diff --git a/Makefile b/Makefile
index 80fb512..4823144 100644
--- a/Makefile
+++ b/Makefile
@@ -294,12 +294,6 @@ endif
test speed: all
$(MAKE) -C tests/tcg $@
-.PHONY: check
-check: $(patsubst %,run-check-%,$(CHECKS))
-
-run-check-%: %
- ./$<
-
.PHONY: TAGS
TAGS:
find "$(SRC_PATH)" -name '*.[hc]' -print0 | xargs -0 etags
diff --git a/check-qdict.c b/check-qdict.c
index 5515773..fc0d276 100644
--- a/check-qdict.c
+++ b/check-qdict.c
@@ -9,7 +9,7 @@
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
* See the COPYING.LIB file in the top-level directory.
*/
-#include <check.h>
+#include <glib.h>
#include "qint.h"
#include "qdict.h"
@@ -22,22 +22,21 @@
* (with some violations to access 'private' data)
*/
-START_TEST(qdict_new_test)
+static void qdict_new_test(void)
{
QDict *qdict;
qdict = qdict_new();
- fail_unless(qdict != NULL);
- fail_unless(qdict_size(qdict) == 0);
- fail_unless(qdict->base.refcnt == 1);
- fail_unless(qobject_type(QOBJECT(qdict)) == QTYPE_QDICT);
+ g_assert(qdict != NULL);
+ g_assert(qdict_size(qdict) == 0);
+ g_assert(qdict->base.refcnt == 1);
+ g_assert(qobject_type(QOBJECT(qdict)) == QTYPE_QDICT);
// destroy doesn't exit yet
- free(qdict);
+ g_free(qdict);
}
-END_TEST
-START_TEST(qdict_put_obj_test)
+static void qdict_put_obj_test(void)
{
QInt *qi;
QDict *qdict;
@@ -49,10 +48,10 @@ START_TEST(qdict_put_obj_test)
// key "" will have tdb hash 12345
qdict_put_obj(qdict, "", QOBJECT(qint_from_int(num)));
- fail_unless(qdict_size(qdict) == 1);
+ g_assert(qdict_size(qdict) == 1);
ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);
qi = qobject_to_qint(ent->value);
- fail_unless(qint_get_int(qi) == num);
+ g_assert(qint_get_int(qi) == num);
// destroy doesn't exit yet
QDECREF(qi);
@@ -60,9 +59,8 @@ START_TEST(qdict_put_obj_test)
g_free(ent);
g_free(qdict);
}
-END_TEST
-START_TEST(qdict_destroy_simple_test)
+static void qdict_destroy_simple_test(void)
{
QDict *qdict;
@@ -72,134 +70,138 @@ START_TEST(qdict_destroy_simple_test)
QDECREF(qdict);
}
-END_TEST
-
-static QDict *tests_dict = NULL;
-
-static void qdict_setup(void)
-{
- tests_dict = qdict_new();
- fail_unless(tests_dict != NULL);
-}
-static void qdict_teardown(void)
-{
- QDECREF(tests_dict);
- tests_dict = NULL;
-}
-
-START_TEST(qdict_get_test)
+static void qdict_get_test(void)
{
QInt *qi;
QObject *obj;
const int value = -42;
const char *key = "test";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qint_from_int(value));
obj = qdict_get(tests_dict, key);
- fail_unless(obj != NULL);
+ g_assert(obj != NULL);
qi = qobject_to_qint(obj);
- fail_unless(qint_get_int(qi) == value);
+ g_assert(qint_get_int(qi) == value);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_get_int_test)
+static void qdict_get_int_test(void)
{
int ret;
const int value = 100;
const char *key = "int";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qint_from_int(value));
ret = qdict_get_int(tests_dict, key);
- fail_unless(ret == value);
+ g_assert(ret == value);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_get_try_int_test)
+static void qdict_get_try_int_test(void)
{
int ret;
const int value = 100;
const char *key = "int";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qint_from_int(value));
ret = qdict_get_try_int(tests_dict, key, 0);
- fail_unless(ret == value);
+ g_assert(ret == value);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_get_str_test)
+static void qdict_get_str_test(void)
{
const char *p;
const char *key = "key";
const char *str = "string";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qstring_from_str(str));
p = qdict_get_str(tests_dict, key);
- fail_unless(p != NULL);
- fail_unless(strcmp(p, str) == 0);
+ g_assert(p != NULL);
+ g_assert(strcmp(p, str) == 0);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_get_try_str_test)
+static void qdict_get_try_str_test(void)
{
const char *p;
const char *key = "key";
const char *str = "string";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qstring_from_str(str));
p = qdict_get_try_str(tests_dict, key);
- fail_unless(p != NULL);
- fail_unless(strcmp(p, str) == 0);
+ g_assert(p != NULL);
+ g_assert(strcmp(p, str) == 0);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_haskey_not_test)
+static void qdict_haskey_not_test(void)
{
- fail_unless(qdict_haskey(tests_dict, "test") == 0);
+ QDict *tests_dict = qdict_new();
+ g_assert(qdict_haskey(tests_dict, "test") == 0);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_haskey_test)
+static void qdict_haskey_test(void)
{
const char *key = "test";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qint_from_int(0));
- fail_unless(qdict_haskey(tests_dict, key) == 1);
+ g_assert(qdict_haskey(tests_dict, key) == 1);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_del_test)
+static void qdict_del_test(void)
{
const char *key = "key test";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qstring_from_str("foo"));
- fail_unless(qdict_size(tests_dict) == 1);
+ g_assert(qdict_size(tests_dict) == 1);
qdict_del(tests_dict, key);
- fail_unless(qdict_size(tests_dict) == 0);
- fail_unless(qdict_haskey(tests_dict, key) == 0);
+ g_assert(qdict_size(tests_dict) == 0);
+ g_assert(qdict_haskey(tests_dict, key) == 0);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qobject_to_qdict_test)
+static void qobject_to_qdict_test(void)
{
- fail_unless(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
+ QDict *tests_dict = qdict_new();
+ g_assert(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_iterapi_test)
+static void qdict_iterapi_test(void)
{
int count;
const QDictEntry *ent;
+ QDict *tests_dict = qdict_new();
- fail_unless(qdict_first(tests_dict) == NULL);
+ g_assert(qdict_first(tests_dict) == NULL);
qdict_put(tests_dict, "key1", qint_from_int(1));
qdict_put(tests_dict, "key2", qint_from_int(2));
@@ -207,47 +209,52 @@ START_TEST(qdict_iterapi_test)
count = 0;
for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
- fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
+ g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
count++;
}
- fail_unless(count == qdict_size(tests_dict));
+ g_assert(count == qdict_size(tests_dict));
/* Do it again to test restarting */
count = 0;
for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
- fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
+ g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
count++;
}
- fail_unless(count == qdict_size(tests_dict));
+ g_assert(count == qdict_size(tests_dict));
+
+ QDECREF(tests_dict);
}
-END_TEST
/*
* Errors test-cases
*/
-START_TEST(qdict_put_exists_test)
+static void qdict_put_exists_test(void)
{
int value;
const char *key = "exists";
+ QDict *tests_dict = qdict_new();
qdict_put(tests_dict, key, qint_from_int(1));
qdict_put(tests_dict, key, qint_from_int(2));
value = qdict_get_int(tests_dict, key);
- fail_unless(value == 2);
+ g_assert(value == 2);
- fail_unless(qdict_size(tests_dict) == 1);
+ g_assert(qdict_size(tests_dict) == 1);
+
+ QDECREF(tests_dict);
}
-END_TEST
-START_TEST(qdict_get_not_exists_test)
+static void qdict_get_not_exists_test(void)
{
- fail_unless(qdict_get(tests_dict, "foo") == NULL);
+ QDict *tests_dict = qdict_new();
+ g_assert(qdict_get(tests_dict, "foo") == NULL);
+
+ QDECREF(tests_dict);
}
-END_TEST
/*
* Stress test-case
@@ -276,7 +283,7 @@ static QString *read_line(FILE *file, char *key)
#define reset_file(file) fseek(file, 0L, SEEK_SET)
-START_TEST(qdict_stress_test)
+static void qdict_stress_test(void)
{
size_t lines;
char key[128];
@@ -286,11 +293,11 @@ START_TEST(qdict_stress_test)
const char *test_file_path = "qdict-test-data.txt";
test_file = fopen(test_file_path, "r");
- fail_unless(test_file != NULL);
+ g_assert(test_file != NULL);
// Create the dict
qdict = qdict_new();
- fail_unless(qdict != NULL);
+ g_assert(qdict != NULL);
// Add everything from the test file
for (lines = 0;; lines++) {
@@ -300,7 +307,7 @@ START_TEST(qdict_stress_test)
qdict_put(qdict, key, value);
}
- fail_unless(qdict_size(qdict) == lines);
+ g_assert(qdict_size(qdict) == lines);
// Check if everything is really in there
reset_file(test_file);
@@ -314,9 +321,9 @@ START_TEST(qdict_stress_test)
str1 = qstring_get_str(value);
str2 = qdict_get_str(qdict, key);
- fail_unless(str2 != NULL);
+ g_assert(str2 != NULL);
- fail_unless(strcmp(str1, str2) == 0);
+ g_assert(strcmp(str1, str2) == 0);
QDECREF(value);
}
@@ -331,72 +338,41 @@ START_TEST(qdict_stress_test)
qdict_del(qdict, key);
QDECREF(value);
- fail_unless(qdict_haskey(qdict, key) == 0);
+ g_assert(qdict_haskey(qdict, key) == 0);
}
fclose(test_file);
- fail_unless(qdict_size(qdict) == 0);
+ g_assert(qdict_size(qdict) == 0);
QDECREF(qdict);
}
-END_TEST
-static Suite *qdict_suite(void)
+int main(int argc, char **argv)
{
- Suite *s;
- TCase *qdict_public_tcase;
- TCase *qdict_public2_tcase;
- TCase *qdict_stress_tcase;
- TCase *qdict_errors_tcase;
-
- s = suite_create("QDict test-suite");
+ g_test_init(&argc, &argv, NULL);
- qdict_public_tcase = tcase_create("Public Interface");
- suite_add_tcase(s, qdict_public_tcase);
- tcase_add_test(qdict_public_tcase, qdict_new_test);
- tcase_add_test(qdict_public_tcase, qdict_put_obj_test);
- tcase_add_test(qdict_public_tcase, qdict_destroy_simple_test);
+ g_test_add_func("/public/new", qdict_new_test);
+ g_test_add_func("/public/put_obj", qdict_put_obj_test);
+ g_test_add_func("/public/destroy_simple", qdict_destroy_simple_test);
/* Continue, but now with fixtures */
- qdict_public2_tcase = tcase_create("Public Interface (2)");
- suite_add_tcase(s, qdict_public2_tcase);
- tcase_add_checked_fixture(qdict_public2_tcase, qdict_setup, qdict_teardown);
- tcase_add_test(qdict_public2_tcase, qdict_get_test);
- tcase_add_test(qdict_public2_tcase, qdict_get_int_test);
- tcase_add_test(qdict_public2_tcase, qdict_get_try_int_test);
- tcase_add_test(qdict_public2_tcase, qdict_get_str_test);
- tcase_add_test(qdict_public2_tcase, qdict_get_try_str_test);
- tcase_add_test(qdict_public2_tcase, qdict_haskey_not_test);
- tcase_add_test(qdict_public2_tcase, qdict_haskey_test);
- tcase_add_test(qdict_public2_tcase, qdict_del_test);
- tcase_add_test(qdict_public2_tcase, qobject_to_qdict_test);
- tcase_add_test(qdict_public2_tcase, qdict_iterapi_test);
-
- qdict_errors_tcase = tcase_create("Errors");
- suite_add_tcase(s, qdict_errors_tcase);
- tcase_add_checked_fixture(qdict_errors_tcase, qdict_setup, qdict_teardown);
- tcase_add_test(qdict_errors_tcase, qdict_put_exists_test);
- tcase_add_test(qdict_errors_tcase, qdict_get_not_exists_test);
+ g_test_add_func("/public/get", qdict_get_test);
+ g_test_add_func("/public/get_int", qdict_get_int_test);
+ g_test_add_func("/public/get_try_int", qdict_get_try_int_test);
+ g_test_add_func("/public/get_str", qdict_get_str_test);
+ g_test_add_func("/public/get_try_str", qdict_get_try_str_test);
+ g_test_add_func("/public/haskey_not", qdict_haskey_not_test);
+ g_test_add_func("/public/haskey", qdict_haskey_test);
+ g_test_add_func("/public/del", qdict_del_test);
+ g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
+ g_test_add_func("/public/iterapi", qdict_iterapi_test);
+
+ g_test_add_func("/errors/put_exists", qdict_put_exists_test);
+ g_test_add_func("/errors/get_not_exists", qdict_get_not_exists_test);
/* The Big one */
- qdict_stress_tcase = tcase_create("Stress Test");
- suite_add_tcase(s, qdict_stress_tcase);
- tcase_add_test(qdict_stress_tcase, qdict_stress_test);
-
- return s;
-}
-
-int main(void)
-{
- int nf;
- Suite *s;
- SRunner *sr;
-
- s = qdict_suite();
- sr = srunner_create(s);
-
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
+ if (g_test_slow()) {
+ g_test_add_func("/stress/test", qdict_stress_test);
+ }
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return g_test_run();
}
diff --git a/configure b/configure
index 79790b3..7e3f28f 100755
--- a/configure
+++ b/configure
@@ -2800,10 +2800,10 @@ if test "$softmmu" = yes ; then
tools="qemu-ga\$(EXESUF) $tools"
fi
if [ "$check_utests" = "yes" ]; then
- checks="check-qint check-qstring check-qdict check-qlist"
+ checks="check-qint check-qstring check-qlist"
checks="check-qfloat check-qjson $checks"
fi
- test_progs="$checks test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="$checks check-qdict test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
diff --git a/tests/Makefile b/tests/Makefile
index c11d980..cff9ff3 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -29,3 +29,9 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
+.PHONY: check
+check: $(patsubst %,run-check-%,$(CHECKS))
+
+run-check-%: %
+ ./$<
+
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 04/11] check-qfloat: convert to gtest
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 05/11] check-qint: " Anthony Liguori
` (8 subsequent siblings)
11 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
check-qfloat.c | 47 ++++++++++++-----------------------------------
configure | 4 ++--
2 files changed, 14 insertions(+), 37 deletions(-)
diff --git a/check-qfloat.c b/check-qfloat.c
index 3344057..cdc66ea 100644
--- a/check-qfloat.c
+++ b/check-qfloat.c
@@ -10,7 +10,7 @@
* See the COPYING.LIB file in the top-level directory.
*
*/
-#include <check.h>
+#include <glib.h>
#include "qfloat.h"
#include "qemu-common.h"
@@ -21,56 +21,33 @@
* (with some violations to access 'private' data)
*/
-START_TEST(qfloat_from_double_test)
+static void qfloat_from_double_test(void)
{
QFloat *qf;
const double value = -42.23423;
qf = qfloat_from_double(value);
- fail_unless(qf != NULL);
- fail_unless(qf->value == value);
- fail_unless(qf->base.refcnt == 1);
- fail_unless(qobject_type(QOBJECT(qf)) == QTYPE_QFLOAT);
+ g_assert(qf != NULL);
+ g_assert(qf->value == value);
+ g_assert(qf->base.refcnt == 1);
+ g_assert(qobject_type(QOBJECT(qf)) == QTYPE_QFLOAT);
// destroy doesn't exit yet
g_free(qf);
}
-END_TEST
-START_TEST(qfloat_destroy_test)
+static void qfloat_destroy_test(void)
{
QFloat *qf = qfloat_from_double(0.0);
QDECREF(qf);
}
-END_TEST
-static Suite *qfloat_suite(void)
+int main(int argc, char **argv)
{
- Suite *s;
- TCase *qfloat_public_tcase;
+ g_test_init(&argc, &argv, NULL);
- s = suite_create("QFloat test-suite");
+ g_test_add_func("/public/from_double", qfloat_from_double_test);
+ g_test_add_func("/public/destroy", qfloat_destroy_test);
- qfloat_public_tcase = tcase_create("Public Interface");
- suite_add_tcase(s, qfloat_public_tcase);
- tcase_add_test(qfloat_public_tcase, qfloat_from_double_test);
- tcase_add_test(qfloat_public_tcase, qfloat_destroy_test);
-
- return s;
-}
-
-int main(void)
-{
- int nf;
- Suite *s;
- SRunner *sr;
-
- s = qfloat_suite();
- sr = srunner_create(s);
-
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
-
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return g_test_run();
}
diff --git a/configure b/configure
index 7e3f28f..a7a6758 100755
--- a/configure
+++ b/configure
@@ -2801,9 +2801,9 @@ if test "$softmmu" = yes ; then
fi
if [ "$check_utests" = "yes" ]; then
checks="check-qint check-qstring check-qlist"
- checks="check-qfloat check-qjson $checks"
+ checks="check-qjson $checks"
fi
- test_progs="$checks check-qdict test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="$checks check-qdict check-qfloat test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 05/11] check-qint: convert to gtest
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (2 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 04/11] check-qfloat: " Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 06/11] check-qstring: " Anthony Liguori
` (7 subsequent siblings)
11 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
check-qint.c | 68 ++++++++++++++++++----------------------------------------
configure | 4 +-
2 files changed, 23 insertions(+), 49 deletions(-)
diff --git a/check-qint.c b/check-qint.c
index 3af51f2..5a27119 100644
--- a/check-qint.c
+++ b/check-qint.c
@@ -9,7 +9,7 @@
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
* See the COPYING.LIB file in the top-level directory.
*/
-#include <check.h>
+#include <glib.h>
#include "qint.h"
#include "qemu-common.h"
@@ -20,94 +20,68 @@
* (with some violations to access 'private' data)
*/
-START_TEST(qint_from_int_test)
+static void qint_from_int_test(void)
{
QInt *qi;
const int value = -42;
qi = qint_from_int(value);
- fail_unless(qi != NULL);
- fail_unless(qi->value == value);
- fail_unless(qi->base.refcnt == 1);
- fail_unless(qobject_type(QOBJECT(qi)) == QTYPE_QINT);
+ g_assert(qi != NULL);
+ g_assert(qi->value == value);
+ g_assert(qi->base.refcnt == 1);
+ g_assert(qobject_type(QOBJECT(qi)) == QTYPE_QINT);
// destroy doesn't exit yet
g_free(qi);
}
-END_TEST
-START_TEST(qint_destroy_test)
+static void qint_destroy_test(void)
{
QInt *qi = qint_from_int(0);
QDECREF(qi);
}
-END_TEST
-START_TEST(qint_from_int64_test)
+static void qint_from_int64_test(void)
{
QInt *qi;
const int64_t value = 0x1234567890abcdefLL;
qi = qint_from_int(value);
- fail_unless((int64_t) qi->value == value);
+ g_assert((int64_t) qi->value == value);
QDECREF(qi);
}
-END_TEST
-START_TEST(qint_get_int_test)
+static void qint_get_int_test(void)
{
QInt *qi;
const int value = 123456;
qi = qint_from_int(value);
- fail_unless(qint_get_int(qi) == value);
+ g_assert(qint_get_int(qi) == value);
QDECREF(qi);
}
-END_TEST
-START_TEST(qobject_to_qint_test)
+static void qobject_to_qint_test(void)
{
QInt *qi;
qi = qint_from_int(0);
- fail_unless(qobject_to_qint(QOBJECT(qi)) == qi);
+ g_assert(qobject_to_qint(QOBJECT(qi)) == qi);
QDECREF(qi);
}
-END_TEST
-static Suite *qint_suite(void)
+int main(int argc, char **argv)
{
- Suite *s;
- TCase *qint_public_tcase;
+ g_test_init(&argc, &argv, NULL);
- s = suite_create("QInt test-suite");
+ g_test_add_func("/public/from_int", qint_from_int_test);
+ g_test_add_func("/public/destroy", qint_destroy_test);
+ g_test_add_func("/public/from_int64", qint_from_int64_test);
+ g_test_add_func("/public/get_int", qint_get_int_test);
+ g_test_add_func("/public/to_qint", qobject_to_qint_test);
- qint_public_tcase = tcase_create("Public Interface");
- suite_add_tcase(s, qint_public_tcase);
- tcase_add_test(qint_public_tcase, qint_from_int_test);
- tcase_add_test(qint_public_tcase, qint_destroy_test);
- tcase_add_test(qint_public_tcase, qint_from_int64_test);
- tcase_add_test(qint_public_tcase, qint_get_int_test);
- tcase_add_test(qint_public_tcase, qobject_to_qint_test);
-
- return s;
-}
-
-int main(void)
-{
- int nf;
- Suite *s;
- SRunner *sr;
-
- s = qint_suite();
- sr = srunner_create(s);
-
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
-
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return g_test_run();
}
diff --git a/configure b/configure
index a7a6758..cea9cb6 100755
--- a/configure
+++ b/configure
@@ -2800,10 +2800,10 @@ if test "$softmmu" = yes ; then
tools="qemu-ga\$(EXESUF) $tools"
fi
if [ "$check_utests" = "yes" ]; then
- checks="check-qint check-qstring check-qlist"
+ checks="check-qstring check-qlist"
checks="check-qjson $checks"
fi
- test_progs="$checks check-qdict check-qfloat test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="$checks check-qdict check-qfloat check-qint test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 06/11] check-qstring: convert to gtest
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (3 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 05/11] check-qint: " Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 07/11] check-qlist: " Anthony Liguori
` (6 subsequent siblings)
11 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
check-qstring.c | 75 +++++++++++++++++-------------------------------------
configure | 4 +-
2 files changed, 26 insertions(+), 53 deletions(-)
diff --git a/check-qstring.c b/check-qstring.c
index 93bd475..681bb68 100644
--- a/check-qstring.c
+++ b/check-qstring.c
@@ -20,31 +20,29 @@
* (with some violations to access 'private' data)
*/
-START_TEST(qstring_from_str_test)
+static void qstring_from_str_test(void)
{
QString *qstring;
const char *str = "QEMU";
qstring = qstring_from_str(str);
- fail_unless(qstring != NULL);
- fail_unless(qstring->base.refcnt == 1);
- fail_unless(strcmp(str, qstring->string) == 0);
- fail_unless(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING);
+ g_assert(qstring != NULL);
+ g_assert(qstring->base.refcnt == 1);
+ g_assert(strcmp(str, qstring->string) == 0);
+ g_assert(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING);
// destroy doesn't exit yet
g_free(qstring->string);
g_free(qstring);
}
-END_TEST
-START_TEST(qstring_destroy_test)
+static void qstring_destroy_test(void)
{
QString *qstring = qstring_from_str("destroy test");
QDECREF(qstring);
}
-END_TEST
-START_TEST(qstring_get_str_test)
+static void qstring_get_str_test(void)
{
QString *qstring;
const char *ret_str;
@@ -52,13 +50,12 @@ START_TEST(qstring_get_str_test)
qstring = qstring_from_str(str);
ret_str = qstring_get_str(qstring);
- fail_unless(strcmp(ret_str, str) == 0);
+ g_assert(strcmp(ret_str, str) == 0);
QDECREF(qstring);
}
-END_TEST
-START_TEST(qstring_append_chr_test)
+static void qstring_append_chr_test(void)
{
int i;
QString *qstring;
@@ -69,66 +66,42 @@ START_TEST(qstring_append_chr_test)
for (i = 0; str[i]; i++)
qstring_append_chr(qstring, str[i]);
- fail_unless(strcmp(str, qstring_get_str(qstring)) == 0);
+ g_assert(strcmp(str, qstring_get_str(qstring)) == 0);
QDECREF(qstring);
}
-END_TEST
-START_TEST(qstring_from_substr_test)
+static void qstring_from_substr_test(void)
{
QString *qs;
qs = qstring_from_substr("virtualization", 3, 9);
- fail_unless(qs != NULL);
- fail_unless(strcmp(qstring_get_str(qs), "tualiza") == 0);
+ g_assert(qs != NULL);
+ g_assert(strcmp(qstring_get_str(qs), "tualiza") == 0);
QDECREF(qs);
}
-END_TEST
-START_TEST(qobject_to_qstring_test)
+static void qobject_to_qstring_test(void)
{
QString *qstring;
qstring = qstring_from_str("foo");
- fail_unless(qobject_to_qstring(QOBJECT(qstring)) == qstring);
+ g_assert(qobject_to_qstring(QOBJECT(qstring)) == qstring);
QDECREF(qstring);
}
-END_TEST
-static Suite *qstring_suite(void)
+int main(int argc, char **argv)
{
- Suite *s;
- TCase *qstring_public_tcase;
+ g_test_init(&argc, &argv, NULL);
- s = suite_create("QString test-suite");
+ g_test_add_func("/public/from_str", qstring_from_str_test);
+ g_test_add_func("/public/destroy", qstring_destroy_test);
+ g_test_add_func("/public/get_str", qstring_get_str_test);
+ g_test_add_func("/public/append_chr", qstring_append_chr_test);
+ g_test_add_func("/public/from_substr", qstring_from_substr_test);
+ g_test_add_func("/public/to_qstring", qobject_to_qstring_test);
- qstring_public_tcase = tcase_create("Public Interface");
- suite_add_tcase(s, qstring_public_tcase);
- tcase_add_test(qstring_public_tcase, qstring_from_str_test);
- tcase_add_test(qstring_public_tcase, qstring_destroy_test);
- tcase_add_test(qstring_public_tcase, qstring_get_str_test);
- tcase_add_test(qstring_public_tcase, qstring_append_chr_test);
- tcase_add_test(qstring_public_tcase, qstring_from_substr_test);
- tcase_add_test(qstring_public_tcase, qobject_to_qstring_test);
-
- return s;
-}
-
-int main(void)
-{
- int nf;
- Suite *s;
- SRunner *sr;
-
- s = qstring_suite();
- sr = srunner_create(s);
-
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
-
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return g_test_run();
}
diff --git a/configure b/configure
index cea9cb6..18f06ba 100755
--- a/configure
+++ b/configure
@@ -2800,10 +2800,10 @@ if test "$softmmu" = yes ; then
tools="qemu-ga\$(EXESUF) $tools"
fi
if [ "$check_utests" = "yes" ]; then
- checks="check-qstring check-qlist"
+ checks="check-qlist"
checks="check-qjson $checks"
fi
- test_progs="$checks check-qdict check-qfloat check-qint test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="$checks check-qdict check-qfloat check-qint check-qstring test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 07/11] check-qlist: convert to gtest
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (4 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 06/11] check-qstring: " Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 08/11] check-qjson: " Anthony Liguori
` (5 subsequent siblings)
11 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
check-qlist.c | 74 ++++++++++++++++++--------------------------------------
configure | 3 +-
2 files changed, 25 insertions(+), 52 deletions(-)
diff --git a/check-qlist.c b/check-qlist.c
index ee2454a..501ba26 100644
--- a/check-qlist.c
+++ b/check-qlist.c
@@ -9,7 +9,7 @@
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
* See the COPYING.LIB file in the top-level directory.
*/
-#include <check.h>
+#include <glib.h>
#include "qint.h"
#include "qlist.h"
@@ -20,21 +20,20 @@
* (with some violations to access 'private' data)
*/
-START_TEST(qlist_new_test)
+static void qlist_new_test(void)
{
QList *qlist;
qlist = qlist_new();
- fail_unless(qlist != NULL);
- fail_unless(qlist->base.refcnt == 1);
- fail_unless(qobject_type(QOBJECT(qlist)) == QTYPE_QLIST);
+ g_assert(qlist != NULL);
+ g_assert(qlist->base.refcnt == 1);
+ g_assert(qobject_type(QOBJECT(qlist)) == QTYPE_QLIST);
// destroy doesn't exist yet
g_free(qlist);
}
-END_TEST
-START_TEST(qlist_append_test)
+static void qlist_append_test(void)
{
QInt *qi;
QList *qlist;
@@ -46,30 +45,28 @@ START_TEST(qlist_append_test)
qlist_append(qlist, qi);
entry = QTAILQ_FIRST(&qlist->head);
- fail_unless(entry != NULL);
- fail_unless(entry->value == QOBJECT(qi));
+ g_assert(entry != NULL);
+ g_assert(entry->value == QOBJECT(qi));
// destroy doesn't exist yet
QDECREF(qi);
g_free(entry);
g_free(qlist);
}
-END_TEST
-START_TEST(qobject_to_qlist_test)
+static void qobject_to_qlist_test(void)
{
QList *qlist;
qlist = qlist_new();
- fail_unless(qobject_to_qlist(QOBJECT(qlist)) == qlist);
+ g_assert(qobject_to_qlist(QOBJECT(qlist)) == qlist);
// destroy doesn't exist yet
g_free(qlist);
}
-END_TEST
-START_TEST(qlist_destroy_test)
+static void qlist_destroy_test(void)
{
int i;
QList *qlist;
@@ -81,7 +78,6 @@ START_TEST(qlist_destroy_test)
QDECREF(qlist);
}
-END_TEST
static int iter_called;
static const int iter_max = 42;
@@ -90,16 +86,16 @@ static void iter_func(QObject *obj, void *opaque)
{
QInt *qi;
- fail_unless(opaque == NULL);
+ g_assert(opaque == NULL);
qi = qobject_to_qint(obj);
- fail_unless(qi != NULL);
- fail_unless((qint_get_int(qi) >= 0) && (qint_get_int(qi) <= iter_max));
+ g_assert(qi != NULL);
+ g_assert((qint_get_int(qi) >= 0) && (qint_get_int(qi) <= iter_max));
iter_called++;
}
-START_TEST(qlist_iter_test)
+static void qlist_iter_test(void)
{
int i;
QList *qlist;
@@ -112,42 +108,20 @@ START_TEST(qlist_iter_test)
iter_called = 0;
qlist_iter(qlist, iter_func, NULL);
- fail_unless(iter_called == iter_max);
+ g_assert(iter_called == iter_max);
QDECREF(qlist);
}
-END_TEST
-static Suite *QList_suite(void)
+int main(int argc, char **argv)
{
- Suite *s;
- TCase *qlist_public_tcase;
+ g_test_init(&argc, &argv, NULL);
- s = suite_create("QList suite");
+ g_test_add_func("/public/new", qlist_new_test);
+ g_test_add_func("/public/append", qlist_append_test);
+ g_test_add_func("/public/to_qlist", qobject_to_qlist_test);
+ g_test_add_func("/public/destroy", qlist_destroy_test);
+ g_test_add_func("/public/iter", qlist_iter_test);
- qlist_public_tcase = tcase_create("Public Interface");
- suite_add_tcase(s, qlist_public_tcase);
- tcase_add_test(qlist_public_tcase, qlist_new_test);
- tcase_add_test(qlist_public_tcase, qlist_append_test);
- tcase_add_test(qlist_public_tcase, qobject_to_qlist_test);
- tcase_add_test(qlist_public_tcase, qlist_destroy_test);
- tcase_add_test(qlist_public_tcase, qlist_iter_test);
-
- return s;
-}
-
-int main(void)
-{
- int nf;
- Suite *s;
- SRunner *sr;
-
- s = QList_suite();
- sr = srunner_create(s);
-
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
-
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return g_test_run();
}
diff --git a/configure b/configure
index 18f06ba..2ab7d6f 100755
--- a/configure
+++ b/configure
@@ -2800,10 +2800,9 @@ if test "$softmmu" = yes ; then
tools="qemu-ga\$(EXESUF) $tools"
fi
if [ "$check_utests" = "yes" ]; then
- checks="check-qlist"
checks="check-qjson $checks"
fi
- test_progs="$checks check-qdict check-qfloat check-qint check-qstring test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="$checks check-qdict check-qfloat check-qint check-qstring check-qlist test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 08/11] check-qjson: convert to gtest
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (5 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 07/11] check-qlist: " Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 09/11] check-qjson: enable disabled tests Anthony Liguori
` (4 subsequent siblings)
11 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
check-qjson.c | 330 +++++++++++++++++++++++----------------------------------
configure | 4 +-
2 files changed, 136 insertions(+), 198 deletions(-)
diff --git a/check-qjson.c b/check-qjson.c
index 36d4ac2..430f53b 100644
--- a/check-qjson.c
+++ b/check-qjson.c
@@ -8,7 +8,7 @@
* See the COPYING.LIB file in the top-level directory.
*
*/
-#include <check.h>
+#include <glib.h>
#include "qstring.h"
#include "qint.h"
@@ -20,7 +20,7 @@
#include "qemu-common.h"
-START_TEST(escaped_string)
+static void escaped_string(void)
{
int i;
struct {
@@ -52,28 +52,23 @@ START_TEST(escaped_string)
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QSTRING);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QSTRING);
str = qobject_to_qstring(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0,
- "%s != %s\n", qstring_get_str(str), test_cases[i].decoded);
+ g_assert_cmpstr(qstring_get_str(str), ==, test_cases[i].decoded);
if (test_cases[i].skip == 0) {
str = qobject_to_json(obj);
- fail_unless(strcmp(qstring_get_str(str),test_cases[i].encoded) == 0,
- "%s != %s\n", qstring_get_str(str),
- test_cases[i].encoded);
-
+ g_assert_cmpstr(qstring_get_str(str), ==, test_cases[i].encoded);
qobject_decref(obj);
}
QDECREF(str);
}
}
-END_TEST
-START_TEST(simple_string)
+static void simple_string(void)
{
int i;
struct {
@@ -92,23 +87,22 @@ START_TEST(simple_string)
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QSTRING);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QSTRING);
str = qobject_to_qstring(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0);
+ g_assert(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0);
str = qobject_to_json(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].encoded) == 0);
+ g_assert(strcmp(qstring_get_str(str), test_cases[i].encoded) == 0);
qobject_decref(obj);
QDECREF(str);
}
}
-END_TEST
-START_TEST(single_quote_string)
+static void single_quote_string(void)
{
int i;
struct {
@@ -127,18 +121,17 @@ START_TEST(single_quote_string)
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QSTRING);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QSTRING);
str = qobject_to_qstring(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0);
+ g_assert(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0);
QDECREF(str);
}
}
-END_TEST
-START_TEST(vararg_string)
+static void vararg_string(void)
{
int i;
struct {
@@ -155,18 +148,17 @@ START_TEST(vararg_string)
obj = qobject_from_jsonf("%s", test_cases[i].decoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QSTRING);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QSTRING);
str = qobject_to_qstring(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0);
+ g_assert(strcmp(qstring_get_str(str), test_cases[i].decoded) == 0);
QDECREF(str);
}
}
-END_TEST
-START_TEST(simple_number)
+static void simple_number(void)
{
int i;
struct {
@@ -187,25 +179,24 @@ START_TEST(simple_number)
QInt *qint;
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QINT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QINT);
qint = qobject_to_qint(obj);
- fail_unless(qint_get_int(qint) == test_cases[i].decoded);
+ g_assert(qint_get_int(qint) == test_cases[i].decoded);
if (test_cases[i].skip == 0) {
QString *str;
str = qobject_to_json(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].encoded) == 0);
+ g_assert(strcmp(qstring_get_str(str), test_cases[i].encoded) == 0);
QDECREF(str);
}
QDECREF(qint);
}
}
-END_TEST
-START_TEST(float_number)
+static void float_number(void)
{
int i;
struct {
@@ -225,26 +216,25 @@ START_TEST(float_number)
QFloat *qfloat;
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QFLOAT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QFLOAT);
qfloat = qobject_to_qfloat(obj);
- fail_unless(qfloat_get_double(qfloat) == test_cases[i].decoded);
+ g_assert(qfloat_get_double(qfloat) == test_cases[i].decoded);
if (test_cases[i].skip == 0) {
QString *str;
str = qobject_to_json(obj);
- fail_unless(strcmp(qstring_get_str(str), test_cases[i].encoded) == 0);
+ g_assert(strcmp(qstring_get_str(str), test_cases[i].encoded) == 0);
QDECREF(str);
}
QDECREF(qfloat);
}
}
-END_TEST
-START_TEST(vararg_number)
+static void vararg_number(void)
{
QObject *obj;
QInt *qint;
@@ -254,85 +244,83 @@ START_TEST(vararg_number)
double valuef = 2.323423423;
obj = qobject_from_jsonf("%d", value);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QINT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QINT);
qint = qobject_to_qint(obj);
- fail_unless(qint_get_int(qint) == value);
+ g_assert(qint_get_int(qint) == value);
QDECREF(qint);
obj = qobject_from_jsonf("%" PRId64, value64);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QINT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QINT);
qint = qobject_to_qint(obj);
- fail_unless(qint_get_int(qint) == value64);
+ g_assert(qint_get_int(qint) == value64);
QDECREF(qint);
obj = qobject_from_jsonf("%f", valuef);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QFLOAT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QFLOAT);
qfloat = qobject_to_qfloat(obj);
- fail_unless(qfloat_get_double(qfloat) == valuef);
+ g_assert(qfloat_get_double(qfloat) == valuef);
QDECREF(qfloat);
}
-END_TEST
-START_TEST(keyword_literal)
+static void keyword_literal(void)
{
QObject *obj;
QBool *qbool;
QString *str;
obj = qobject_from_json("true");
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QBOOL);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QBOOL);
qbool = qobject_to_qbool(obj);
- fail_unless(qbool_get_int(qbool) != 0);
+ g_assert(qbool_get_int(qbool) != 0);
str = qobject_to_json(obj);
- fail_unless(strcmp(qstring_get_str(str), "true") == 0);
+ g_assert(strcmp(qstring_get_str(str), "true") == 0);
QDECREF(str);
QDECREF(qbool);
obj = qobject_from_json("false");
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QBOOL);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QBOOL);
qbool = qobject_to_qbool(obj);
- fail_unless(qbool_get_int(qbool) == 0);
+ g_assert(qbool_get_int(qbool) == 0);
str = qobject_to_json(obj);
- fail_unless(strcmp(qstring_get_str(str), "false") == 0);
+ g_assert(strcmp(qstring_get_str(str), "false") == 0);
QDECREF(str);
QDECREF(qbool);
obj = qobject_from_jsonf("%i", false);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QBOOL);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QBOOL);
qbool = qobject_to_qbool(obj);
- fail_unless(qbool_get_int(qbool) == 0);
+ g_assert(qbool_get_int(qbool) == 0);
QDECREF(qbool);
obj = qobject_from_jsonf("%i", true);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QBOOL);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QBOOL);
qbool = qobject_to_qbool(obj);
- fail_unless(qbool_get_int(qbool) != 0);
+ g_assert(qbool_get_int(qbool) != 0);
QDECREF(qbool);
}
-END_TEST
typedef struct LiteralQDictEntry LiteralQDictEntry;
typedef struct LiteralQObject LiteralQObject;
@@ -426,7 +414,7 @@ static int compare_litqobj_to_qobj(LiteralQObject *lhs, QObject *rhs)
return 0;
}
-START_TEST(simple_dict)
+static void simple_dict(void)
{
int i;
struct {
@@ -460,26 +448,25 @@ START_TEST(simple_dict)
QString *str;
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QDICT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QDICT);
- fail_unless(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
str = qobject_to_json(obj);
qobject_decref(obj);
obj = qobject_from_json(qstring_get_str(str));
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QDICT);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QDICT);
- fail_unless(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
qobject_decref(obj);
QDECREF(str);
}
}
-END_TEST
-START_TEST(simple_list)
+static void simple_list(void)
{
int i;
struct {
@@ -524,26 +511,25 @@ START_TEST(simple_list)
QString *str;
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QLIST);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QLIST);
- fail_unless(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
str = qobject_to_json(obj);
qobject_decref(obj);
obj = qobject_from_json(qstring_get_str(str));
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QLIST);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QLIST);
- fail_unless(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
qobject_decref(obj);
QDECREF(str);
}
}
-END_TEST
-START_TEST(simple_whitespace)
+static void simple_whitespace(void)
{
int i;
struct {
@@ -593,27 +579,26 @@ START_TEST(simple_whitespace)
QString *str;
obj = qobject_from_json(test_cases[i].encoded);
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QLIST);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QLIST);
- fail_unless(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
str = qobject_to_json(obj);
qobject_decref(obj);
obj = qobject_from_json(qstring_get_str(str));
- fail_unless(obj != NULL);
- fail_unless(qobject_type(obj) == QTYPE_QLIST);
+ g_assert(obj != NULL);
+ g_assert(qobject_type(obj) == QTYPE_QLIST);
- fail_unless(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1);
qobject_decref(obj);
QDECREF(str);
}
}
-END_TEST
-START_TEST(simple_varargs)
+static void simple_varargs(void)
{
QObject *embedded_obj;
QObject *obj;
@@ -627,169 +612,122 @@ START_TEST(simple_varargs)
{}}));
embedded_obj = qobject_from_json("[32, 42]");
- fail_unless(embedded_obj != NULL);
+ g_assert(embedded_obj != NULL);
obj = qobject_from_jsonf("[%d, 2, %p]", 1, embedded_obj);
- fail_unless(obj != NULL);
+ g_assert(obj != NULL);
- fail_unless(compare_litqobj_to_qobj(&decoded, obj) == 1);
+ g_assert(compare_litqobj_to_qobj(&decoded, obj) == 1);
qobject_decref(obj);
}
-END_TEST
-START_TEST(empty_input)
+static void empty_input(void)
{
const char *empty = "";
QObject *obj = qobject_from_json(empty);
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_string)
+static void unterminated_string(void)
{
QObject *obj = qobject_from_json("\"abc");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_sq_string)
+static void unterminated_sq_string(void)
{
QObject *obj = qobject_from_json("'abc");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_escape)
+static void unterminated_escape(void)
{
QObject *obj = qobject_from_json("\"abc\\\"");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_array)
+static void unterminated_array(void)
{
QObject *obj = qobject_from_json("[32");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_array_comma)
+static void unterminated_array_comma(void)
{
QObject *obj = qobject_from_json("[32,");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(invalid_array_comma)
+static void invalid_array_comma(void)
{
QObject *obj = qobject_from_json("[32,}");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_dict)
+static void unterminated_dict(void)
{
QObject *obj = qobject_from_json("{'abc':32");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_dict_comma)
+static void unterminated_dict_comma(void)
{
QObject *obj = qobject_from_json("{'abc':32,");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
#if 0
-START_TEST(invalid_dict_comma)
+static void invalid_dict_comma(void)
{
QObject *obj = qobject_from_json("{'abc':32,}");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
-START_TEST(unterminated_literal)
+static void unterminated_literal(void)
{
QObject *obj = qobject_from_json("nul");
- fail_unless(obj == NULL);
+ g_assert(obj == NULL);
}
-END_TEST
#endif
-static Suite *qjson_suite(void)
+int main(int argc, char **argv)
{
- Suite *suite;
- TCase *string_literals, *number_literals, *keyword_literals;
- TCase *dicts, *lists, *whitespace, *varargs, *errors;
-
- string_literals = tcase_create("String Literals");
- tcase_add_test(string_literals, simple_string);
- tcase_add_test(string_literals, escaped_string);
- tcase_add_test(string_literals, single_quote_string);
- tcase_add_test(string_literals, vararg_string);
-
- number_literals = tcase_create("Number Literals");
- tcase_add_test(number_literals, simple_number);
- tcase_add_test(number_literals, float_number);
- tcase_add_test(number_literals, vararg_number);
-
- keyword_literals = tcase_create("Keywords");
- tcase_add_test(keyword_literals, keyword_literal);
- dicts = tcase_create("Objects");
- tcase_add_test(dicts, simple_dict);
- lists = tcase_create("Lists");
- tcase_add_test(lists, simple_list);
-
- whitespace = tcase_create("Whitespace");
- tcase_add_test(whitespace, simple_whitespace);
-
- varargs = tcase_create("Varargs");
- tcase_add_test(varargs, simple_varargs);
-
- errors = tcase_create("Invalid JSON");
- tcase_add_test(errors, empty_input);
- tcase_add_test(errors, unterminated_string);
- tcase_add_test(errors, unterminated_escape);
- tcase_add_test(errors, unterminated_sq_string);
- tcase_add_test(errors, unterminated_array);
- tcase_add_test(errors, unterminated_array_comma);
- tcase_add_test(errors, invalid_array_comma);
- tcase_add_test(errors, unterminated_dict);
- tcase_add_test(errors, unterminated_dict_comma);
+ g_test_init(&argc, &argv, NULL);
+
+ g_test_add_func("/literals/string/simple", simple_string);
+ g_test_add_func("/literals/string/escaped", escaped_string);
+ g_test_add_func("/literals/string/single_quote", single_quote_string);
+ g_test_add_func("/literals/string/vararg", vararg_string);
+
+ g_test_add_func("/literals/number/simple", simple_number);
+ g_test_add_func("/literals/number/float", float_number);
+ g_test_add_func("/literals/number/vararg", vararg_number);
+
+ g_test_add_func("/literals/keyword", keyword_literal);
+
+ g_test_add_func("/dicts/simple_dict", simple_dict);
+ g_test_add_func("/lists/simple_list", simple_list);
+
+ g_test_add_func("/whitespace/simple_whitespace", simple_whitespace);
+
+ g_test_add_func("/varargs/simple_varargs", simple_varargs);
+
+ g_test_add_func("/errors/empty_input", empty_input);
+ g_test_add_func("/errors/unterminated/string", unterminated_string);
+ g_test_add_func("/errors/unterminated/escape", unterminated_escape);
+ g_test_add_func("/errors/unterminated/sq_string", unterminated_sq_string);
+ g_test_add_func("/errors/unterminated/array", unterminated_array);
+ g_test_add_func("/errors/unterminated/array_comma", unterminated_array_comma);
+ g_test_add_func("/errors/unterminated/dict", unterminated_dict);
+ g_test_add_func("/errors/unterminated/dict_comma", unterminated_dict_comma);
+ g_test_add_func("/errors/invalid_array_comma", invalid_array_comma);
#if 0
/* FIXME: this print parse error messages on stderr. */
- tcase_add_test(errors, invalid_dict_comma);
- tcase_add_test(errors, unterminated_literal);
+ g_test_add_func("/errors/invalid_dict_comma", invalid_dict_comma);
+ g_test_add_func("/errors/unterminated/literal", unterminated_literal);
#endif
- suite = suite_create("QJSON test-suite");
- suite_add_tcase(suite, string_literals);
- suite_add_tcase(suite, number_literals);
- suite_add_tcase(suite, keyword_literals);
- suite_add_tcase(suite, dicts);
- suite_add_tcase(suite, lists);
- suite_add_tcase(suite, whitespace);
- suite_add_tcase(suite, varargs);
- suite_add_tcase(suite, errors);
-
- return suite;
-}
-
-int main(void)
-{
- int nf;
- Suite *s;
- SRunner *sr;
-
- s = qjson_suite();
- sr = srunner_create(s);
-
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
-
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return g_test_run();
}
diff --git a/configure b/configure
index 2ab7d6f..b2e622c 100755
--- a/configure
+++ b/configure
@@ -2800,9 +2800,9 @@ if test "$softmmu" = yes ; then
tools="qemu-ga\$(EXESUF) $tools"
fi
if [ "$check_utests" = "yes" ]; then
- checks="check-qjson $checks"
+ checks="$checks"
fi
- test_progs="$checks check-qdict check-qfloat check-qint check-qstring check-qlist test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="$checks check-qdict check-qfloat check-qint check-qstring check-qlist check-qjson test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 09/11] check-qjson: enable disabled tests
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (6 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 08/11] check-qjson: " Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester Anthony Liguori
` (3 subsequent siblings)
11 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
gtest does the right thing here so there's no need to comment these tests out.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
check-qjson.c | 5 -----
1 files changed, 0 insertions(+), 5 deletions(-)
diff --git a/check-qjson.c b/check-qjson.c
index 430f53b..526e25e 100644
--- a/check-qjson.c
+++ b/check-qjson.c
@@ -678,7 +678,6 @@ static void unterminated_dict_comma(void)
g_assert(obj == NULL);
}
-#if 0
static void invalid_dict_comma(void)
{
QObject *obj = qobject_from_json("{'abc':32,}");
@@ -690,7 +689,6 @@ static void unterminated_literal(void)
QObject *obj = qobject_from_json("nul");
g_assert(obj == NULL);
}
-#endif
int main(int argc, char **argv)
{
@@ -723,11 +721,8 @@ int main(int argc, char **argv)
g_test_add_func("/errors/unterminated/dict", unterminated_dict);
g_test_add_func("/errors/unterminated/dict_comma", unterminated_dict_comma);
g_test_add_func("/errors/invalid_array_comma", invalid_array_comma);
-#if 0
- /* FIXME: this print parse error messages on stderr. */
g_test_add_func("/errors/invalid_dict_comma", invalid_dict_comma);
g_test_add_func("/errors/unterminated/literal", unterminated_literal);
-#endif
return g_test_run();
}
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (7 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 09/11] check-qjson: enable disabled tests Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 19:35 ` Andreas Färber
2012-01-10 9:17 ` Gerd Hoffmann
2012-01-09 15:56 ` [Qemu-devel] [PATCH 11/11] check: add a check-report and check-help target Anthony Liguori
` (2 subsequent siblings)
11 siblings, 2 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
configure | 33 +--------------------------------
tests/Makefile | 11 ++++++-----
2 files changed, 7 insertions(+), 37 deletions(-)
diff --git a/configure b/configure
index b2e622c..90ad82c 100755
--- a/configure
+++ b/configure
@@ -176,7 +176,6 @@ mixemu="no"
aix="no"
blobs="yes"
pkgversion=""
-check_utests=""
pie=""
zero_malloc=""
trace_backend="nop"
@@ -733,10 +732,6 @@ for opt do
;;
--enable-fdt) fdt="yes"
;;
- --disable-check-utests) check_utests="no"
- ;;
- --enable-check-utests) check_utests="yes"
- ;;
--disable-nptl) nptl="no"
;;
--enable-nptl) nptl="yes"
@@ -1014,8 +1009,6 @@ echo " --disable-curl disable curl connectivity"
echo " --enable-curl enable curl connectivity"
echo " --disable-fdt disable fdt device tree"
echo " --enable-fdt enable fdt device tree"
-echo " --disable-check-utests disable check unit-tests"
-echo " --enable-check-utests enable check unit-tests"
echo " --disable-bluez disable bluez stack connectivity"
echo " --enable-bluez enable bluez stack connectivity"
echo " --disable-slirp disable SLIRP userspace network connectivity"
@@ -1923,26 +1916,6 @@ EOF
fi # test "$curl"
##########################################
-# check framework probe
-
-if test "$check_utests" != "no" ; then
- cat > $TMPC << EOF
-#include <check.h>
-int main(void) { suite_create("qemu test"); return 0; }
-EOF
- check_libs=`$pkg_config --libs check 2>/dev/null`
- if compile_prog "" $check_libs ; then
- check_utests=yes
- libs_tools="$check_libs $libs_tools"
- else
- if test "$check_utests" = "yes" ; then
- feature_not_found "check"
- fi
- check_utests=no
- fi
-fi # test "$check_utests"
-
-##########################################
# bluez support probe
if test "$bluez" != "no" ; then
cat > $TMPC << EOF
@@ -2799,10 +2772,7 @@ if test "$softmmu" = yes ; then
if [ "$guest_agent" = "yes" ]; then
tools="qemu-ga\$(EXESUF) $tools"
fi
- if [ "$check_utests" = "yes" ]; then
- checks="$checks"
- fi
- test_progs="$checks check-qdict check-qfloat check-qint check-qstring check-qlist check-qjson test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
+ test_progs="check-qdict check-qfloat check-qint check-qstring check-qlist check-qjson test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
fi
fi
@@ -3274,7 +3244,6 @@ if test "$trace_default" = "yes"; then
fi
echo "TOOLS=$tools" >> $config_host_mak
-echo "CHECKS=$test_progs" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
diff --git a/tests/Makefile b/tests/Makefile
index cff9ff3..cba482f 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -1,3 +1,7 @@
+CHECKS=check-qdict check-qfloat check-qint check-qstring check-qlist
+CHECKS+=check-qjson test-coroutine test-qmp-output-visitor
+CHECKS+=test-qmp-input-visitor
+
check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
check-qint: check-qint.o qint.o $(tools-obj-y)
@@ -30,8 +34,5 @@ test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types
test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
.PHONY: check
-check: $(patsubst %,run-check-%,$(CHECKS))
-
-run-check-%: %
- ./$<
-
+check: $(CHECKS)
+ gtester $(CHECKS)
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] [PATCH 11/11] check: add a check-report and check-help target
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (8 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester Anthony Liguori
@ 2012-01-09 15:56 ` Anthony Liguori
2012-01-09 20:00 ` Andreas Färber
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
2012-01-09 19:18 ` [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Andreas Färber
11 siblings, 1 reply; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 15:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Anthony Liguori, Luiz Capitulino
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
tests/Makefile | 43 ++++++++++++++++++++++++++++++++++++++++---
1 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/tests/Makefile b/tests/Makefile
index cba482f..7228f44 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -33,6 +33,43 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
-.PHONY: check
-check: $(CHECKS)
- gtester $(CHECKS)
+check: check-quick
+
+check-slow: $(CHECKS)
+ gtester -m=slow $(CHECKS)
+
+check-quick: $(CHECKS)
+ gtester -m=quick $(CHECKS)
+
+check-perf: $(CHECKS)
+ gtester -m=perf $(CHECKS)
+
+check-help:
+ @echo "Regression targets:"
+ @echo
+ @echo " make check Alias for 'make check-quick'"
+ @echo " make check-quick Run all unit tests in 'quick' mode"
+ @echo " make check-slow Run all unit tests in 'slow' mode"
+ @echo " make check-perf Run all unit tests in 'perf' mode"
+ @echo
+ @echo " make check-report Alias for 'make check-report-quick'"
+ @echo " make check-report-quick Generate an HTML report for check-quick"
+ @echo " make check-report-slow Generate an HTML report for check-slow"
+ @echo " make check-report-perf Generate an HTML report for check-perf"
+ @echo
+ @echo "Please note that HTML reports do not regenerate if the unit tests"
+ @echo "has not changed."
+
+check-report-%.log: $(CHECKS)
+ gtester -m=`echo $@ | cut -f3 -d- | cut -f1 -d.` -o $@ $^
+
+check-report-%.html: check-report-%.log
+ gtester-report $< > $@
+
+check-report-quick: check-report-quick.html
+check-report-slow: check-report-slow.html
+check-report-perf: check-report-perf.html
+
+check-report: check-report-quick
+
+.PHONY: check check-quick check-slow check-perf check-help
--
1.7.4.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [Qemu-devel] Please read: make check framework
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (9 preceding siblings ...)
2012-01-09 15:56 ` [Qemu-devel] [PATCH 11/11] check: add a check-report and check-help target Anthony Liguori
@ 2012-01-09 16:04 ` Anthony Liguori
2012-01-09 16:16 ` Avi Kivity
` (4 more replies)
2012-01-09 19:18 ` [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Andreas Färber
11 siblings, 5 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 16:04 UTC (permalink / raw)
To: qemu-devel
Cc: Mark McLoughlin, Michael S. Tsirkin, Alexander Graf, Blue Swirl,
Max Filippov, Gerd Hoffmann, Edgar E. Iglesias, Peter Maydell,
Markus Armbruster, Andreas Färber, Hervé Poussineau,
Avi Kivity, Stefan Hajnoczi, Stefano Stabellini, Stefan Weil,
Riku Voipio, Jan Kiszka, Paul Brook, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Vassili Karpov (malc), Marcelo Tosatti, Michael Walle,
Amit Shah, Paolo Bonzini, Aurelien Jarno
Hi,
I'm going to apply this series quickly and will start running 'make check-quick'
as part a sniff test before pushing patches.
I'd like to request that all maintainers/submaintainers do the same and that
everyone contributes unit tests to this target.
The general rules for 'make check-quick':
1) It must complete in less than 10 minutes start to finish (the entire rule).
We can re-examine this over time but for now, it seems like a reasonable limit.
2) It must gracefully degrade across architectures/targets. Do not assume
qemu-system-x86_64 is present or that an arm cross compiler is available.
It would also be nice to get this integrated as part of buildbot.
Stefan/Daniel, is that something we can do?
Regards,
Anthony Liguori
On 01/09/2012 09:56 AM, Anthony Liguori wrote:
> Signed-off-by: Anthony Liguori<aliguori@us.ibm.com>
> ---
> Makefile | 4 ++--
> configure | 6 +++---
> tests/{ => tcg}/Makefile | 0
> tests/{ => tcg}/alpha/Makefile | 0
> tests/{ => tcg}/alpha/crt.s | 0
> tests/{ => tcg}/alpha/hello-alpha.c | 0
> tests/{ => tcg}/alpha/test-cond.c | 0
> tests/{ => tcg}/alpha/test-ovf.c | 0
> tests/{ => tcg}/cris/.gdbinit | 0
> tests/{ => tcg}/cris/Makefile | 0
> tests/{ => tcg}/cris/README | 0
> tests/{ => tcg}/cris/check_abs.c | 0
> tests/{ => tcg}/cris/check_addc.c | 0
> tests/{ => tcg}/cris/check_addcm.c | 0
> tests/{ => tcg}/cris/check_addi.s | 0
> tests/{ => tcg}/cris/check_addiv32.s | 0
> tests/{ => tcg}/cris/check_addm.s | 0
> tests/{ => tcg}/cris/check_addo.c | 0
> tests/{ => tcg}/cris/check_addoq.c | 0
> tests/{ => tcg}/cris/check_addq.s | 0
> tests/{ => tcg}/cris/check_addr.s | 0
> tests/{ => tcg}/cris/check_addxc.s | 0
> tests/{ => tcg}/cris/check_addxm.s | 0
> tests/{ => tcg}/cris/check_addxr.s | 0
> tests/{ => tcg}/cris/check_andc.s | 0
> tests/{ => tcg}/cris/check_andm.s | 0
> tests/{ => tcg}/cris/check_andq.s | 0
> tests/{ => tcg}/cris/check_andr.s | 0
> tests/{ => tcg}/cris/check_asr.s | 0
> tests/{ => tcg}/cris/check_ba.s | 0
> tests/{ => tcg}/cris/check_bas.s | 0
> tests/{ => tcg}/cris/check_bcc.s | 0
> tests/{ => tcg}/cris/check_bound.c | 0
> tests/{ => tcg}/cris/check_boundc.s | 0
> tests/{ => tcg}/cris/check_boundr.s | 0
> tests/{ => tcg}/cris/check_btst.s | 0
> tests/{ => tcg}/cris/check_clearfv32.s | 0
> tests/{ => tcg}/cris/check_clrjmp1.s | 0
> tests/{ => tcg}/cris/check_cmp-2.s | 0
> tests/{ => tcg}/cris/check_cmpc.s | 0
> tests/{ => tcg}/cris/check_cmpm.s | 0
> tests/{ => tcg}/cris/check_cmpq.s | 0
> tests/{ => tcg}/cris/check_cmpr.s | 0
> tests/{ => tcg}/cris/check_cmpxc.s | 0
> tests/{ => tcg}/cris/check_cmpxm.s | 0
> tests/{ => tcg}/cris/check_dstep.s | 0
> tests/{ => tcg}/cris/check_ftag.c | 0
> tests/{ => tcg}/cris/check_gcctorture_pr28634-1.c | 0
> tests/{ => tcg}/cris/check_gcctorture_pr28634.c | 0
> tests/{ => tcg}/cris/check_glibc_kernelversion.c | 0
> tests/{ => tcg}/cris/check_hello.c | 0
> tests/{ => tcg}/cris/check_int64.c | 0
> tests/{ => tcg}/cris/check_jsr.s | 0
> tests/{ => tcg}/cris/check_lapc.s | 0
> tests/{ => tcg}/cris/check_lsl.s | 0
> tests/{ => tcg}/cris/check_lsr.s | 0
> tests/{ => tcg}/cris/check_lz.c | 0
> tests/{ => tcg}/cris/check_mapbrk.c | 0
> tests/{ => tcg}/cris/check_mcp.s | 0
> tests/{ => tcg}/cris/check_mmap1.c | 0
> tests/{ => tcg}/cris/check_mmap2.c | 0
> tests/{ => tcg}/cris/check_mmap3.c | 0
> tests/{ => tcg}/cris/check_movdelsr1.s | 0
> tests/{ => tcg}/cris/check_movecr.s | 0
> tests/{ => tcg}/cris/check_movei.s | 0
> tests/{ => tcg}/cris/check_movemr.s | 0
> tests/{ => tcg}/cris/check_movemrv32.s | 0
> tests/{ => tcg}/cris/check_moveq.c | 0
> tests/{ => tcg}/cris/check_mover.s | 0
> tests/{ => tcg}/cris/check_moverm.s | 0
> tests/{ => tcg}/cris/check_movmp.s | 0
> tests/{ => tcg}/cris/check_movpmv32.s | 0
> tests/{ => tcg}/cris/check_movpr.s | 0
> tests/{ => tcg}/cris/check_movprv32.s | 0
> tests/{ => tcg}/cris/check_movscr.s | 0
> tests/{ => tcg}/cris/check_movsm.s | 0
> tests/{ => tcg}/cris/check_movsr.s | 0
> tests/{ => tcg}/cris/check_movucr.s | 0
> tests/{ => tcg}/cris/check_movum.s | 0
> tests/{ => tcg}/cris/check_movur.s | 0
> tests/{ => tcg}/cris/check_mulv32.s | 0
> tests/{ => tcg}/cris/check_mulx.s | 0
> tests/{ => tcg}/cris/check_neg.s | 0
> tests/{ => tcg}/cris/check_not.s | 0
> tests/{ => tcg}/cris/check_openpf1.c | 0
> tests/{ => tcg}/cris/check_openpf2.c | 0
> tests/{ => tcg}/cris/check_openpf3.c | 0
> tests/{ => tcg}/cris/check_openpf4.c | 0
> tests/{ => tcg}/cris/check_openpf5.c | 0
> tests/{ => tcg}/cris/check_orc.s | 0
> tests/{ => tcg}/cris/check_orm.s | 0
> tests/{ => tcg}/cris/check_orq.s | 0
> tests/{ => tcg}/cris/check_orr.s | 0
> tests/{ => tcg}/cris/check_ret.s | 0
> tests/{ => tcg}/cris/check_scc.s | 0
> tests/{ => tcg}/cris/check_settls1.c | 0
> tests/{ => tcg}/cris/check_sigalrm.c | 0
> tests/{ => tcg}/cris/check_stat1.c | 0
> tests/{ => tcg}/cris/check_stat2.c | 0
> tests/{ => tcg}/cris/check_stat3.c | 0
> tests/{ => tcg}/cris/check_stat4.c | 0
> tests/{ => tcg}/cris/check_subc.s | 0
> tests/{ => tcg}/cris/check_subm.s | 0
> tests/{ => tcg}/cris/check_subq.s | 0
> tests/{ => tcg}/cris/check_subr.s | 0
> tests/{ => tcg}/cris/check_swap.c | 0
> tests/{ => tcg}/cris/check_time1.c | 0
> tests/{ => tcg}/cris/check_time2.c | 0
> tests/{ => tcg}/cris/check_xarith.s | 0
> tests/{ => tcg}/cris/crisutils.h | 0
> tests/{ => tcg}/cris/crt.s | 0
> tests/{ => tcg}/cris/sys.c | 0
> tests/{ => tcg}/cris/sys.h | 0
> tests/{ => tcg}/cris/testutils.inc | 0
> tests/{ => tcg}/hello-arm.c | 0
> tests/{ => tcg}/hello-i386.c | 0
> tests/{ => tcg}/hello-mips.c | 0
> tests/{ => tcg}/linux-test.c | 0
> tests/{ => tcg}/lm32/Makefile | 0
> tests/{ => tcg}/lm32/crt.S | 0
> tests/{ => tcg}/lm32/linker.ld | 0
> tests/{ => tcg}/lm32/macros.inc | 0
> tests/{ => tcg}/lm32/test_add.S | 0
> tests/{ => tcg}/lm32/test_addi.S | 0
> tests/{ => tcg}/lm32/test_and.S | 0
> tests/{ => tcg}/lm32/test_andhi.S | 0
> tests/{ => tcg}/lm32/test_andi.S | 0
> tests/{ => tcg}/lm32/test_b.S | 0
> tests/{ => tcg}/lm32/test_be.S | 0
> tests/{ => tcg}/lm32/test_bg.S | 0
> tests/{ => tcg}/lm32/test_bge.S | 0
> tests/{ => tcg}/lm32/test_bgeu.S | 0
> tests/{ => tcg}/lm32/test_bgu.S | 0
> tests/{ => tcg}/lm32/test_bi.S | 0
> tests/{ => tcg}/lm32/test_bne.S | 0
> tests/{ => tcg}/lm32/test_break.S | 0
> tests/{ => tcg}/lm32/test_bret.S | 0
> tests/{ => tcg}/lm32/test_call.S | 0
> tests/{ => tcg}/lm32/test_calli.S | 0
> tests/{ => tcg}/lm32/test_cmpe.S | 0
> tests/{ => tcg}/lm32/test_cmpei.S | 0
> tests/{ => tcg}/lm32/test_cmpg.S | 0
> tests/{ => tcg}/lm32/test_cmpge.S | 0
> tests/{ => tcg}/lm32/test_cmpgei.S | 0
> tests/{ => tcg}/lm32/test_cmpgeu.S | 0
> tests/{ => tcg}/lm32/test_cmpgeui.S | 0
> tests/{ => tcg}/lm32/test_cmpgi.S | 0
> tests/{ => tcg}/lm32/test_cmpgu.S | 0
> tests/{ => tcg}/lm32/test_cmpgui.S | 0
> tests/{ => tcg}/lm32/test_cmpne.S | 0
> tests/{ => tcg}/lm32/test_cmpnei.S | 0
> tests/{ => tcg}/lm32/test_divu.S | 0
> tests/{ => tcg}/lm32/test_eret.S | 0
> tests/{ => tcg}/lm32/test_lb.S | 0
> tests/{ => tcg}/lm32/test_lbu.S | 0
> tests/{ => tcg}/lm32/test_lh.S | 0
> tests/{ => tcg}/lm32/test_lhu.S | 0
> tests/{ => tcg}/lm32/test_lw.S | 0
> tests/{ => tcg}/lm32/test_modu.S | 0
> tests/{ => tcg}/lm32/test_mul.S | 0
> tests/{ => tcg}/lm32/test_muli.S | 0
> tests/{ => tcg}/lm32/test_nor.S | 0
> tests/{ => tcg}/lm32/test_nori.S | 0
> tests/{ => tcg}/lm32/test_or.S | 0
> tests/{ => tcg}/lm32/test_orhi.S | 0
> tests/{ => tcg}/lm32/test_ori.S | 0
> tests/{ => tcg}/lm32/test_ret.S | 0
> tests/{ => tcg}/lm32/test_sb.S | 0
> tests/{ => tcg}/lm32/test_scall.S | 0
> tests/{ => tcg}/lm32/test_sextb.S | 0
> tests/{ => tcg}/lm32/test_sexth.S | 0
> tests/{ => tcg}/lm32/test_sh.S | 0
> tests/{ => tcg}/lm32/test_sl.S | 0
> tests/{ => tcg}/lm32/test_sli.S | 0
> tests/{ => tcg}/lm32/test_sr.S | 0
> tests/{ => tcg}/lm32/test_sri.S | 0
> tests/{ => tcg}/lm32/test_sru.S | 0
> tests/{ => tcg}/lm32/test_srui.S | 0
> tests/{ => tcg}/lm32/test_sub.S | 0
> tests/{ => tcg}/lm32/test_sw.S | 0
> tests/{ => tcg}/lm32/test_xnor.S | 0
> tests/{ => tcg}/lm32/test_xnori.S | 0
> tests/{ => tcg}/lm32/test_xor.S | 0
> tests/{ => tcg}/lm32/test_xori.S | 0
> tests/{ => tcg}/pi_10.com | Bin 54 -> 54 bytes
> tests/{ => tcg}/runcom.c | 0
> tests/{ => tcg}/sha1.c | 0
> tests/{ => tcg}/test-arm-iwmmxt.s | 0
> tests/{ => tcg}/test-i386-code16.S | 0
> tests/{ => tcg}/test-i386-muldiv.h | 0
> tests/{ => tcg}/test-i386-shift.h | 0
> tests/{ => tcg}/test-i386-ssse3.c | 0
> tests/{ => tcg}/test-i386-vm86.S | 0
> tests/{ => tcg}/test-i386.c | 0
> tests/{ => tcg}/test-i386.h | 0
> tests/{ => tcg}/test-mmap.c | 0
> tests/{ => tcg}/test_path.c | 0
> tests/{ => tcg}/testthread.c | 0
> tests/{ => tcg}/xtensa/Makefile | 0
> tests/{ => tcg}/xtensa/crt.S | 0
> tests/{ => tcg}/xtensa/linker.ld | 0
> tests/{ => tcg}/xtensa/macros.inc | 0
> tests/{ => tcg}/xtensa/test_b.S | 0
> tests/{ => tcg}/xtensa/test_bi.S | 0
> tests/{ => tcg}/xtensa/test_boolean.S | 0
> tests/{ => tcg}/xtensa/test_bz.S | 0
> tests/{ => tcg}/xtensa/test_clamps.S | 0
> tests/{ => tcg}/xtensa/test_fail.S | 0
> tests/{ => tcg}/xtensa/test_interrupt.S | 0
> tests/{ => tcg}/xtensa/test_loop.S | 0
> tests/{ => tcg}/xtensa/test_mac16.S | 0
> tests/{ => tcg}/xtensa/test_max.S | 0
> tests/{ => tcg}/xtensa/test_min.S | 0
> tests/{ => tcg}/xtensa/test_mmu.S | 0
> tests/{ => tcg}/xtensa/test_mul16.S | 0
> tests/{ => tcg}/xtensa/test_mul32.S | 0
> tests/{ => tcg}/xtensa/test_nsa.S | 0
> tests/{ => tcg}/xtensa/test_pipeline.S | 0
> tests/{ => tcg}/xtensa/test_quo.S | 0
> tests/{ => tcg}/xtensa/test_rem.S | 0
> tests/{ => tcg}/xtensa/test_rst0.S | 0
> tests/{ => tcg}/xtensa/test_sar.S | 0
> tests/{ => tcg}/xtensa/test_sext.S | 0
> tests/{ => tcg}/xtensa/test_shift.S | 0
> tests/{ => tcg}/xtensa/test_timer.S | 0
> tests/{ => tcg}/xtensa/test_windowed.S | 0
> tests/{ => tcg}/xtensa/vectors.S | 0
> 227 files changed, 5 insertions(+), 5 deletions(-)
> rename tests/{ => tcg}/Makefile (100%)
> rename tests/{ => tcg}/alpha/Makefile (100%)
> rename tests/{ => tcg}/alpha/crt.s (100%)
> rename tests/{ => tcg}/alpha/hello-alpha.c (100%)
> rename tests/{ => tcg}/alpha/test-cond.c (100%)
> rename tests/{ => tcg}/alpha/test-ovf.c (100%)
> rename tests/{ => tcg}/cris/.gdbinit (100%)
> rename tests/{ => tcg}/cris/Makefile (100%)
> rename tests/{ => tcg}/cris/README (100%)
> rename tests/{ => tcg}/cris/check_abs.c (100%)
> rename tests/{ => tcg}/cris/check_addc.c (100%)
> rename tests/{ => tcg}/cris/check_addcm.c (100%)
> rename tests/{ => tcg}/cris/check_addi.s (100%)
> rename tests/{ => tcg}/cris/check_addiv32.s (100%)
> rename tests/{ => tcg}/cris/check_addm.s (100%)
> rename tests/{ => tcg}/cris/check_addo.c (100%)
> rename tests/{ => tcg}/cris/check_addoq.c (100%)
> rename tests/{ => tcg}/cris/check_addq.s (100%)
> rename tests/{ => tcg}/cris/check_addr.s (100%)
> rename tests/{ => tcg}/cris/check_addxc.s (100%)
> rename tests/{ => tcg}/cris/check_addxm.s (100%)
> rename tests/{ => tcg}/cris/check_addxr.s (100%)
> rename tests/{ => tcg}/cris/check_andc.s (100%)
> rename tests/{ => tcg}/cris/check_andm.s (100%)
> rename tests/{ => tcg}/cris/check_andq.s (100%)
> rename tests/{ => tcg}/cris/check_andr.s (100%)
> rename tests/{ => tcg}/cris/check_asr.s (100%)
> rename tests/{ => tcg}/cris/check_ba.s (100%)
> rename tests/{ => tcg}/cris/check_bas.s (100%)
> rename tests/{ => tcg}/cris/check_bcc.s (100%)
> rename tests/{ => tcg}/cris/check_bound.c (100%)
> rename tests/{ => tcg}/cris/check_boundc.s (100%)
> rename tests/{ => tcg}/cris/check_boundr.s (100%)
> rename tests/{ => tcg}/cris/check_btst.s (100%)
> rename tests/{ => tcg}/cris/check_clearfv32.s (100%)
> rename tests/{ => tcg}/cris/check_clrjmp1.s (100%)
> rename tests/{ => tcg}/cris/check_cmp-2.s (100%)
> rename tests/{ => tcg}/cris/check_cmpc.s (100%)
> rename tests/{ => tcg}/cris/check_cmpm.s (100%)
> rename tests/{ => tcg}/cris/check_cmpq.s (100%)
> rename tests/{ => tcg}/cris/check_cmpr.s (100%)
> rename tests/{ => tcg}/cris/check_cmpxc.s (100%)
> rename tests/{ => tcg}/cris/check_cmpxm.s (100%)
> rename tests/{ => tcg}/cris/check_dstep.s (100%)
> rename tests/{ => tcg}/cris/check_ftag.c (100%)
> rename tests/{ => tcg}/cris/check_gcctorture_pr28634-1.c (100%)
> rename tests/{ => tcg}/cris/check_gcctorture_pr28634.c (100%)
> rename tests/{ => tcg}/cris/check_glibc_kernelversion.c (100%)
> rename tests/{ => tcg}/cris/check_hello.c (100%)
> rename tests/{ => tcg}/cris/check_int64.c (100%)
> rename tests/{ => tcg}/cris/check_jsr.s (100%)
> rename tests/{ => tcg}/cris/check_lapc.s (100%)
> rename tests/{ => tcg}/cris/check_lsl.s (100%)
> rename tests/{ => tcg}/cris/check_lsr.s (100%)
> rename tests/{ => tcg}/cris/check_lz.c (100%)
> rename tests/{ => tcg}/cris/check_mapbrk.c (100%)
> rename tests/{ => tcg}/cris/check_mcp.s (100%)
> rename tests/{ => tcg}/cris/check_mmap1.c (100%)
> rename tests/{ => tcg}/cris/check_mmap2.c (100%)
> rename tests/{ => tcg}/cris/check_mmap3.c (100%)
> rename tests/{ => tcg}/cris/check_movdelsr1.s (100%)
> rename tests/{ => tcg}/cris/check_movecr.s (100%)
> rename tests/{ => tcg}/cris/check_movei.s (100%)
> rename tests/{ => tcg}/cris/check_movemr.s (100%)
> rename tests/{ => tcg}/cris/check_movemrv32.s (100%)
> rename tests/{ => tcg}/cris/check_moveq.c (100%)
> rename tests/{ => tcg}/cris/check_mover.s (100%)
> rename tests/{ => tcg}/cris/check_moverm.s (100%)
> rename tests/{ => tcg}/cris/check_movmp.s (100%)
> rename tests/{ => tcg}/cris/check_movpmv32.s (100%)
> rename tests/{ => tcg}/cris/check_movpr.s (100%)
> rename tests/{ => tcg}/cris/check_movprv32.s (100%)
> rename tests/{ => tcg}/cris/check_movscr.s (100%)
> rename tests/{ => tcg}/cris/check_movsm.s (100%)
> rename tests/{ => tcg}/cris/check_movsr.s (100%)
> rename tests/{ => tcg}/cris/check_movucr.s (100%)
> rename tests/{ => tcg}/cris/check_movum.s (100%)
> rename tests/{ => tcg}/cris/check_movur.s (100%)
> rename tests/{ => tcg}/cris/check_mulv32.s (100%)
> rename tests/{ => tcg}/cris/check_mulx.s (100%)
> rename tests/{ => tcg}/cris/check_neg.s (100%)
> rename tests/{ => tcg}/cris/check_not.s (100%)
> rename tests/{ => tcg}/cris/check_openpf1.c (100%)
> rename tests/{ => tcg}/cris/check_openpf2.c (100%)
> rename tests/{ => tcg}/cris/check_openpf3.c (100%)
> rename tests/{ => tcg}/cris/check_openpf4.c (100%)
> rename tests/{ => tcg}/cris/check_openpf5.c (100%)
> rename tests/{ => tcg}/cris/check_orc.s (100%)
> rename tests/{ => tcg}/cris/check_orm.s (100%)
> rename tests/{ => tcg}/cris/check_orq.s (100%)
> rename tests/{ => tcg}/cris/check_orr.s (100%)
> rename tests/{ => tcg}/cris/check_ret.s (100%)
> rename tests/{ => tcg}/cris/check_scc.s (100%)
> rename tests/{ => tcg}/cris/check_settls1.c (100%)
> rename tests/{ => tcg}/cris/check_sigalrm.c (100%)
> rename tests/{ => tcg}/cris/check_stat1.c (100%)
> rename tests/{ => tcg}/cris/check_stat2.c (100%)
> rename tests/{ => tcg}/cris/check_stat3.c (100%)
> rename tests/{ => tcg}/cris/check_stat4.c (100%)
> rename tests/{ => tcg}/cris/check_subc.s (100%)
> rename tests/{ => tcg}/cris/check_subm.s (100%)
> rename tests/{ => tcg}/cris/check_subq.s (100%)
> rename tests/{ => tcg}/cris/check_subr.s (100%)
> rename tests/{ => tcg}/cris/check_swap.c (100%)
> rename tests/{ => tcg}/cris/check_time1.c (100%)
> rename tests/{ => tcg}/cris/check_time2.c (100%)
> rename tests/{ => tcg}/cris/check_xarith.s (100%)
> rename tests/{ => tcg}/cris/crisutils.h (100%)
> rename tests/{ => tcg}/cris/crt.s (100%)
> rename tests/{ => tcg}/cris/sys.c (100%)
> rename tests/{ => tcg}/cris/sys.h (100%)
> rename tests/{ => tcg}/cris/testutils.inc (100%)
> rename tests/{ => tcg}/hello-arm.c (100%)
> rename tests/{ => tcg}/hello-i386.c (100%)
> rename tests/{ => tcg}/hello-mips.c (100%)
> rename tests/{ => tcg}/linux-test.c (100%)
> rename tests/{ => tcg}/lm32/Makefile (100%)
> rename tests/{ => tcg}/lm32/crt.S (100%)
> rename tests/{ => tcg}/lm32/linker.ld (100%)
> rename tests/{ => tcg}/lm32/macros.inc (100%)
> rename tests/{ => tcg}/lm32/test_add.S (100%)
> rename tests/{ => tcg}/lm32/test_addi.S (100%)
> rename tests/{ => tcg}/lm32/test_and.S (100%)
> rename tests/{ => tcg}/lm32/test_andhi.S (100%)
> rename tests/{ => tcg}/lm32/test_andi.S (100%)
> rename tests/{ => tcg}/lm32/test_b.S (100%)
> rename tests/{ => tcg}/lm32/test_be.S (100%)
> rename tests/{ => tcg}/lm32/test_bg.S (100%)
> rename tests/{ => tcg}/lm32/test_bge.S (100%)
> rename tests/{ => tcg}/lm32/test_bgeu.S (100%)
> rename tests/{ => tcg}/lm32/test_bgu.S (100%)
> rename tests/{ => tcg}/lm32/test_bi.S (100%)
> rename tests/{ => tcg}/lm32/test_bne.S (100%)
> rename tests/{ => tcg}/lm32/test_break.S (100%)
> rename tests/{ => tcg}/lm32/test_bret.S (100%)
> rename tests/{ => tcg}/lm32/test_call.S (100%)
> rename tests/{ => tcg}/lm32/test_calli.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpe.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpei.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpg.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpge.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgei.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgeu.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgeui.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgi.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgu.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgui.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpne.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpnei.S (100%)
> rename tests/{ => tcg}/lm32/test_divu.S (100%)
> rename tests/{ => tcg}/lm32/test_eret.S (100%)
> rename tests/{ => tcg}/lm32/test_lb.S (100%)
> rename tests/{ => tcg}/lm32/test_lbu.S (100%)
> rename tests/{ => tcg}/lm32/test_lh.S (100%)
> rename tests/{ => tcg}/lm32/test_lhu.S (100%)
> rename tests/{ => tcg}/lm32/test_lw.S (100%)
> rename tests/{ => tcg}/lm32/test_modu.S (100%)
> rename tests/{ => tcg}/lm32/test_mul.S (100%)
> rename tests/{ => tcg}/lm32/test_muli.S (100%)
> rename tests/{ => tcg}/lm32/test_nor.S (100%)
> rename tests/{ => tcg}/lm32/test_nori.S (100%)
> rename tests/{ => tcg}/lm32/test_or.S (100%)
> rename tests/{ => tcg}/lm32/test_orhi.S (100%)
> rename tests/{ => tcg}/lm32/test_ori.S (100%)
> rename tests/{ => tcg}/lm32/test_ret.S (100%)
> rename tests/{ => tcg}/lm32/test_sb.S (100%)
> rename tests/{ => tcg}/lm32/test_scall.S (100%)
> rename tests/{ => tcg}/lm32/test_sextb.S (100%)
> rename tests/{ => tcg}/lm32/test_sexth.S (100%)
> rename tests/{ => tcg}/lm32/test_sh.S (100%)
> rename tests/{ => tcg}/lm32/test_sl.S (100%)
> rename tests/{ => tcg}/lm32/test_sli.S (100%)
> rename tests/{ => tcg}/lm32/test_sr.S (100%)
> rename tests/{ => tcg}/lm32/test_sri.S (100%)
> rename tests/{ => tcg}/lm32/test_sru.S (100%)
> rename tests/{ => tcg}/lm32/test_srui.S (100%)
> rename tests/{ => tcg}/lm32/test_sub.S (100%)
> rename tests/{ => tcg}/lm32/test_sw.S (100%)
> rename tests/{ => tcg}/lm32/test_xnor.S (100%)
> rename tests/{ => tcg}/lm32/test_xnori.S (100%)
> rename tests/{ => tcg}/lm32/test_xor.S (100%)
> rename tests/{ => tcg}/lm32/test_xori.S (100%)
> rename tests/{ => tcg}/pi_10.com (100%)
> rename tests/{ => tcg}/runcom.c (100%)
> rename tests/{ => tcg}/sha1.c (100%)
> rename tests/{ => tcg}/test-arm-iwmmxt.s (100%)
> rename tests/{ => tcg}/test-i386-code16.S (100%)
> rename tests/{ => tcg}/test-i386-muldiv.h (100%)
> rename tests/{ => tcg}/test-i386-shift.h (100%)
> rename tests/{ => tcg}/test-i386-ssse3.c (100%)
> rename tests/{ => tcg}/test-i386-vm86.S (100%)
> rename tests/{ => tcg}/test-i386.c (100%)
> rename tests/{ => tcg}/test-i386.h (100%)
> rename tests/{ => tcg}/test-mmap.c (100%)
> rename tests/{ => tcg}/test_path.c (100%)
> rename tests/{ => tcg}/testthread.c (100%)
> rename tests/{ => tcg}/xtensa/Makefile (100%)
> rename tests/{ => tcg}/xtensa/crt.S (100%)
> rename tests/{ => tcg}/xtensa/linker.ld (100%)
> rename tests/{ => tcg}/xtensa/macros.inc (100%)
> rename tests/{ => tcg}/xtensa/test_b.S (100%)
> rename tests/{ => tcg}/xtensa/test_bi.S (100%)
> rename tests/{ => tcg}/xtensa/test_boolean.S (100%)
> rename tests/{ => tcg}/xtensa/test_bz.S (100%)
> rename tests/{ => tcg}/xtensa/test_clamps.S (100%)
> rename tests/{ => tcg}/xtensa/test_fail.S (100%)
> rename tests/{ => tcg}/xtensa/test_interrupt.S (100%)
> rename tests/{ => tcg}/xtensa/test_loop.S (100%)
> rename tests/{ => tcg}/xtensa/test_mac16.S (100%)
> rename tests/{ => tcg}/xtensa/test_max.S (100%)
> rename tests/{ => tcg}/xtensa/test_min.S (100%)
> rename tests/{ => tcg}/xtensa/test_mmu.S (100%)
> rename tests/{ => tcg}/xtensa/test_mul16.S (100%)
> rename tests/{ => tcg}/xtensa/test_mul32.S (100%)
> rename tests/{ => tcg}/xtensa/test_nsa.S (100%)
> rename tests/{ => tcg}/xtensa/test_pipeline.S (100%)
> rename tests/{ => tcg}/xtensa/test_quo.S (100%)
> rename tests/{ => tcg}/xtensa/test_rem.S (100%)
> rename tests/{ => tcg}/xtensa/test_rst0.S (100%)
> rename tests/{ => tcg}/xtensa/test_sar.S (100%)
> rename tests/{ => tcg}/xtensa/test_sext.S (100%)
> rename tests/{ => tcg}/xtensa/test_shift.S (100%)
> rename tests/{ => tcg}/xtensa/test_timer.S (100%)
> rename tests/{ => tcg}/xtensa/test_windowed.S (100%)
> rename tests/{ => tcg}/xtensa/vectors.S (100%)
>
> diff --git a/Makefile b/Makefile
> index 9ce8768..0cbe7c2 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -241,7 +241,7 @@ clean:
> rm -f trace-dtrace.h trace-dtrace.h-timestamp
> rm -f $(GENERATED_SOURCES)
> rm -rf $(qapi-dir)
> - $(MAKE) -C tests clean
> + $(MAKE) -C tests/tcg clean
> for d in $(ALL_SUBDIRS) $(QEMULIBS) libcacard; do \
> if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
> rm -f $$d/qemu-options.def; \
> @@ -319,7 +319,7 @@ endif
>
> # various test targets
> test speed: all
> - $(MAKE) -C tests $@
> + $(MAKE) -C tests/tcg $@
>
> .PHONY: check
> check: $(patsubst %,run-check-%,$(CHECKS))
> diff --git a/configure b/configure
> index 0309dad..79790b3 100755
> --- a/configure
> +++ b/configure
> @@ -3809,14 +3809,14 @@ echo "QEMU_INCLUDES+=$includes">> $config_target_mak
> done # for target in $targets
>
> # build tree in object directory in case the source is not in the current directory
> -DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
> +DIRS="tests tests/tcg tests/tcg/cris slirp audio block net pc-bios/optionrom"
> DIRS="$DIRS pc-bios/spapr-rtas"
> DIRS="$DIRS roms/seabios roms/vgabios"
> DIRS="$DIRS fsdev ui"
> DIRS="$DIRS qapi qapi-generated"
> DIRS="$DIRS qga trace"
> -FILES="Makefile tests/Makefile qdict-test-data.txt"
> -FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
> +FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
> +FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
> FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
> FILES="$FILES pc-bios/spapr-rtas/Makefile"
> FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
> diff --git a/tests/Makefile b/tests/tcg/Makefile
> similarity index 100%
> rename from tests/Makefile
> rename to tests/tcg/Makefile
> diff --git a/tests/alpha/Makefile b/tests/tcg/alpha/Makefile
> similarity index 100%
> rename from tests/alpha/Makefile
> rename to tests/tcg/alpha/Makefile
> diff --git a/tests/alpha/crt.s b/tests/tcg/alpha/crt.s
> similarity index 100%
> rename from tests/alpha/crt.s
> rename to tests/tcg/alpha/crt.s
> diff --git a/tests/alpha/hello-alpha.c b/tests/tcg/alpha/hello-alpha.c
> similarity index 100%
> rename from tests/alpha/hello-alpha.c
> rename to tests/tcg/alpha/hello-alpha.c
> diff --git a/tests/alpha/test-cond.c b/tests/tcg/alpha/test-cond.c
> similarity index 100%
> rename from tests/alpha/test-cond.c
> rename to tests/tcg/alpha/test-cond.c
> diff --git a/tests/alpha/test-ovf.c b/tests/tcg/alpha/test-ovf.c
> similarity index 100%
> rename from tests/alpha/test-ovf.c
> rename to tests/tcg/alpha/test-ovf.c
> diff --git a/tests/cris/.gdbinit b/tests/tcg/cris/.gdbinit
> similarity index 100%
> rename from tests/cris/.gdbinit
> rename to tests/tcg/cris/.gdbinit
> diff --git a/tests/cris/Makefile b/tests/tcg/cris/Makefile
> similarity index 100%
> rename from tests/cris/Makefile
> rename to tests/tcg/cris/Makefile
> diff --git a/tests/cris/README b/tests/tcg/cris/README
> similarity index 100%
> rename from tests/cris/README
> rename to tests/tcg/cris/README
> diff --git a/tests/cris/check_abs.c b/tests/tcg/cris/check_abs.c
> similarity index 100%
> rename from tests/cris/check_abs.c
> rename to tests/tcg/cris/check_abs.c
> diff --git a/tests/cris/check_addc.c b/tests/tcg/cris/check_addc.c
> similarity index 100%
> rename from tests/cris/check_addc.c
> rename to tests/tcg/cris/check_addc.c
> diff --git a/tests/cris/check_addcm.c b/tests/tcg/cris/check_addcm.c
> similarity index 100%
> rename from tests/cris/check_addcm.c
> rename to tests/tcg/cris/check_addcm.c
> diff --git a/tests/cris/check_addi.s b/tests/tcg/cris/check_addi.s
> similarity index 100%
> rename from tests/cris/check_addi.s
> rename to tests/tcg/cris/check_addi.s
> diff --git a/tests/cris/check_addiv32.s b/tests/tcg/cris/check_addiv32.s
> similarity index 100%
> rename from tests/cris/check_addiv32.s
> rename to tests/tcg/cris/check_addiv32.s
> diff --git a/tests/cris/check_addm.s b/tests/tcg/cris/check_addm.s
> similarity index 100%
> rename from tests/cris/check_addm.s
> rename to tests/tcg/cris/check_addm.s
> diff --git a/tests/cris/check_addo.c b/tests/tcg/cris/check_addo.c
> similarity index 100%
> rename from tests/cris/check_addo.c
> rename to tests/tcg/cris/check_addo.c
> diff --git a/tests/cris/check_addoq.c b/tests/tcg/cris/check_addoq.c
> similarity index 100%
> rename from tests/cris/check_addoq.c
> rename to tests/tcg/cris/check_addoq.c
> diff --git a/tests/cris/check_addq.s b/tests/tcg/cris/check_addq.s
> similarity index 100%
> rename from tests/cris/check_addq.s
> rename to tests/tcg/cris/check_addq.s
> diff --git a/tests/cris/check_addr.s b/tests/tcg/cris/check_addr.s
> similarity index 100%
> rename from tests/cris/check_addr.s
> rename to tests/tcg/cris/check_addr.s
> diff --git a/tests/cris/check_addxc.s b/tests/tcg/cris/check_addxc.s
> similarity index 100%
> rename from tests/cris/check_addxc.s
> rename to tests/tcg/cris/check_addxc.s
> diff --git a/tests/cris/check_addxm.s b/tests/tcg/cris/check_addxm.s
> similarity index 100%
> rename from tests/cris/check_addxm.s
> rename to tests/tcg/cris/check_addxm.s
> diff --git a/tests/cris/check_addxr.s b/tests/tcg/cris/check_addxr.s
> similarity index 100%
> rename from tests/cris/check_addxr.s
> rename to tests/tcg/cris/check_addxr.s
> diff --git a/tests/cris/check_andc.s b/tests/tcg/cris/check_andc.s
> similarity index 100%
> rename from tests/cris/check_andc.s
> rename to tests/tcg/cris/check_andc.s
> diff --git a/tests/cris/check_andm.s b/tests/tcg/cris/check_andm.s
> similarity index 100%
> rename from tests/cris/check_andm.s
> rename to tests/tcg/cris/check_andm.s
> diff --git a/tests/cris/check_andq.s b/tests/tcg/cris/check_andq.s
> similarity index 100%
> rename from tests/cris/check_andq.s
> rename to tests/tcg/cris/check_andq.s
> diff --git a/tests/cris/check_andr.s b/tests/tcg/cris/check_andr.s
> similarity index 100%
> rename from tests/cris/check_andr.s
> rename to tests/tcg/cris/check_andr.s
> diff --git a/tests/cris/check_asr.s b/tests/tcg/cris/check_asr.s
> similarity index 100%
> rename from tests/cris/check_asr.s
> rename to tests/tcg/cris/check_asr.s
> diff --git a/tests/cris/check_ba.s b/tests/tcg/cris/check_ba.s
> similarity index 100%
> rename from tests/cris/check_ba.s
> rename to tests/tcg/cris/check_ba.s
> diff --git a/tests/cris/check_bas.s b/tests/tcg/cris/check_bas.s
> similarity index 100%
> rename from tests/cris/check_bas.s
> rename to tests/tcg/cris/check_bas.s
> diff --git a/tests/cris/check_bcc.s b/tests/tcg/cris/check_bcc.s
> similarity index 100%
> rename from tests/cris/check_bcc.s
> rename to tests/tcg/cris/check_bcc.s
> diff --git a/tests/cris/check_bound.c b/tests/tcg/cris/check_bound.c
> similarity index 100%
> rename from tests/cris/check_bound.c
> rename to tests/tcg/cris/check_bound.c
> diff --git a/tests/cris/check_boundc.s b/tests/tcg/cris/check_boundc.s
> similarity index 100%
> rename from tests/cris/check_boundc.s
> rename to tests/tcg/cris/check_boundc.s
> diff --git a/tests/cris/check_boundr.s b/tests/tcg/cris/check_boundr.s
> similarity index 100%
> rename from tests/cris/check_boundr.s
> rename to tests/tcg/cris/check_boundr.s
> diff --git a/tests/cris/check_btst.s b/tests/tcg/cris/check_btst.s
> similarity index 100%
> rename from tests/cris/check_btst.s
> rename to tests/tcg/cris/check_btst.s
> diff --git a/tests/cris/check_clearfv32.s b/tests/tcg/cris/check_clearfv32.s
> similarity index 100%
> rename from tests/cris/check_clearfv32.s
> rename to tests/tcg/cris/check_clearfv32.s
> diff --git a/tests/cris/check_clrjmp1.s b/tests/tcg/cris/check_clrjmp1.s
> similarity index 100%
> rename from tests/cris/check_clrjmp1.s
> rename to tests/tcg/cris/check_clrjmp1.s
> diff --git a/tests/cris/check_cmp-2.s b/tests/tcg/cris/check_cmp-2.s
> similarity index 100%
> rename from tests/cris/check_cmp-2.s
> rename to tests/tcg/cris/check_cmp-2.s
> diff --git a/tests/cris/check_cmpc.s b/tests/tcg/cris/check_cmpc.s
> similarity index 100%
> rename from tests/cris/check_cmpc.s
> rename to tests/tcg/cris/check_cmpc.s
> diff --git a/tests/cris/check_cmpm.s b/tests/tcg/cris/check_cmpm.s
> similarity index 100%
> rename from tests/cris/check_cmpm.s
> rename to tests/tcg/cris/check_cmpm.s
> diff --git a/tests/cris/check_cmpq.s b/tests/tcg/cris/check_cmpq.s
> similarity index 100%
> rename from tests/cris/check_cmpq.s
> rename to tests/tcg/cris/check_cmpq.s
> diff --git a/tests/cris/check_cmpr.s b/tests/tcg/cris/check_cmpr.s
> similarity index 100%
> rename from tests/cris/check_cmpr.s
> rename to tests/tcg/cris/check_cmpr.s
> diff --git a/tests/cris/check_cmpxc.s b/tests/tcg/cris/check_cmpxc.s
> similarity index 100%
> rename from tests/cris/check_cmpxc.s
> rename to tests/tcg/cris/check_cmpxc.s
> diff --git a/tests/cris/check_cmpxm.s b/tests/tcg/cris/check_cmpxm.s
> similarity index 100%
> rename from tests/cris/check_cmpxm.s
> rename to tests/tcg/cris/check_cmpxm.s
> diff --git a/tests/cris/check_dstep.s b/tests/tcg/cris/check_dstep.s
> similarity index 100%
> rename from tests/cris/check_dstep.s
> rename to tests/tcg/cris/check_dstep.s
> diff --git a/tests/cris/check_ftag.c b/tests/tcg/cris/check_ftag.c
> similarity index 100%
> rename from tests/cris/check_ftag.c
> rename to tests/tcg/cris/check_ftag.c
> diff --git a/tests/cris/check_gcctorture_pr28634-1.c b/tests/tcg/cris/check_gcctorture_pr28634-1.c
> similarity index 100%
> rename from tests/cris/check_gcctorture_pr28634-1.c
> rename to tests/tcg/cris/check_gcctorture_pr28634-1.c
> diff --git a/tests/cris/check_gcctorture_pr28634.c b/tests/tcg/cris/check_gcctorture_pr28634.c
> similarity index 100%
> rename from tests/cris/check_gcctorture_pr28634.c
> rename to tests/tcg/cris/check_gcctorture_pr28634.c
> diff --git a/tests/cris/check_glibc_kernelversion.c b/tests/tcg/cris/check_glibc_kernelversion.c
> similarity index 100%
> rename from tests/cris/check_glibc_kernelversion.c
> rename to tests/tcg/cris/check_glibc_kernelversion.c
> diff --git a/tests/cris/check_hello.c b/tests/tcg/cris/check_hello.c
> similarity index 100%
> rename from tests/cris/check_hello.c
> rename to tests/tcg/cris/check_hello.c
> diff --git a/tests/cris/check_int64.c b/tests/tcg/cris/check_int64.c
> similarity index 100%
> rename from tests/cris/check_int64.c
> rename to tests/tcg/cris/check_int64.c
> diff --git a/tests/cris/check_jsr.s b/tests/tcg/cris/check_jsr.s
> similarity index 100%
> rename from tests/cris/check_jsr.s
> rename to tests/tcg/cris/check_jsr.s
> diff --git a/tests/cris/check_lapc.s b/tests/tcg/cris/check_lapc.s
> similarity index 100%
> rename from tests/cris/check_lapc.s
> rename to tests/tcg/cris/check_lapc.s
> diff --git a/tests/cris/check_lsl.s b/tests/tcg/cris/check_lsl.s
> similarity index 100%
> rename from tests/cris/check_lsl.s
> rename to tests/tcg/cris/check_lsl.s
> diff --git a/tests/cris/check_lsr.s b/tests/tcg/cris/check_lsr.s
> similarity index 100%
> rename from tests/cris/check_lsr.s
> rename to tests/tcg/cris/check_lsr.s
> diff --git a/tests/cris/check_lz.c b/tests/tcg/cris/check_lz.c
> similarity index 100%
> rename from tests/cris/check_lz.c
> rename to tests/tcg/cris/check_lz.c
> diff --git a/tests/cris/check_mapbrk.c b/tests/tcg/cris/check_mapbrk.c
> similarity index 100%
> rename from tests/cris/check_mapbrk.c
> rename to tests/tcg/cris/check_mapbrk.c
> diff --git a/tests/cris/check_mcp.s b/tests/tcg/cris/check_mcp.s
> similarity index 100%
> rename from tests/cris/check_mcp.s
> rename to tests/tcg/cris/check_mcp.s
> diff --git a/tests/cris/check_mmap1.c b/tests/tcg/cris/check_mmap1.c
> similarity index 100%
> rename from tests/cris/check_mmap1.c
> rename to tests/tcg/cris/check_mmap1.c
> diff --git a/tests/cris/check_mmap2.c b/tests/tcg/cris/check_mmap2.c
> similarity index 100%
> rename from tests/cris/check_mmap2.c
> rename to tests/tcg/cris/check_mmap2.c
> diff --git a/tests/cris/check_mmap3.c b/tests/tcg/cris/check_mmap3.c
> similarity index 100%
> rename from tests/cris/check_mmap3.c
> rename to tests/tcg/cris/check_mmap3.c
> diff --git a/tests/cris/check_movdelsr1.s b/tests/tcg/cris/check_movdelsr1.s
> similarity index 100%
> rename from tests/cris/check_movdelsr1.s
> rename to tests/tcg/cris/check_movdelsr1.s
> diff --git a/tests/cris/check_movecr.s b/tests/tcg/cris/check_movecr.s
> similarity index 100%
> rename from tests/cris/check_movecr.s
> rename to tests/tcg/cris/check_movecr.s
> diff --git a/tests/cris/check_movei.s b/tests/tcg/cris/check_movei.s
> similarity index 100%
> rename from tests/cris/check_movei.s
> rename to tests/tcg/cris/check_movei.s
> diff --git a/tests/cris/check_movemr.s b/tests/tcg/cris/check_movemr.s
> similarity index 100%
> rename from tests/cris/check_movemr.s
> rename to tests/tcg/cris/check_movemr.s
> diff --git a/tests/cris/check_movemrv32.s b/tests/tcg/cris/check_movemrv32.s
> similarity index 100%
> rename from tests/cris/check_movemrv32.s
> rename to tests/tcg/cris/check_movemrv32.s
> diff --git a/tests/cris/check_moveq.c b/tests/tcg/cris/check_moveq.c
> similarity index 100%
> rename from tests/cris/check_moveq.c
> rename to tests/tcg/cris/check_moveq.c
> diff --git a/tests/cris/check_mover.s b/tests/tcg/cris/check_mover.s
> similarity index 100%
> rename from tests/cris/check_mover.s
> rename to tests/tcg/cris/check_mover.s
> diff --git a/tests/cris/check_moverm.s b/tests/tcg/cris/check_moverm.s
> similarity index 100%
> rename from tests/cris/check_moverm.s
> rename to tests/tcg/cris/check_moverm.s
> diff --git a/tests/cris/check_movmp.s b/tests/tcg/cris/check_movmp.s
> similarity index 100%
> rename from tests/cris/check_movmp.s
> rename to tests/tcg/cris/check_movmp.s
> diff --git a/tests/cris/check_movpmv32.s b/tests/tcg/cris/check_movpmv32.s
> similarity index 100%
> rename from tests/cris/check_movpmv32.s
> rename to tests/tcg/cris/check_movpmv32.s
> diff --git a/tests/cris/check_movpr.s b/tests/tcg/cris/check_movpr.s
> similarity index 100%
> rename from tests/cris/check_movpr.s
> rename to tests/tcg/cris/check_movpr.s
> diff --git a/tests/cris/check_movprv32.s b/tests/tcg/cris/check_movprv32.s
> similarity index 100%
> rename from tests/cris/check_movprv32.s
> rename to tests/tcg/cris/check_movprv32.s
> diff --git a/tests/cris/check_movscr.s b/tests/tcg/cris/check_movscr.s
> similarity index 100%
> rename from tests/cris/check_movscr.s
> rename to tests/tcg/cris/check_movscr.s
> diff --git a/tests/cris/check_movsm.s b/tests/tcg/cris/check_movsm.s
> similarity index 100%
> rename from tests/cris/check_movsm.s
> rename to tests/tcg/cris/check_movsm.s
> diff --git a/tests/cris/check_movsr.s b/tests/tcg/cris/check_movsr.s
> similarity index 100%
> rename from tests/cris/check_movsr.s
> rename to tests/tcg/cris/check_movsr.s
> diff --git a/tests/cris/check_movucr.s b/tests/tcg/cris/check_movucr.s
> similarity index 100%
> rename from tests/cris/check_movucr.s
> rename to tests/tcg/cris/check_movucr.s
> diff --git a/tests/cris/check_movum.s b/tests/tcg/cris/check_movum.s
> similarity index 100%
> rename from tests/cris/check_movum.s
> rename to tests/tcg/cris/check_movum.s
> diff --git a/tests/cris/check_movur.s b/tests/tcg/cris/check_movur.s
> similarity index 100%
> rename from tests/cris/check_movur.s
> rename to tests/tcg/cris/check_movur.s
> diff --git a/tests/cris/check_mulv32.s b/tests/tcg/cris/check_mulv32.s
> similarity index 100%
> rename from tests/cris/check_mulv32.s
> rename to tests/tcg/cris/check_mulv32.s
> diff --git a/tests/cris/check_mulx.s b/tests/tcg/cris/check_mulx.s
> similarity index 100%
> rename from tests/cris/check_mulx.s
> rename to tests/tcg/cris/check_mulx.s
> diff --git a/tests/cris/check_neg.s b/tests/tcg/cris/check_neg.s
> similarity index 100%
> rename from tests/cris/check_neg.s
> rename to tests/tcg/cris/check_neg.s
> diff --git a/tests/cris/check_not.s b/tests/tcg/cris/check_not.s
> similarity index 100%
> rename from tests/cris/check_not.s
> rename to tests/tcg/cris/check_not.s
> diff --git a/tests/cris/check_openpf1.c b/tests/tcg/cris/check_openpf1.c
> similarity index 100%
> rename from tests/cris/check_openpf1.c
> rename to tests/tcg/cris/check_openpf1.c
> diff --git a/tests/cris/check_openpf2.c b/tests/tcg/cris/check_openpf2.c
> similarity index 100%
> rename from tests/cris/check_openpf2.c
> rename to tests/tcg/cris/check_openpf2.c
> diff --git a/tests/cris/check_openpf3.c b/tests/tcg/cris/check_openpf3.c
> similarity index 100%
> rename from tests/cris/check_openpf3.c
> rename to tests/tcg/cris/check_openpf3.c
> diff --git a/tests/cris/check_openpf4.c b/tests/tcg/cris/check_openpf4.c
> similarity index 100%
> rename from tests/cris/check_openpf4.c
> rename to tests/tcg/cris/check_openpf4.c
> diff --git a/tests/cris/check_openpf5.c b/tests/tcg/cris/check_openpf5.c
> similarity index 100%
> rename from tests/cris/check_openpf5.c
> rename to tests/tcg/cris/check_openpf5.c
> diff --git a/tests/cris/check_orc.s b/tests/tcg/cris/check_orc.s
> similarity index 100%
> rename from tests/cris/check_orc.s
> rename to tests/tcg/cris/check_orc.s
> diff --git a/tests/cris/check_orm.s b/tests/tcg/cris/check_orm.s
> similarity index 100%
> rename from tests/cris/check_orm.s
> rename to tests/tcg/cris/check_orm.s
> diff --git a/tests/cris/check_orq.s b/tests/tcg/cris/check_orq.s
> similarity index 100%
> rename from tests/cris/check_orq.s
> rename to tests/tcg/cris/check_orq.s
> diff --git a/tests/cris/check_orr.s b/tests/tcg/cris/check_orr.s
> similarity index 100%
> rename from tests/cris/check_orr.s
> rename to tests/tcg/cris/check_orr.s
> diff --git a/tests/cris/check_ret.s b/tests/tcg/cris/check_ret.s
> similarity index 100%
> rename from tests/cris/check_ret.s
> rename to tests/tcg/cris/check_ret.s
> diff --git a/tests/cris/check_scc.s b/tests/tcg/cris/check_scc.s
> similarity index 100%
> rename from tests/cris/check_scc.s
> rename to tests/tcg/cris/check_scc.s
> diff --git a/tests/cris/check_settls1.c b/tests/tcg/cris/check_settls1.c
> similarity index 100%
> rename from tests/cris/check_settls1.c
> rename to tests/tcg/cris/check_settls1.c
> diff --git a/tests/cris/check_sigalrm.c b/tests/tcg/cris/check_sigalrm.c
> similarity index 100%
> rename from tests/cris/check_sigalrm.c
> rename to tests/tcg/cris/check_sigalrm.c
> diff --git a/tests/cris/check_stat1.c b/tests/tcg/cris/check_stat1.c
> similarity index 100%
> rename from tests/cris/check_stat1.c
> rename to tests/tcg/cris/check_stat1.c
> diff --git a/tests/cris/check_stat2.c b/tests/tcg/cris/check_stat2.c
> similarity index 100%
> rename from tests/cris/check_stat2.c
> rename to tests/tcg/cris/check_stat2.c
> diff --git a/tests/cris/check_stat3.c b/tests/tcg/cris/check_stat3.c
> similarity index 100%
> rename from tests/cris/check_stat3.c
> rename to tests/tcg/cris/check_stat3.c
> diff --git a/tests/cris/check_stat4.c b/tests/tcg/cris/check_stat4.c
> similarity index 100%
> rename from tests/cris/check_stat4.c
> rename to tests/tcg/cris/check_stat4.c
> diff --git a/tests/cris/check_subc.s b/tests/tcg/cris/check_subc.s
> similarity index 100%
> rename from tests/cris/check_subc.s
> rename to tests/tcg/cris/check_subc.s
> diff --git a/tests/cris/check_subm.s b/tests/tcg/cris/check_subm.s
> similarity index 100%
> rename from tests/cris/check_subm.s
> rename to tests/tcg/cris/check_subm.s
> diff --git a/tests/cris/check_subq.s b/tests/tcg/cris/check_subq.s
> similarity index 100%
> rename from tests/cris/check_subq.s
> rename to tests/tcg/cris/check_subq.s
> diff --git a/tests/cris/check_subr.s b/tests/tcg/cris/check_subr.s
> similarity index 100%
> rename from tests/cris/check_subr.s
> rename to tests/tcg/cris/check_subr.s
> diff --git a/tests/cris/check_swap.c b/tests/tcg/cris/check_swap.c
> similarity index 100%
> rename from tests/cris/check_swap.c
> rename to tests/tcg/cris/check_swap.c
> diff --git a/tests/cris/check_time1.c b/tests/tcg/cris/check_time1.c
> similarity index 100%
> rename from tests/cris/check_time1.c
> rename to tests/tcg/cris/check_time1.c
> diff --git a/tests/cris/check_time2.c b/tests/tcg/cris/check_time2.c
> similarity index 100%
> rename from tests/cris/check_time2.c
> rename to tests/tcg/cris/check_time2.c
> diff --git a/tests/cris/check_xarith.s b/tests/tcg/cris/check_xarith.s
> similarity index 100%
> rename from tests/cris/check_xarith.s
> rename to tests/tcg/cris/check_xarith.s
> diff --git a/tests/cris/crisutils.h b/tests/tcg/cris/crisutils.h
> similarity index 100%
> rename from tests/cris/crisutils.h
> rename to tests/tcg/cris/crisutils.h
> diff --git a/tests/cris/crt.s b/tests/tcg/cris/crt.s
> similarity index 100%
> rename from tests/cris/crt.s
> rename to tests/tcg/cris/crt.s
> diff --git a/tests/cris/sys.c b/tests/tcg/cris/sys.c
> similarity index 100%
> rename from tests/cris/sys.c
> rename to tests/tcg/cris/sys.c
> diff --git a/tests/cris/sys.h b/tests/tcg/cris/sys.h
> similarity index 100%
> rename from tests/cris/sys.h
> rename to tests/tcg/cris/sys.h
> diff --git a/tests/cris/testutils.inc b/tests/tcg/cris/testutils.inc
> similarity index 100%
> rename from tests/cris/testutils.inc
> rename to tests/tcg/cris/testutils.inc
> diff --git a/tests/hello-arm.c b/tests/tcg/hello-arm.c
> similarity index 100%
> rename from tests/hello-arm.c
> rename to tests/tcg/hello-arm.c
> diff --git a/tests/hello-i386.c b/tests/tcg/hello-i386.c
> similarity index 100%
> rename from tests/hello-i386.c
> rename to tests/tcg/hello-i386.c
> diff --git a/tests/hello-mips.c b/tests/tcg/hello-mips.c
> similarity index 100%
> rename from tests/hello-mips.c
> rename to tests/tcg/hello-mips.c
> diff --git a/tests/linux-test.c b/tests/tcg/linux-test.c
> similarity index 100%
> rename from tests/linux-test.c
> rename to tests/tcg/linux-test.c
> diff --git a/tests/lm32/Makefile b/tests/tcg/lm32/Makefile
> similarity index 100%
> rename from tests/lm32/Makefile
> rename to tests/tcg/lm32/Makefile
> diff --git a/tests/lm32/crt.S b/tests/tcg/lm32/crt.S
> similarity index 100%
> rename from tests/lm32/crt.S
> rename to tests/tcg/lm32/crt.S
> diff --git a/tests/lm32/linker.ld b/tests/tcg/lm32/linker.ld
> similarity index 100%
> rename from tests/lm32/linker.ld
> rename to tests/tcg/lm32/linker.ld
> diff --git a/tests/lm32/macros.inc b/tests/tcg/lm32/macros.inc
> similarity index 100%
> rename from tests/lm32/macros.inc
> rename to tests/tcg/lm32/macros.inc
> diff --git a/tests/lm32/test_add.S b/tests/tcg/lm32/test_add.S
> similarity index 100%
> rename from tests/lm32/test_add.S
> rename to tests/tcg/lm32/test_add.S
> diff --git a/tests/lm32/test_addi.S b/tests/tcg/lm32/test_addi.S
> similarity index 100%
> rename from tests/lm32/test_addi.S
> rename to tests/tcg/lm32/test_addi.S
> diff --git a/tests/lm32/test_and.S b/tests/tcg/lm32/test_and.S
> similarity index 100%
> rename from tests/lm32/test_and.S
> rename to tests/tcg/lm32/test_and.S
> diff --git a/tests/lm32/test_andhi.S b/tests/tcg/lm32/test_andhi.S
> similarity index 100%
> rename from tests/lm32/test_andhi.S
> rename to tests/tcg/lm32/test_andhi.S
> diff --git a/tests/lm32/test_andi.S b/tests/tcg/lm32/test_andi.S
> similarity index 100%
> rename from tests/lm32/test_andi.S
> rename to tests/tcg/lm32/test_andi.S
> diff --git a/tests/lm32/test_b.S b/tests/tcg/lm32/test_b.S
> similarity index 100%
> rename from tests/lm32/test_b.S
> rename to tests/tcg/lm32/test_b.S
> diff --git a/tests/lm32/test_be.S b/tests/tcg/lm32/test_be.S
> similarity index 100%
> rename from tests/lm32/test_be.S
> rename to tests/tcg/lm32/test_be.S
> diff --git a/tests/lm32/test_bg.S b/tests/tcg/lm32/test_bg.S
> similarity index 100%
> rename from tests/lm32/test_bg.S
> rename to tests/tcg/lm32/test_bg.S
> diff --git a/tests/lm32/test_bge.S b/tests/tcg/lm32/test_bge.S
> similarity index 100%
> rename from tests/lm32/test_bge.S
> rename to tests/tcg/lm32/test_bge.S
> diff --git a/tests/lm32/test_bgeu.S b/tests/tcg/lm32/test_bgeu.S
> similarity index 100%
> rename from tests/lm32/test_bgeu.S
> rename to tests/tcg/lm32/test_bgeu.S
> diff --git a/tests/lm32/test_bgu.S b/tests/tcg/lm32/test_bgu.S
> similarity index 100%
> rename from tests/lm32/test_bgu.S
> rename to tests/tcg/lm32/test_bgu.S
> diff --git a/tests/lm32/test_bi.S b/tests/tcg/lm32/test_bi.S
> similarity index 100%
> rename from tests/lm32/test_bi.S
> rename to tests/tcg/lm32/test_bi.S
> diff --git a/tests/lm32/test_bne.S b/tests/tcg/lm32/test_bne.S
> similarity index 100%
> rename from tests/lm32/test_bne.S
> rename to tests/tcg/lm32/test_bne.S
> diff --git a/tests/lm32/test_break.S b/tests/tcg/lm32/test_break.S
> similarity index 100%
> rename from tests/lm32/test_break.S
> rename to tests/tcg/lm32/test_break.S
> diff --git a/tests/lm32/test_bret.S b/tests/tcg/lm32/test_bret.S
> similarity index 100%
> rename from tests/lm32/test_bret.S
> rename to tests/tcg/lm32/test_bret.S
> diff --git a/tests/lm32/test_call.S b/tests/tcg/lm32/test_call.S
> similarity index 100%
> rename from tests/lm32/test_call.S
> rename to tests/tcg/lm32/test_call.S
> diff --git a/tests/lm32/test_calli.S b/tests/tcg/lm32/test_calli.S
> similarity index 100%
> rename from tests/lm32/test_calli.S
> rename to tests/tcg/lm32/test_calli.S
> diff --git a/tests/lm32/test_cmpe.S b/tests/tcg/lm32/test_cmpe.S
> similarity index 100%
> rename from tests/lm32/test_cmpe.S
> rename to tests/tcg/lm32/test_cmpe.S
> diff --git a/tests/lm32/test_cmpei.S b/tests/tcg/lm32/test_cmpei.S
> similarity index 100%
> rename from tests/lm32/test_cmpei.S
> rename to tests/tcg/lm32/test_cmpei.S
> diff --git a/tests/lm32/test_cmpg.S b/tests/tcg/lm32/test_cmpg.S
> similarity index 100%
> rename from tests/lm32/test_cmpg.S
> rename to tests/tcg/lm32/test_cmpg.S
> diff --git a/tests/lm32/test_cmpge.S b/tests/tcg/lm32/test_cmpge.S
> similarity index 100%
> rename from tests/lm32/test_cmpge.S
> rename to tests/tcg/lm32/test_cmpge.S
> diff --git a/tests/lm32/test_cmpgei.S b/tests/tcg/lm32/test_cmpgei.S
> similarity index 100%
> rename from tests/lm32/test_cmpgei.S
> rename to tests/tcg/lm32/test_cmpgei.S
> diff --git a/tests/lm32/test_cmpgeu.S b/tests/tcg/lm32/test_cmpgeu.S
> similarity index 100%
> rename from tests/lm32/test_cmpgeu.S
> rename to tests/tcg/lm32/test_cmpgeu.S
> diff --git a/tests/lm32/test_cmpgeui.S b/tests/tcg/lm32/test_cmpgeui.S
> similarity index 100%
> rename from tests/lm32/test_cmpgeui.S
> rename to tests/tcg/lm32/test_cmpgeui.S
> diff --git a/tests/lm32/test_cmpgi.S b/tests/tcg/lm32/test_cmpgi.S
> similarity index 100%
> rename from tests/lm32/test_cmpgi.S
> rename to tests/tcg/lm32/test_cmpgi.S
> diff --git a/tests/lm32/test_cmpgu.S b/tests/tcg/lm32/test_cmpgu.S
> similarity index 100%
> rename from tests/lm32/test_cmpgu.S
> rename to tests/tcg/lm32/test_cmpgu.S
> diff --git a/tests/lm32/test_cmpgui.S b/tests/tcg/lm32/test_cmpgui.S
> similarity index 100%
> rename from tests/lm32/test_cmpgui.S
> rename to tests/tcg/lm32/test_cmpgui.S
> diff --git a/tests/lm32/test_cmpne.S b/tests/tcg/lm32/test_cmpne.S
> similarity index 100%
> rename from tests/lm32/test_cmpne.S
> rename to tests/tcg/lm32/test_cmpne.S
> diff --git a/tests/lm32/test_cmpnei.S b/tests/tcg/lm32/test_cmpnei.S
> similarity index 100%
> rename from tests/lm32/test_cmpnei.S
> rename to tests/tcg/lm32/test_cmpnei.S
> diff --git a/tests/lm32/test_divu.S b/tests/tcg/lm32/test_divu.S
> similarity index 100%
> rename from tests/lm32/test_divu.S
> rename to tests/tcg/lm32/test_divu.S
> diff --git a/tests/lm32/test_eret.S b/tests/tcg/lm32/test_eret.S
> similarity index 100%
> rename from tests/lm32/test_eret.S
> rename to tests/tcg/lm32/test_eret.S
> diff --git a/tests/lm32/test_lb.S b/tests/tcg/lm32/test_lb.S
> similarity index 100%
> rename from tests/lm32/test_lb.S
> rename to tests/tcg/lm32/test_lb.S
> diff --git a/tests/lm32/test_lbu.S b/tests/tcg/lm32/test_lbu.S
> similarity index 100%
> rename from tests/lm32/test_lbu.S
> rename to tests/tcg/lm32/test_lbu.S
> diff --git a/tests/lm32/test_lh.S b/tests/tcg/lm32/test_lh.S
> similarity index 100%
> rename from tests/lm32/test_lh.S
> rename to tests/tcg/lm32/test_lh.S
> diff --git a/tests/lm32/test_lhu.S b/tests/tcg/lm32/test_lhu.S
> similarity index 100%
> rename from tests/lm32/test_lhu.S
> rename to tests/tcg/lm32/test_lhu.S
> diff --git a/tests/lm32/test_lw.S b/tests/tcg/lm32/test_lw.S
> similarity index 100%
> rename from tests/lm32/test_lw.S
> rename to tests/tcg/lm32/test_lw.S
> diff --git a/tests/lm32/test_modu.S b/tests/tcg/lm32/test_modu.S
> similarity index 100%
> rename from tests/lm32/test_modu.S
> rename to tests/tcg/lm32/test_modu.S
> diff --git a/tests/lm32/test_mul.S b/tests/tcg/lm32/test_mul.S
> similarity index 100%
> rename from tests/lm32/test_mul.S
> rename to tests/tcg/lm32/test_mul.S
> diff --git a/tests/lm32/test_muli.S b/tests/tcg/lm32/test_muli.S
> similarity index 100%
> rename from tests/lm32/test_muli.S
> rename to tests/tcg/lm32/test_muli.S
> diff --git a/tests/lm32/test_nor.S b/tests/tcg/lm32/test_nor.S
> similarity index 100%
> rename from tests/lm32/test_nor.S
> rename to tests/tcg/lm32/test_nor.S
> diff --git a/tests/lm32/test_nori.S b/tests/tcg/lm32/test_nori.S
> similarity index 100%
> rename from tests/lm32/test_nori.S
> rename to tests/tcg/lm32/test_nori.S
> diff --git a/tests/lm32/test_or.S b/tests/tcg/lm32/test_or.S
> similarity index 100%
> rename from tests/lm32/test_or.S
> rename to tests/tcg/lm32/test_or.S
> diff --git a/tests/lm32/test_orhi.S b/tests/tcg/lm32/test_orhi.S
> similarity index 100%
> rename from tests/lm32/test_orhi.S
> rename to tests/tcg/lm32/test_orhi.S
> diff --git a/tests/lm32/test_ori.S b/tests/tcg/lm32/test_ori.S
> similarity index 100%
> rename from tests/lm32/test_ori.S
> rename to tests/tcg/lm32/test_ori.S
> diff --git a/tests/lm32/test_ret.S b/tests/tcg/lm32/test_ret.S
> similarity index 100%
> rename from tests/lm32/test_ret.S
> rename to tests/tcg/lm32/test_ret.S
> diff --git a/tests/lm32/test_sb.S b/tests/tcg/lm32/test_sb.S
> similarity index 100%
> rename from tests/lm32/test_sb.S
> rename to tests/tcg/lm32/test_sb.S
> diff --git a/tests/lm32/test_scall.S b/tests/tcg/lm32/test_scall.S
> similarity index 100%
> rename from tests/lm32/test_scall.S
> rename to tests/tcg/lm32/test_scall.S
> diff --git a/tests/lm32/test_sextb.S b/tests/tcg/lm32/test_sextb.S
> similarity index 100%
> rename from tests/lm32/test_sextb.S
> rename to tests/tcg/lm32/test_sextb.S
> diff --git a/tests/lm32/test_sexth.S b/tests/tcg/lm32/test_sexth.S
> similarity index 100%
> rename from tests/lm32/test_sexth.S
> rename to tests/tcg/lm32/test_sexth.S
> diff --git a/tests/lm32/test_sh.S b/tests/tcg/lm32/test_sh.S
> similarity index 100%
> rename from tests/lm32/test_sh.S
> rename to tests/tcg/lm32/test_sh.S
> diff --git a/tests/lm32/test_sl.S b/tests/tcg/lm32/test_sl.S
> similarity index 100%
> rename from tests/lm32/test_sl.S
> rename to tests/tcg/lm32/test_sl.S
> diff --git a/tests/lm32/test_sli.S b/tests/tcg/lm32/test_sli.S
> similarity index 100%
> rename from tests/lm32/test_sli.S
> rename to tests/tcg/lm32/test_sli.S
> diff --git a/tests/lm32/test_sr.S b/tests/tcg/lm32/test_sr.S
> similarity index 100%
> rename from tests/lm32/test_sr.S
> rename to tests/tcg/lm32/test_sr.S
> diff --git a/tests/lm32/test_sri.S b/tests/tcg/lm32/test_sri.S
> similarity index 100%
> rename from tests/lm32/test_sri.S
> rename to tests/tcg/lm32/test_sri.S
> diff --git a/tests/lm32/test_sru.S b/tests/tcg/lm32/test_sru.S
> similarity index 100%
> rename from tests/lm32/test_sru.S
> rename to tests/tcg/lm32/test_sru.S
> diff --git a/tests/lm32/test_srui.S b/tests/tcg/lm32/test_srui.S
> similarity index 100%
> rename from tests/lm32/test_srui.S
> rename to tests/tcg/lm32/test_srui.S
> diff --git a/tests/lm32/test_sub.S b/tests/tcg/lm32/test_sub.S
> similarity index 100%
> rename from tests/lm32/test_sub.S
> rename to tests/tcg/lm32/test_sub.S
> diff --git a/tests/lm32/test_sw.S b/tests/tcg/lm32/test_sw.S
> similarity index 100%
> rename from tests/lm32/test_sw.S
> rename to tests/tcg/lm32/test_sw.S
> diff --git a/tests/lm32/test_xnor.S b/tests/tcg/lm32/test_xnor.S
> similarity index 100%
> rename from tests/lm32/test_xnor.S
> rename to tests/tcg/lm32/test_xnor.S
> diff --git a/tests/lm32/test_xnori.S b/tests/tcg/lm32/test_xnori.S
> similarity index 100%
> rename from tests/lm32/test_xnori.S
> rename to tests/tcg/lm32/test_xnori.S
> diff --git a/tests/lm32/test_xor.S b/tests/tcg/lm32/test_xor.S
> similarity index 100%
> rename from tests/lm32/test_xor.S
> rename to tests/tcg/lm32/test_xor.S
> diff --git a/tests/lm32/test_xori.S b/tests/tcg/lm32/test_xori.S
> similarity index 100%
> rename from tests/lm32/test_xori.S
> rename to tests/tcg/lm32/test_xori.S
> diff --git a/tests/pi_10.com b/tests/tcg/pi_10.com
> similarity index 100%
> rename from tests/pi_10.com
> rename to tests/tcg/pi_10.com
> diff --git a/tests/runcom.c b/tests/tcg/runcom.c
> similarity index 100%
> rename from tests/runcom.c
> rename to tests/tcg/runcom.c
> diff --git a/tests/sha1.c b/tests/tcg/sha1.c
> similarity index 100%
> rename from tests/sha1.c
> rename to tests/tcg/sha1.c
> diff --git a/tests/test-arm-iwmmxt.s b/tests/tcg/test-arm-iwmmxt.s
> similarity index 100%
> rename from tests/test-arm-iwmmxt.s
> rename to tests/tcg/test-arm-iwmmxt.s
> diff --git a/tests/test-i386-code16.S b/tests/tcg/test-i386-code16.S
> similarity index 100%
> rename from tests/test-i386-code16.S
> rename to tests/tcg/test-i386-code16.S
> diff --git a/tests/test-i386-muldiv.h b/tests/tcg/test-i386-muldiv.h
> similarity index 100%
> rename from tests/test-i386-muldiv.h
> rename to tests/tcg/test-i386-muldiv.h
> diff --git a/tests/test-i386-shift.h b/tests/tcg/test-i386-shift.h
> similarity index 100%
> rename from tests/test-i386-shift.h
> rename to tests/tcg/test-i386-shift.h
> diff --git a/tests/test-i386-ssse3.c b/tests/tcg/test-i386-ssse3.c
> similarity index 100%
> rename from tests/test-i386-ssse3.c
> rename to tests/tcg/test-i386-ssse3.c
> diff --git a/tests/test-i386-vm86.S b/tests/tcg/test-i386-vm86.S
> similarity index 100%
> rename from tests/test-i386-vm86.S
> rename to tests/tcg/test-i386-vm86.S
> diff --git a/tests/test-i386.c b/tests/tcg/test-i386.c
> similarity index 100%
> rename from tests/test-i386.c
> rename to tests/tcg/test-i386.c
> diff --git a/tests/test-i386.h b/tests/tcg/test-i386.h
> similarity index 100%
> rename from tests/test-i386.h
> rename to tests/tcg/test-i386.h
> diff --git a/tests/test-mmap.c b/tests/tcg/test-mmap.c
> similarity index 100%
> rename from tests/test-mmap.c
> rename to tests/tcg/test-mmap.c
> diff --git a/tests/test_path.c b/tests/tcg/test_path.c
> similarity index 100%
> rename from tests/test_path.c
> rename to tests/tcg/test_path.c
> diff --git a/tests/testthread.c b/tests/tcg/testthread.c
> similarity index 100%
> rename from tests/testthread.c
> rename to tests/tcg/testthread.c
> diff --git a/tests/xtensa/Makefile b/tests/tcg/xtensa/Makefile
> similarity index 100%
> rename from tests/xtensa/Makefile
> rename to tests/tcg/xtensa/Makefile
> diff --git a/tests/xtensa/crt.S b/tests/tcg/xtensa/crt.S
> similarity index 100%
> rename from tests/xtensa/crt.S
> rename to tests/tcg/xtensa/crt.S
> diff --git a/tests/xtensa/linker.ld b/tests/tcg/xtensa/linker.ld
> similarity index 100%
> rename from tests/xtensa/linker.ld
> rename to tests/tcg/xtensa/linker.ld
> diff --git a/tests/xtensa/macros.inc b/tests/tcg/xtensa/macros.inc
> similarity index 100%
> rename from tests/xtensa/macros.inc
> rename to tests/tcg/xtensa/macros.inc
> diff --git a/tests/xtensa/test_b.S b/tests/tcg/xtensa/test_b.S
> similarity index 100%
> rename from tests/xtensa/test_b.S
> rename to tests/tcg/xtensa/test_b.S
> diff --git a/tests/xtensa/test_bi.S b/tests/tcg/xtensa/test_bi.S
> similarity index 100%
> rename from tests/xtensa/test_bi.S
> rename to tests/tcg/xtensa/test_bi.S
> diff --git a/tests/xtensa/test_boolean.S b/tests/tcg/xtensa/test_boolean.S
> similarity index 100%
> rename from tests/xtensa/test_boolean.S
> rename to tests/tcg/xtensa/test_boolean.S
> diff --git a/tests/xtensa/test_bz.S b/tests/tcg/xtensa/test_bz.S
> similarity index 100%
> rename from tests/xtensa/test_bz.S
> rename to tests/tcg/xtensa/test_bz.S
> diff --git a/tests/xtensa/test_clamps.S b/tests/tcg/xtensa/test_clamps.S
> similarity index 100%
> rename from tests/xtensa/test_clamps.S
> rename to tests/tcg/xtensa/test_clamps.S
> diff --git a/tests/xtensa/test_fail.S b/tests/tcg/xtensa/test_fail.S
> similarity index 100%
> rename from tests/xtensa/test_fail.S
> rename to tests/tcg/xtensa/test_fail.S
> diff --git a/tests/xtensa/test_interrupt.S b/tests/tcg/xtensa/test_interrupt.S
> similarity index 100%
> rename from tests/xtensa/test_interrupt.S
> rename to tests/tcg/xtensa/test_interrupt.S
> diff --git a/tests/xtensa/test_loop.S b/tests/tcg/xtensa/test_loop.S
> similarity index 100%
> rename from tests/xtensa/test_loop.S
> rename to tests/tcg/xtensa/test_loop.S
> diff --git a/tests/xtensa/test_mac16.S b/tests/tcg/xtensa/test_mac16.S
> similarity index 100%
> rename from tests/xtensa/test_mac16.S
> rename to tests/tcg/xtensa/test_mac16.S
> diff --git a/tests/xtensa/test_max.S b/tests/tcg/xtensa/test_max.S
> similarity index 100%
> rename from tests/xtensa/test_max.S
> rename to tests/tcg/xtensa/test_max.S
> diff --git a/tests/xtensa/test_min.S b/tests/tcg/xtensa/test_min.S
> similarity index 100%
> rename from tests/xtensa/test_min.S
> rename to tests/tcg/xtensa/test_min.S
> diff --git a/tests/xtensa/test_mmu.S b/tests/tcg/xtensa/test_mmu.S
> similarity index 100%
> rename from tests/xtensa/test_mmu.S
> rename to tests/tcg/xtensa/test_mmu.S
> diff --git a/tests/xtensa/test_mul16.S b/tests/tcg/xtensa/test_mul16.S
> similarity index 100%
> rename from tests/xtensa/test_mul16.S
> rename to tests/tcg/xtensa/test_mul16.S
> diff --git a/tests/xtensa/test_mul32.S b/tests/tcg/xtensa/test_mul32.S
> similarity index 100%
> rename from tests/xtensa/test_mul32.S
> rename to tests/tcg/xtensa/test_mul32.S
> diff --git a/tests/xtensa/test_nsa.S b/tests/tcg/xtensa/test_nsa.S
> similarity index 100%
> rename from tests/xtensa/test_nsa.S
> rename to tests/tcg/xtensa/test_nsa.S
> diff --git a/tests/xtensa/test_pipeline.S b/tests/tcg/xtensa/test_pipeline.S
> similarity index 100%
> rename from tests/xtensa/test_pipeline.S
> rename to tests/tcg/xtensa/test_pipeline.S
> diff --git a/tests/xtensa/test_quo.S b/tests/tcg/xtensa/test_quo.S
> similarity index 100%
> rename from tests/xtensa/test_quo.S
> rename to tests/tcg/xtensa/test_quo.S
> diff --git a/tests/xtensa/test_rem.S b/tests/tcg/xtensa/test_rem.S
> similarity index 100%
> rename from tests/xtensa/test_rem.S
> rename to tests/tcg/xtensa/test_rem.S
> diff --git a/tests/xtensa/test_rst0.S b/tests/tcg/xtensa/test_rst0.S
> similarity index 100%
> rename from tests/xtensa/test_rst0.S
> rename to tests/tcg/xtensa/test_rst0.S
> diff --git a/tests/xtensa/test_sar.S b/tests/tcg/xtensa/test_sar.S
> similarity index 100%
> rename from tests/xtensa/test_sar.S
> rename to tests/tcg/xtensa/test_sar.S
> diff --git a/tests/xtensa/test_sext.S b/tests/tcg/xtensa/test_sext.S
> similarity index 100%
> rename from tests/xtensa/test_sext.S
> rename to tests/tcg/xtensa/test_sext.S
> diff --git a/tests/xtensa/test_shift.S b/tests/tcg/xtensa/test_shift.S
> similarity index 100%
> rename from tests/xtensa/test_shift.S
> rename to tests/tcg/xtensa/test_shift.S
> diff --git a/tests/xtensa/test_timer.S b/tests/tcg/xtensa/test_timer.S
> similarity index 100%
> rename from tests/xtensa/test_timer.S
> rename to tests/tcg/xtensa/test_timer.S
> diff --git a/tests/xtensa/test_windowed.S b/tests/tcg/xtensa/test_windowed.S
> similarity index 100%
> rename from tests/xtensa/test_windowed.S
> rename to tests/tcg/xtensa/test_windowed.S
> diff --git a/tests/xtensa/vectors.S b/tests/tcg/xtensa/vectors.S
> similarity index 100%
> rename from tests/xtensa/vectors.S
> rename to tests/tcg/xtensa/vectors.S
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
@ 2012-01-09 16:16 ` Avi Kivity
2012-01-09 16:28 ` Anthony Liguori
2012-01-09 16:47 ` Daniel Gollub
` (3 subsequent siblings)
4 siblings, 1 reply; 40+ messages in thread
From: Avi Kivity @ 2012-01-09 16:16 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Stefan Hajnoczi, Stefano Stabellini,
Stefan Weil, Riku Voipio, Jan Kiszka, Paul Brook, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Vassili Karpov (malc), Marcelo Tosatti, Michael Walle,
Amit Shah, Paolo Bonzini, Aurelien Jarno
On 01/09/2012 06:04 PM, Anthony Liguori wrote:
> Hi,
>
> I'm going to apply this series quickly and will start running 'make
> check-quick' as part a sniff test before pushing patches.
>
> I'd like to request that all maintainers/submaintainers do the same
> and that everyone contributes unit tests to this target.
>
Good stuff.
> The general rules for 'make check-quick':
>
> 1) It must complete in less than 10 minutes start to finish (the
> entire rule). We can re-examine this over time but for now, it seems
> like a reasonable limit.
>
> 2) It must gracefully degrade across architectures/targets. Do not
> assume qemu-system-x86_64 is present or that an arm cross compiler is
> available.
>
There's a cross compiler in Fedora, arm-gp2x-linux-gcc.x86_64. Is it
suitable for make check?
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 16:16 ` Avi Kivity
@ 2012-01-09 16:28 ` Anthony Liguori
0 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 16:28 UTC (permalink / raw)
To: Avi Kivity
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Stefan Hajnoczi, Stefano Stabellini,
Stefan Weil, Riku Voipio, Jan Kiszka, Paul Brook, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Vassili Karpov (malc), Marcelo Tosatti, Michael Walle,
Amit Shah, Paolo Bonzini, Aurelien Jarno
On 01/09/2012 10:16 AM, Avi Kivity wrote:
> On 01/09/2012 06:04 PM, Anthony Liguori wrote:
>> Hi,
>>
>> I'm going to apply this series quickly and will start running 'make
>> check-quick' as part a sniff test before pushing patches.
>>
>> I'd like to request that all maintainers/submaintainers do the same
>> and that everyone contributes unit tests to this target.
>>
>
> Good stuff.
>
>> The general rules for 'make check-quick':
>>
>> 1) It must complete in less than 10 minutes start to finish (the
>> entire rule). We can re-examine this over time but for now, it seems
>> like a reasonable limit.
>>
>> 2) It must gracefully degrade across architectures/targets. Do not
>> assume qemu-system-x86_64 is present or that an arm cross compiler is
>> available.
>>
>
> There's a cross compiler in Fedora, arm-gp2x-linux-gcc.x86_64. Is it
> suitable for make check?
It must degrade gracefully so if you probe for a cross compiler in configure and
then disable/enable tests appropriately, that's fine.
But 'make check' should succeed and do something useful with only the
dependencies required to build QEMU. It can test fewer things of course.
Regards,
Anthony Liguori
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
2012-01-09 16:16 ` Avi Kivity
@ 2012-01-09 16:47 ` Daniel Gollub
2012-01-09 17:47 ` Paul Brook
` (2 subsequent siblings)
4 siblings, 0 replies; 40+ messages in thread
From: Daniel Gollub @ 2012-01-09 16:47 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Paul Brook, Luiz Capitulino, Venkateswararao Jujjuri (JV),
Richard Henderson, Kevin Wolf, Vassili Karpov (malc),
Marcelo Tosatti, Michael Walle, Amit Shah, Paolo Bonzini,
Aurelien Jarno
[-- Attachment #1: Type: Text/Plain, Size: 915 bytes --]
Hi Anthony,
On Monday, January 09, 2012 05:04:38 PM Anthony Liguori wrote:
[...]
> It would also be nice to get this integrated as part of buildbot.
> Stefan/Daniel, is that something we can do?
Sure, that is pretty easy modification for the current buildbot environment we just need to add:
f_default.addStep(Test(command=["make", "check-quick"], env={'LANG': 'C'}, maxTime=1200))
to all "buildbot factories".
We could even let it fail if it does not finish within 10 minutes ;)
But for the beginning I would suggest to allow to run 20 minutes on the buildslaves so we get some experiences how long it takes.
Best Regards,
Daniel
--
Daniel Gollub
Linux Consultant & Developer
Tel.: +49-160 47 73 970
Mail: gollub@b1-systems.de
B1 Systems GmbH
Osterfeldstraße 7 / 85088 Vohburg / http://www.b1-systems.de
GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt,HRB 3537
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
2012-01-09 16:16 ` Avi Kivity
2012-01-09 16:47 ` Daniel Gollub
@ 2012-01-09 17:47 ` Paul Brook
2012-01-09 19:28 ` Anthony Liguori
2012-01-09 20:00 ` Stefan Weil
2012-01-10 8:39 ` Stefan Hajnoczi
4 siblings, 1 reply; 40+ messages in thread
From: Paul Brook @ 2012-01-09 17:47 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Daniel Gollub, Luiz Capitulino, Venkateswararao Jujjuri (JV),
Richard Henderson, Kevin Wolf, Vassili Karpov (malc),
Marcelo Tosatti, Michael Walle, Amit Shah, Paolo Bonzini,
Aurelien Jarno
> I'm going to apply this series quickly and will start running 'make
> check-quick' as part a sniff test before pushing patches.
>
> I'd like to request that all maintainers/submaintainers do the same and
> that everyone contributes unit tests to this target.
>
> The general rules for 'make check-quick':
>
> 1) It must complete in less than 10 minutes start to finish (the entire
> rule). We can re-examine this over time but for now, it seems like a
> reasonable limit.
No objection in principle, though I'm a bit unclear on the guidelines.
In particular:
- 10 minutes on what hardware? 10 minutes on one of my fat build machines is
an hour on an average year-old laptop/desktop, and I guess 6+ hours on the
netbook I use when travelling. Maybe relating this to the time taken to do a
clean build would make more sense?
- What level of testing is appropriate? As a maintainer when can/should I
bounce a patch due to lack of tests? e.g should new device emulation come with
unit tests? New infrastructure? What about fixes to both of the above, should
these include regression tests? Given the size of the test surface for many
components (in particular emulated CPUs), I'm guessing we're looking at
extremely basic smoke-tests. Consistent regression tests or any sort of
architecture conformance tests are going to completely blow your time budget.
Obviously level of testing is always a bit of a judgement call - anyone who
claims of have complete test coverage is either lying or writing trivially
uninteresting code. However given qemu has historically had zero active test
coverage I'd appreciate some guidance (as both maintainers and contrubutor).
Paul
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest
2012-01-09 15:56 ` [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest Anthony Liguori
@ 2012-01-09 18:27 ` Luiz Capitulino
2012-01-09 19:15 ` Anthony Liguori
2012-01-09 19:26 ` Andreas Färber
1 sibling, 1 reply; 40+ messages in thread
From: Luiz Capitulino @ 2012-01-09 18:27 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel
On Mon, 9 Jan 2012 09:56:04 -0600
Anthony Liguori <aliguori@us.ibm.com> wrote:
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
> Makefile | 6 --
> check-qdict.c | 246 +++++++++++++++++++++++++-------------------------------
> configure | 4 +-
> tests/Makefile | 6 ++
> 4 files changed, 119 insertions(+), 143 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 80fb512..4823144 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -294,12 +294,6 @@ endif
> test speed: all
> $(MAKE) -C tests/tcg $@
>
> -.PHONY: check
> -check: $(patsubst %,run-check-%,$(CHECKS))
> -
> -run-check-%: %
> - ./$<
> -
> .PHONY: TAGS
> TAGS:
> find "$(SRC_PATH)" -name '*.[hc]' -print0 | xargs -0 etags
> diff --git a/check-qdict.c b/check-qdict.c
> index 5515773..fc0d276 100644
> --- a/check-qdict.c
> +++ b/check-qdict.c
> @@ -9,7 +9,7 @@
> * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
> * See the COPYING.LIB file in the top-level directory.
> */
> -#include <check.h>
> +#include <glib.h>
>
> #include "qint.h"
> #include "qdict.h"
> @@ -22,22 +22,21 @@
> * (with some violations to access 'private' data)
> */
>
> -START_TEST(qdict_new_test)
> +static void qdict_new_test(void)
> {
> QDict *qdict;
>
> qdict = qdict_new();
> - fail_unless(qdict != NULL);
> - fail_unless(qdict_size(qdict) == 0);
> - fail_unless(qdict->base.refcnt == 1);
> - fail_unless(qobject_type(QOBJECT(qdict)) == QTYPE_QDICT);
> + g_assert(qdict != NULL);
> + g_assert(qdict_size(qdict) == 0);
> + g_assert(qdict->base.refcnt == 1);
> + g_assert(qobject_type(QOBJECT(qdict)) == QTYPE_QDICT);
>
> // destroy doesn't exit yet
> - free(qdict);
> + g_free(qdict);
> }
> -END_TEST
>
> -START_TEST(qdict_put_obj_test)
> +static void qdict_put_obj_test(void)
> {
> QInt *qi;
> QDict *qdict;
> @@ -49,10 +48,10 @@ START_TEST(qdict_put_obj_test)
> // key "" will have tdb hash 12345
> qdict_put_obj(qdict, "", QOBJECT(qint_from_int(num)));
>
> - fail_unless(qdict_size(qdict) == 1);
> + g_assert(qdict_size(qdict) == 1);
> ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);
> qi = qobject_to_qint(ent->value);
> - fail_unless(qint_get_int(qi) == num);
> + g_assert(qint_get_int(qi) == num);
Would be nice to use g_assert_cmpint() & friends, but I can do it later...
>
> // destroy doesn't exit yet
> QDECREF(qi);
> @@ -60,9 +59,8 @@ START_TEST(qdict_put_obj_test)
> g_free(ent);
> g_free(qdict);
> }
> -END_TEST
>
> -START_TEST(qdict_destroy_simple_test)
> +static void qdict_destroy_simple_test(void)
> {
> QDict *qdict;
>
> @@ -72,134 +70,138 @@ START_TEST(qdict_destroy_simple_test)
>
> QDECREF(qdict);
> }
> -END_TEST
> -
> -static QDict *tests_dict = NULL;
> -
> -static void qdict_setup(void)
> -{
> - tests_dict = qdict_new();
> - fail_unless(tests_dict != NULL);
> -}
>
> -static void qdict_teardown(void)
> -{
> - QDECREF(tests_dict);
> - tests_dict = NULL;
> -}
> -
Why not use setup/teardown in the gtest version too? This is not hugely
important, but I don't see why duplicate the code in all tests either.
Also, wouldn't be better to rename this to test-qdict (and the others too)?
Otherwise the whole series look good, you can add:
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
If you think it's worth it.
> -START_TEST(qdict_get_test)
> +static void qdict_get_test(void)
> {
> QInt *qi;
> QObject *obj;
> const int value = -42;
> const char *key = "test";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qint_from_int(value));
>
> obj = qdict_get(tests_dict, key);
> - fail_unless(obj != NULL);
> + g_assert(obj != NULL);
>
> qi = qobject_to_qint(obj);
> - fail_unless(qint_get_int(qi) == value);
> + g_assert(qint_get_int(qi) == value);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_get_int_test)
> +static void qdict_get_int_test(void)
> {
> int ret;
> const int value = 100;
> const char *key = "int";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qint_from_int(value));
>
> ret = qdict_get_int(tests_dict, key);
> - fail_unless(ret == value);
> + g_assert(ret == value);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_get_try_int_test)
> +static void qdict_get_try_int_test(void)
> {
> int ret;
> const int value = 100;
> const char *key = "int";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qint_from_int(value));
>
> ret = qdict_get_try_int(tests_dict, key, 0);
> - fail_unless(ret == value);
> + g_assert(ret == value);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_get_str_test)
> +static void qdict_get_str_test(void)
> {
> const char *p;
> const char *key = "key";
> const char *str = "string";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qstring_from_str(str));
>
> p = qdict_get_str(tests_dict, key);
> - fail_unless(p != NULL);
> - fail_unless(strcmp(p, str) == 0);
> + g_assert(p != NULL);
> + g_assert(strcmp(p, str) == 0);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_get_try_str_test)
> +static void qdict_get_try_str_test(void)
> {
> const char *p;
> const char *key = "key";
> const char *str = "string";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qstring_from_str(str));
>
> p = qdict_get_try_str(tests_dict, key);
> - fail_unless(p != NULL);
> - fail_unless(strcmp(p, str) == 0);
> + g_assert(p != NULL);
> + g_assert(strcmp(p, str) == 0);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_haskey_not_test)
> +static void qdict_haskey_not_test(void)
> {
> - fail_unless(qdict_haskey(tests_dict, "test") == 0);
> + QDict *tests_dict = qdict_new();
> + g_assert(qdict_haskey(tests_dict, "test") == 0);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_haskey_test)
> +static void qdict_haskey_test(void)
> {
> const char *key = "test";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qint_from_int(0));
> - fail_unless(qdict_haskey(tests_dict, key) == 1);
> + g_assert(qdict_haskey(tests_dict, key) == 1);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_del_test)
> +static void qdict_del_test(void)
> {
> const char *key = "key test";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qstring_from_str("foo"));
> - fail_unless(qdict_size(tests_dict) == 1);
> + g_assert(qdict_size(tests_dict) == 1);
>
> qdict_del(tests_dict, key);
>
> - fail_unless(qdict_size(tests_dict) == 0);
> - fail_unless(qdict_haskey(tests_dict, key) == 0);
> + g_assert(qdict_size(tests_dict) == 0);
> + g_assert(qdict_haskey(tests_dict, key) == 0);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qobject_to_qdict_test)
> +static void qobject_to_qdict_test(void)
> {
> - fail_unless(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
> + QDict *tests_dict = qdict_new();
> + g_assert(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_iterapi_test)
> +static void qdict_iterapi_test(void)
> {
> int count;
> const QDictEntry *ent;
> + QDict *tests_dict = qdict_new();
>
> - fail_unless(qdict_first(tests_dict) == NULL);
> + g_assert(qdict_first(tests_dict) == NULL);
>
> qdict_put(tests_dict, "key1", qint_from_int(1));
> qdict_put(tests_dict, "key2", qint_from_int(2));
> @@ -207,47 +209,52 @@ START_TEST(qdict_iterapi_test)
>
> count = 0;
> for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
> - fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> + g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> count++;
> }
>
> - fail_unless(count == qdict_size(tests_dict));
> + g_assert(count == qdict_size(tests_dict));
>
> /* Do it again to test restarting */
> count = 0;
> for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
> - fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> + g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> count++;
> }
>
> - fail_unless(count == qdict_size(tests_dict));
> + g_assert(count == qdict_size(tests_dict));
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> /*
> * Errors test-cases
> */
>
> -START_TEST(qdict_put_exists_test)
> +static void qdict_put_exists_test(void)
> {
> int value;
> const char *key = "exists";
> + QDict *tests_dict = qdict_new();
>
> qdict_put(tests_dict, key, qint_from_int(1));
> qdict_put(tests_dict, key, qint_from_int(2));
>
> value = qdict_get_int(tests_dict, key);
> - fail_unless(value == 2);
> + g_assert(value == 2);
>
> - fail_unless(qdict_size(tests_dict) == 1);
> + g_assert(qdict_size(tests_dict) == 1);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> -START_TEST(qdict_get_not_exists_test)
> +static void qdict_get_not_exists_test(void)
> {
> - fail_unless(qdict_get(tests_dict, "foo") == NULL);
> + QDict *tests_dict = qdict_new();
> + g_assert(qdict_get(tests_dict, "foo") == NULL);
> +
> + QDECREF(tests_dict);
> }
> -END_TEST
>
> /*
> * Stress test-case
> @@ -276,7 +283,7 @@ static QString *read_line(FILE *file, char *key)
>
> #define reset_file(file) fseek(file, 0L, SEEK_SET)
>
> -START_TEST(qdict_stress_test)
> +static void qdict_stress_test(void)
> {
> size_t lines;
> char key[128];
> @@ -286,11 +293,11 @@ START_TEST(qdict_stress_test)
> const char *test_file_path = "qdict-test-data.txt";
>
> test_file = fopen(test_file_path, "r");
> - fail_unless(test_file != NULL);
> + g_assert(test_file != NULL);
>
> // Create the dict
> qdict = qdict_new();
> - fail_unless(qdict != NULL);
> + g_assert(qdict != NULL);
>
> // Add everything from the test file
> for (lines = 0;; lines++) {
> @@ -300,7 +307,7 @@ START_TEST(qdict_stress_test)
>
> qdict_put(qdict, key, value);
> }
> - fail_unless(qdict_size(qdict) == lines);
> + g_assert(qdict_size(qdict) == lines);
>
> // Check if everything is really in there
> reset_file(test_file);
> @@ -314,9 +321,9 @@ START_TEST(qdict_stress_test)
> str1 = qstring_get_str(value);
>
> str2 = qdict_get_str(qdict, key);
> - fail_unless(str2 != NULL);
> + g_assert(str2 != NULL);
>
> - fail_unless(strcmp(str1, str2) == 0);
> + g_assert(strcmp(str1, str2) == 0);
>
> QDECREF(value);
> }
> @@ -331,72 +338,41 @@ START_TEST(qdict_stress_test)
> qdict_del(qdict, key);
> QDECREF(value);
>
> - fail_unless(qdict_haskey(qdict, key) == 0);
> + g_assert(qdict_haskey(qdict, key) == 0);
> }
> fclose(test_file);
>
> - fail_unless(qdict_size(qdict) == 0);
> + g_assert(qdict_size(qdict) == 0);
> QDECREF(qdict);
> }
> -END_TEST
>
> -static Suite *qdict_suite(void)
> +int main(int argc, char **argv)
> {
> - Suite *s;
> - TCase *qdict_public_tcase;
> - TCase *qdict_public2_tcase;
> - TCase *qdict_stress_tcase;
> - TCase *qdict_errors_tcase;
> -
> - s = suite_create("QDict test-suite");
> + g_test_init(&argc, &argv, NULL);
>
> - qdict_public_tcase = tcase_create("Public Interface");
> - suite_add_tcase(s, qdict_public_tcase);
> - tcase_add_test(qdict_public_tcase, qdict_new_test);
> - tcase_add_test(qdict_public_tcase, qdict_put_obj_test);
> - tcase_add_test(qdict_public_tcase, qdict_destroy_simple_test);
> + g_test_add_func("/public/new", qdict_new_test);
> + g_test_add_func("/public/put_obj", qdict_put_obj_test);
> + g_test_add_func("/public/destroy_simple", qdict_destroy_simple_test);
>
> /* Continue, but now with fixtures */
> - qdict_public2_tcase = tcase_create("Public Interface (2)");
> - suite_add_tcase(s, qdict_public2_tcase);
> - tcase_add_checked_fixture(qdict_public2_tcase, qdict_setup, qdict_teardown);
> - tcase_add_test(qdict_public2_tcase, qdict_get_test);
> - tcase_add_test(qdict_public2_tcase, qdict_get_int_test);
> - tcase_add_test(qdict_public2_tcase, qdict_get_try_int_test);
> - tcase_add_test(qdict_public2_tcase, qdict_get_str_test);
> - tcase_add_test(qdict_public2_tcase, qdict_get_try_str_test);
> - tcase_add_test(qdict_public2_tcase, qdict_haskey_not_test);
> - tcase_add_test(qdict_public2_tcase, qdict_haskey_test);
> - tcase_add_test(qdict_public2_tcase, qdict_del_test);
> - tcase_add_test(qdict_public2_tcase, qobject_to_qdict_test);
> - tcase_add_test(qdict_public2_tcase, qdict_iterapi_test);
> -
> - qdict_errors_tcase = tcase_create("Errors");
> - suite_add_tcase(s, qdict_errors_tcase);
> - tcase_add_checked_fixture(qdict_errors_tcase, qdict_setup, qdict_teardown);
> - tcase_add_test(qdict_errors_tcase, qdict_put_exists_test);
> - tcase_add_test(qdict_errors_tcase, qdict_get_not_exists_test);
> + g_test_add_func("/public/get", qdict_get_test);
> + g_test_add_func("/public/get_int", qdict_get_int_test);
> + g_test_add_func("/public/get_try_int", qdict_get_try_int_test);
> + g_test_add_func("/public/get_str", qdict_get_str_test);
> + g_test_add_func("/public/get_try_str", qdict_get_try_str_test);
> + g_test_add_func("/public/haskey_not", qdict_haskey_not_test);
> + g_test_add_func("/public/haskey", qdict_haskey_test);
> + g_test_add_func("/public/del", qdict_del_test);
> + g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
> + g_test_add_func("/public/iterapi", qdict_iterapi_test);
> +
> + g_test_add_func("/errors/put_exists", qdict_put_exists_test);
> + g_test_add_func("/errors/get_not_exists", qdict_get_not_exists_test);
>
> /* The Big one */
> - qdict_stress_tcase = tcase_create("Stress Test");
> - suite_add_tcase(s, qdict_stress_tcase);
> - tcase_add_test(qdict_stress_tcase, qdict_stress_test);
> -
> - return s;
> -}
> -
> -int main(void)
> -{
> - int nf;
> - Suite *s;
> - SRunner *sr;
> -
> - s = qdict_suite();
> - sr = srunner_create(s);
> -
> - srunner_run_all(sr, CK_NORMAL);
> - nf = srunner_ntests_failed(sr);
> - srunner_free(sr);
> + if (g_test_slow()) {
> + g_test_add_func("/stress/test", qdict_stress_test);
> + }
>
> - return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
> + return g_test_run();
> }
> diff --git a/configure b/configure
> index 79790b3..7e3f28f 100755
> --- a/configure
> +++ b/configure
> @@ -2800,10 +2800,10 @@ if test "$softmmu" = yes ; then
> tools="qemu-ga\$(EXESUF) $tools"
> fi
> if [ "$check_utests" = "yes" ]; then
> - checks="check-qint check-qstring check-qdict check-qlist"
> + checks="check-qint check-qstring check-qlist"
> checks="check-qfloat check-qjson $checks"
> fi
> - test_progs="$checks test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
> + test_progs="$checks check-qdict test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
> fi
> fi
>
> diff --git a/tests/Makefile b/tests/Makefile
> index c11d980..cff9ff3 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -29,3 +29,9 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
> test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>
> +.PHONY: check
> +check: $(patsubst %,run-check-%,$(CHECKS))
> +
> +run-check-%: %
> + ./$<
> +
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest
2012-01-09 18:27 ` Luiz Capitulino
@ 2012-01-09 19:15 ` Anthony Liguori
2012-01-09 19:37 ` Luiz Capitulino
0 siblings, 1 reply; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 19:15 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
On 01/09/2012 12:27 PM, Luiz Capitulino wrote:
>> -START_TEST(qdict_put_obj_test)
>> +static void qdict_put_obj_test(void)
>> {
>> QInt *qi;
>> QDict *qdict;
>> @@ -49,10 +48,10 @@ START_TEST(qdict_put_obj_test)
>> // key "" will have tdb hash 12345
>> qdict_put_obj(qdict, "", QOBJECT(qint_from_int(num)));
>>
>> - fail_unless(qdict_size(qdict) == 1);
>> + g_assert(qdict_size(qdict) == 1);
>> ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);
>> qi = qobject_to_qint(ent->value);
>> - fail_unless(qint_get_int(qi) == num);
>> + g_assert(qint_get_int(qi) == num);
>
> Would be nice to use g_assert_cmpint()& friends, but I can do it later...
Yup.
>> -static QDict *tests_dict = NULL;
>> -
>> -static void qdict_setup(void)
>> -{
>> - tests_dict = qdict_new();
>> - fail_unless(tests_dict != NULL);
>> -}
>>
>> -static void qdict_teardown(void)
>> -{
>> - QDECREF(tests_dict);
>> - tests_dict = NULL;
>> -}
>> -
>
> Why not use setup/teardown in the gtest version too? This is not hugely
> important, but I don't see why duplicate the code in all tests either.
Mainly because an emacs macro actually did the conversion so it was easier to
make everything look the same and then run the macro. It didn't seem
significant enough to worry that much about.
But of course, we can change it after the fact too.
> Also, wouldn't be better to rename this to test-qdict (and the others too)?
Yes, but we should also find a sane way to express the build rules. Right now,
it's a major hassle to figure out what unit tests need to link against.
I figure that in the not too distant future, I'll take a pass at the build rules
and along the way, rename everything so we can have an implicit rule like:
test-%: test-%.o $(test-objs-y)
But I don't know yet what that rule is going to look like so I think we should
wait to do the rename.
Regards,
Anthony Liguori
> Otherwise the whole series look good, you can add:
>
> Reviewed-by: Luiz Capitulino<lcapitulino@redhat.com>
>
> If you think it's worth it.
>
>> -START_TEST(qdict_get_test)
>> +static void qdict_get_test(void)
>> {
>> QInt *qi;
>> QObject *obj;
>> const int value = -42;
>> const char *key = "test";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qint_from_int(value));
>>
>> obj = qdict_get(tests_dict, key);
>> - fail_unless(obj != NULL);
>> + g_assert(obj != NULL);
>>
>> qi = qobject_to_qint(obj);
>> - fail_unless(qint_get_int(qi) == value);
>> + g_assert(qint_get_int(qi) == value);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_get_int_test)
>> +static void qdict_get_int_test(void)
>> {
>> int ret;
>> const int value = 100;
>> const char *key = "int";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qint_from_int(value));
>>
>> ret = qdict_get_int(tests_dict, key);
>> - fail_unless(ret == value);
>> + g_assert(ret == value);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_get_try_int_test)
>> +static void qdict_get_try_int_test(void)
>> {
>> int ret;
>> const int value = 100;
>> const char *key = "int";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qint_from_int(value));
>>
>> ret = qdict_get_try_int(tests_dict, key, 0);
>> - fail_unless(ret == value);
>> + g_assert(ret == value);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_get_str_test)
>> +static void qdict_get_str_test(void)
>> {
>> const char *p;
>> const char *key = "key";
>> const char *str = "string";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qstring_from_str(str));
>>
>> p = qdict_get_str(tests_dict, key);
>> - fail_unless(p != NULL);
>> - fail_unless(strcmp(p, str) == 0);
>> + g_assert(p != NULL);
>> + g_assert(strcmp(p, str) == 0);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_get_try_str_test)
>> +static void qdict_get_try_str_test(void)
>> {
>> const char *p;
>> const char *key = "key";
>> const char *str = "string";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qstring_from_str(str));
>>
>> p = qdict_get_try_str(tests_dict, key);
>> - fail_unless(p != NULL);
>> - fail_unless(strcmp(p, str) == 0);
>> + g_assert(p != NULL);
>> + g_assert(strcmp(p, str) == 0);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_haskey_not_test)
>> +static void qdict_haskey_not_test(void)
>> {
>> - fail_unless(qdict_haskey(tests_dict, "test") == 0);
>> + QDict *tests_dict = qdict_new();
>> + g_assert(qdict_haskey(tests_dict, "test") == 0);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_haskey_test)
>> +static void qdict_haskey_test(void)
>> {
>> const char *key = "test";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qint_from_int(0));
>> - fail_unless(qdict_haskey(tests_dict, key) == 1);
>> + g_assert(qdict_haskey(tests_dict, key) == 1);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_del_test)
>> +static void qdict_del_test(void)
>> {
>> const char *key = "key test";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qstring_from_str("foo"));
>> - fail_unless(qdict_size(tests_dict) == 1);
>> + g_assert(qdict_size(tests_dict) == 1);
>>
>> qdict_del(tests_dict, key);
>>
>> - fail_unless(qdict_size(tests_dict) == 0);
>> - fail_unless(qdict_haskey(tests_dict, key) == 0);
>> + g_assert(qdict_size(tests_dict) == 0);
>> + g_assert(qdict_haskey(tests_dict, key) == 0);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qobject_to_qdict_test)
>> +static void qobject_to_qdict_test(void)
>> {
>> - fail_unless(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
>> + QDict *tests_dict = qdict_new();
>> + g_assert(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_iterapi_test)
>> +static void qdict_iterapi_test(void)
>> {
>> int count;
>> const QDictEntry *ent;
>> + QDict *tests_dict = qdict_new();
>>
>> - fail_unless(qdict_first(tests_dict) == NULL);
>> + g_assert(qdict_first(tests_dict) == NULL);
>>
>> qdict_put(tests_dict, "key1", qint_from_int(1));
>> qdict_put(tests_dict, "key2", qint_from_int(2));
>> @@ -207,47 +209,52 @@ START_TEST(qdict_iterapi_test)
>>
>> count = 0;
>> for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
>> - fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
>> + g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
>> count++;
>> }
>>
>> - fail_unless(count == qdict_size(tests_dict));
>> + g_assert(count == qdict_size(tests_dict));
>>
>> /* Do it again to test restarting */
>> count = 0;
>> for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
>> - fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
>> + g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
>> count++;
>> }
>>
>> - fail_unless(count == qdict_size(tests_dict));
>> + g_assert(count == qdict_size(tests_dict));
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> /*
>> * Errors test-cases
>> */
>>
>> -START_TEST(qdict_put_exists_test)
>> +static void qdict_put_exists_test(void)
>> {
>> int value;
>> const char *key = "exists";
>> + QDict *tests_dict = qdict_new();
>>
>> qdict_put(tests_dict, key, qint_from_int(1));
>> qdict_put(tests_dict, key, qint_from_int(2));
>>
>> value = qdict_get_int(tests_dict, key);
>> - fail_unless(value == 2);
>> + g_assert(value == 2);
>>
>> - fail_unless(qdict_size(tests_dict) == 1);
>> + g_assert(qdict_size(tests_dict) == 1);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> -START_TEST(qdict_get_not_exists_test)
>> +static void qdict_get_not_exists_test(void)
>> {
>> - fail_unless(qdict_get(tests_dict, "foo") == NULL);
>> + QDict *tests_dict = qdict_new();
>> + g_assert(qdict_get(tests_dict, "foo") == NULL);
>> +
>> + QDECREF(tests_dict);
>> }
>> -END_TEST
>>
>> /*
>> * Stress test-case
>> @@ -276,7 +283,7 @@ static QString *read_line(FILE *file, char *key)
>>
>> #define reset_file(file) fseek(file, 0L, SEEK_SET)
>>
>> -START_TEST(qdict_stress_test)
>> +static void qdict_stress_test(void)
>> {
>> size_t lines;
>> char key[128];
>> @@ -286,11 +293,11 @@ START_TEST(qdict_stress_test)
>> const char *test_file_path = "qdict-test-data.txt";
>>
>> test_file = fopen(test_file_path, "r");
>> - fail_unless(test_file != NULL);
>> + g_assert(test_file != NULL);
>>
>> // Create the dict
>> qdict = qdict_new();
>> - fail_unless(qdict != NULL);
>> + g_assert(qdict != NULL);
>>
>> // Add everything from the test file
>> for (lines = 0;; lines++) {
>> @@ -300,7 +307,7 @@ START_TEST(qdict_stress_test)
>>
>> qdict_put(qdict, key, value);
>> }
>> - fail_unless(qdict_size(qdict) == lines);
>> + g_assert(qdict_size(qdict) == lines);
>>
>> // Check if everything is really in there
>> reset_file(test_file);
>> @@ -314,9 +321,9 @@ START_TEST(qdict_stress_test)
>> str1 = qstring_get_str(value);
>>
>> str2 = qdict_get_str(qdict, key);
>> - fail_unless(str2 != NULL);
>> + g_assert(str2 != NULL);
>>
>> - fail_unless(strcmp(str1, str2) == 0);
>> + g_assert(strcmp(str1, str2) == 0);
>>
>> QDECREF(value);
>> }
>> @@ -331,72 +338,41 @@ START_TEST(qdict_stress_test)
>> qdict_del(qdict, key);
>> QDECREF(value);
>>
>> - fail_unless(qdict_haskey(qdict, key) == 0);
>> + g_assert(qdict_haskey(qdict, key) == 0);
>> }
>> fclose(test_file);
>>
>> - fail_unless(qdict_size(qdict) == 0);
>> + g_assert(qdict_size(qdict) == 0);
>> QDECREF(qdict);
>> }
>> -END_TEST
>>
>> -static Suite *qdict_suite(void)
>> +int main(int argc, char **argv)
>> {
>> - Suite *s;
>> - TCase *qdict_public_tcase;
>> - TCase *qdict_public2_tcase;
>> - TCase *qdict_stress_tcase;
>> - TCase *qdict_errors_tcase;
>> -
>> - s = suite_create("QDict test-suite");
>> + g_test_init(&argc,&argv, NULL);
>>
>> - qdict_public_tcase = tcase_create("Public Interface");
>> - suite_add_tcase(s, qdict_public_tcase);
>> - tcase_add_test(qdict_public_tcase, qdict_new_test);
>> - tcase_add_test(qdict_public_tcase, qdict_put_obj_test);
>> - tcase_add_test(qdict_public_tcase, qdict_destroy_simple_test);
>> + g_test_add_func("/public/new", qdict_new_test);
>> + g_test_add_func("/public/put_obj", qdict_put_obj_test);
>> + g_test_add_func("/public/destroy_simple", qdict_destroy_simple_test);
>>
>> /* Continue, but now with fixtures */
>> - qdict_public2_tcase = tcase_create("Public Interface (2)");
>> - suite_add_tcase(s, qdict_public2_tcase);
>> - tcase_add_checked_fixture(qdict_public2_tcase, qdict_setup, qdict_teardown);
>> - tcase_add_test(qdict_public2_tcase, qdict_get_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_get_int_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_get_try_int_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_get_str_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_get_try_str_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_haskey_not_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_haskey_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_del_test);
>> - tcase_add_test(qdict_public2_tcase, qobject_to_qdict_test);
>> - tcase_add_test(qdict_public2_tcase, qdict_iterapi_test);
>> -
>> - qdict_errors_tcase = tcase_create("Errors");
>> - suite_add_tcase(s, qdict_errors_tcase);
>> - tcase_add_checked_fixture(qdict_errors_tcase, qdict_setup, qdict_teardown);
>> - tcase_add_test(qdict_errors_tcase, qdict_put_exists_test);
>> - tcase_add_test(qdict_errors_tcase, qdict_get_not_exists_test);
>> + g_test_add_func("/public/get", qdict_get_test);
>> + g_test_add_func("/public/get_int", qdict_get_int_test);
>> + g_test_add_func("/public/get_try_int", qdict_get_try_int_test);
>> + g_test_add_func("/public/get_str", qdict_get_str_test);
>> + g_test_add_func("/public/get_try_str", qdict_get_try_str_test);
>> + g_test_add_func("/public/haskey_not", qdict_haskey_not_test);
>> + g_test_add_func("/public/haskey", qdict_haskey_test);
>> + g_test_add_func("/public/del", qdict_del_test);
>> + g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
>> + g_test_add_func("/public/iterapi", qdict_iterapi_test);
>> +
>> + g_test_add_func("/errors/put_exists", qdict_put_exists_test);
>> + g_test_add_func("/errors/get_not_exists", qdict_get_not_exists_test);
>>
>> /* The Big one */
>> - qdict_stress_tcase = tcase_create("Stress Test");
>> - suite_add_tcase(s, qdict_stress_tcase);
>> - tcase_add_test(qdict_stress_tcase, qdict_stress_test);
>> -
>> - return s;
>> -}
>> -
>> -int main(void)
>> -{
>> - int nf;
>> - Suite *s;
>> - SRunner *sr;
>> -
>> - s = qdict_suite();
>> - sr = srunner_create(s);
>> -
>> - srunner_run_all(sr, CK_NORMAL);
>> - nf = srunner_ntests_failed(sr);
>> - srunner_free(sr);
>> + if (g_test_slow()) {
>> + g_test_add_func("/stress/test", qdict_stress_test);
>> + }
>>
>> - return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
>> + return g_test_run();
>> }
>> diff --git a/configure b/configure
>> index 79790b3..7e3f28f 100755
>> --- a/configure
>> +++ b/configure
>> @@ -2800,10 +2800,10 @@ if test "$softmmu" = yes ; then
>> tools="qemu-ga\$(EXESUF) $tools"
>> fi
>> if [ "$check_utests" = "yes" ]; then
>> - checks="check-qint check-qstring check-qdict check-qlist"
>> + checks="check-qint check-qstring check-qlist"
>> checks="check-qfloat check-qjson $checks"
>> fi
>> - test_progs="$checks test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
>> + test_progs="$checks check-qdict test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
>> fi
>> fi
>>
>> diff --git a/tests/Makefile b/tests/Makefile
>> index c11d980..cff9ff3 100644
>> --- a/tests/Makefile
>> +++ b/tests/Makefile
>> @@ -29,3 +29,9 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
>> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
>> test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>>
>> +.PHONY: check
>> +check: $(patsubst %,run-check-%,$(CHECKS))
>> +
>> +run-check-%: %
>> + ./$<
>> +
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
` (10 preceding siblings ...)
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
@ 2012-01-09 19:18 ` Andreas Färber
11 siblings, 0 replies; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 19:18 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Am 09.01.2012 16:56, schrieb Anthony Liguori:
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
tests/tcg looks better than tests/tcg-test, thanks.
Andreas
> ---
> Makefile | 4 ++--
> configure | 6 +++---
> tests/{ => tcg}/Makefile | 0
> tests/{ => tcg}/alpha/Makefile | 0
> tests/{ => tcg}/alpha/crt.s | 0
> tests/{ => tcg}/alpha/hello-alpha.c | 0
> tests/{ => tcg}/alpha/test-cond.c | 0
> tests/{ => tcg}/alpha/test-ovf.c | 0
> tests/{ => tcg}/cris/.gdbinit | 0
> tests/{ => tcg}/cris/Makefile | 0
> tests/{ => tcg}/cris/README | 0
> tests/{ => tcg}/cris/check_abs.c | 0
> tests/{ => tcg}/cris/check_addc.c | 0
> tests/{ => tcg}/cris/check_addcm.c | 0
> tests/{ => tcg}/cris/check_addi.s | 0
> tests/{ => tcg}/cris/check_addiv32.s | 0
> tests/{ => tcg}/cris/check_addm.s | 0
> tests/{ => tcg}/cris/check_addo.c | 0
> tests/{ => tcg}/cris/check_addoq.c | 0
> tests/{ => tcg}/cris/check_addq.s | 0
> tests/{ => tcg}/cris/check_addr.s | 0
> tests/{ => tcg}/cris/check_addxc.s | 0
> tests/{ => tcg}/cris/check_addxm.s | 0
> tests/{ => tcg}/cris/check_addxr.s | 0
> tests/{ => tcg}/cris/check_andc.s | 0
> tests/{ => tcg}/cris/check_andm.s | 0
> tests/{ => tcg}/cris/check_andq.s | 0
> tests/{ => tcg}/cris/check_andr.s | 0
> tests/{ => tcg}/cris/check_asr.s | 0
> tests/{ => tcg}/cris/check_ba.s | 0
> tests/{ => tcg}/cris/check_bas.s | 0
> tests/{ => tcg}/cris/check_bcc.s | 0
> tests/{ => tcg}/cris/check_bound.c | 0
> tests/{ => tcg}/cris/check_boundc.s | 0
> tests/{ => tcg}/cris/check_boundr.s | 0
> tests/{ => tcg}/cris/check_btst.s | 0
> tests/{ => tcg}/cris/check_clearfv32.s | 0
> tests/{ => tcg}/cris/check_clrjmp1.s | 0
> tests/{ => tcg}/cris/check_cmp-2.s | 0
> tests/{ => tcg}/cris/check_cmpc.s | 0
> tests/{ => tcg}/cris/check_cmpm.s | 0
> tests/{ => tcg}/cris/check_cmpq.s | 0
> tests/{ => tcg}/cris/check_cmpr.s | 0
> tests/{ => tcg}/cris/check_cmpxc.s | 0
> tests/{ => tcg}/cris/check_cmpxm.s | 0
> tests/{ => tcg}/cris/check_dstep.s | 0
> tests/{ => tcg}/cris/check_ftag.c | 0
> tests/{ => tcg}/cris/check_gcctorture_pr28634-1.c | 0
> tests/{ => tcg}/cris/check_gcctorture_pr28634.c | 0
> tests/{ => tcg}/cris/check_glibc_kernelversion.c | 0
> tests/{ => tcg}/cris/check_hello.c | 0
> tests/{ => tcg}/cris/check_int64.c | 0
> tests/{ => tcg}/cris/check_jsr.s | 0
> tests/{ => tcg}/cris/check_lapc.s | 0
> tests/{ => tcg}/cris/check_lsl.s | 0
> tests/{ => tcg}/cris/check_lsr.s | 0
> tests/{ => tcg}/cris/check_lz.c | 0
> tests/{ => tcg}/cris/check_mapbrk.c | 0
> tests/{ => tcg}/cris/check_mcp.s | 0
> tests/{ => tcg}/cris/check_mmap1.c | 0
> tests/{ => tcg}/cris/check_mmap2.c | 0
> tests/{ => tcg}/cris/check_mmap3.c | 0
> tests/{ => tcg}/cris/check_movdelsr1.s | 0
> tests/{ => tcg}/cris/check_movecr.s | 0
> tests/{ => tcg}/cris/check_movei.s | 0
> tests/{ => tcg}/cris/check_movemr.s | 0
> tests/{ => tcg}/cris/check_movemrv32.s | 0
> tests/{ => tcg}/cris/check_moveq.c | 0
> tests/{ => tcg}/cris/check_mover.s | 0
> tests/{ => tcg}/cris/check_moverm.s | 0
> tests/{ => tcg}/cris/check_movmp.s | 0
> tests/{ => tcg}/cris/check_movpmv32.s | 0
> tests/{ => tcg}/cris/check_movpr.s | 0
> tests/{ => tcg}/cris/check_movprv32.s | 0
> tests/{ => tcg}/cris/check_movscr.s | 0
> tests/{ => tcg}/cris/check_movsm.s | 0
> tests/{ => tcg}/cris/check_movsr.s | 0
> tests/{ => tcg}/cris/check_movucr.s | 0
> tests/{ => tcg}/cris/check_movum.s | 0
> tests/{ => tcg}/cris/check_movur.s | 0
> tests/{ => tcg}/cris/check_mulv32.s | 0
> tests/{ => tcg}/cris/check_mulx.s | 0
> tests/{ => tcg}/cris/check_neg.s | 0
> tests/{ => tcg}/cris/check_not.s | 0
> tests/{ => tcg}/cris/check_openpf1.c | 0
> tests/{ => tcg}/cris/check_openpf2.c | 0
> tests/{ => tcg}/cris/check_openpf3.c | 0
> tests/{ => tcg}/cris/check_openpf4.c | 0
> tests/{ => tcg}/cris/check_openpf5.c | 0
> tests/{ => tcg}/cris/check_orc.s | 0
> tests/{ => tcg}/cris/check_orm.s | 0
> tests/{ => tcg}/cris/check_orq.s | 0
> tests/{ => tcg}/cris/check_orr.s | 0
> tests/{ => tcg}/cris/check_ret.s | 0
> tests/{ => tcg}/cris/check_scc.s | 0
> tests/{ => tcg}/cris/check_settls1.c | 0
> tests/{ => tcg}/cris/check_sigalrm.c | 0
> tests/{ => tcg}/cris/check_stat1.c | 0
> tests/{ => tcg}/cris/check_stat2.c | 0
> tests/{ => tcg}/cris/check_stat3.c | 0
> tests/{ => tcg}/cris/check_stat4.c | 0
> tests/{ => tcg}/cris/check_subc.s | 0
> tests/{ => tcg}/cris/check_subm.s | 0
> tests/{ => tcg}/cris/check_subq.s | 0
> tests/{ => tcg}/cris/check_subr.s | 0
> tests/{ => tcg}/cris/check_swap.c | 0
> tests/{ => tcg}/cris/check_time1.c | 0
> tests/{ => tcg}/cris/check_time2.c | 0
> tests/{ => tcg}/cris/check_xarith.s | 0
> tests/{ => tcg}/cris/crisutils.h | 0
> tests/{ => tcg}/cris/crt.s | 0
> tests/{ => tcg}/cris/sys.c | 0
> tests/{ => tcg}/cris/sys.h | 0
> tests/{ => tcg}/cris/testutils.inc | 0
> tests/{ => tcg}/hello-arm.c | 0
> tests/{ => tcg}/hello-i386.c | 0
> tests/{ => tcg}/hello-mips.c | 0
> tests/{ => tcg}/linux-test.c | 0
> tests/{ => tcg}/lm32/Makefile | 0
> tests/{ => tcg}/lm32/crt.S | 0
> tests/{ => tcg}/lm32/linker.ld | 0
> tests/{ => tcg}/lm32/macros.inc | 0
> tests/{ => tcg}/lm32/test_add.S | 0
> tests/{ => tcg}/lm32/test_addi.S | 0
> tests/{ => tcg}/lm32/test_and.S | 0
> tests/{ => tcg}/lm32/test_andhi.S | 0
> tests/{ => tcg}/lm32/test_andi.S | 0
> tests/{ => tcg}/lm32/test_b.S | 0
> tests/{ => tcg}/lm32/test_be.S | 0
> tests/{ => tcg}/lm32/test_bg.S | 0
> tests/{ => tcg}/lm32/test_bge.S | 0
> tests/{ => tcg}/lm32/test_bgeu.S | 0
> tests/{ => tcg}/lm32/test_bgu.S | 0
> tests/{ => tcg}/lm32/test_bi.S | 0
> tests/{ => tcg}/lm32/test_bne.S | 0
> tests/{ => tcg}/lm32/test_break.S | 0
> tests/{ => tcg}/lm32/test_bret.S | 0
> tests/{ => tcg}/lm32/test_call.S | 0
> tests/{ => tcg}/lm32/test_calli.S | 0
> tests/{ => tcg}/lm32/test_cmpe.S | 0
> tests/{ => tcg}/lm32/test_cmpei.S | 0
> tests/{ => tcg}/lm32/test_cmpg.S | 0
> tests/{ => tcg}/lm32/test_cmpge.S | 0
> tests/{ => tcg}/lm32/test_cmpgei.S | 0
> tests/{ => tcg}/lm32/test_cmpgeu.S | 0
> tests/{ => tcg}/lm32/test_cmpgeui.S | 0
> tests/{ => tcg}/lm32/test_cmpgi.S | 0
> tests/{ => tcg}/lm32/test_cmpgu.S | 0
> tests/{ => tcg}/lm32/test_cmpgui.S | 0
> tests/{ => tcg}/lm32/test_cmpne.S | 0
> tests/{ => tcg}/lm32/test_cmpnei.S | 0
> tests/{ => tcg}/lm32/test_divu.S | 0
> tests/{ => tcg}/lm32/test_eret.S | 0
> tests/{ => tcg}/lm32/test_lb.S | 0
> tests/{ => tcg}/lm32/test_lbu.S | 0
> tests/{ => tcg}/lm32/test_lh.S | 0
> tests/{ => tcg}/lm32/test_lhu.S | 0
> tests/{ => tcg}/lm32/test_lw.S | 0
> tests/{ => tcg}/lm32/test_modu.S | 0
> tests/{ => tcg}/lm32/test_mul.S | 0
> tests/{ => tcg}/lm32/test_muli.S | 0
> tests/{ => tcg}/lm32/test_nor.S | 0
> tests/{ => tcg}/lm32/test_nori.S | 0
> tests/{ => tcg}/lm32/test_or.S | 0
> tests/{ => tcg}/lm32/test_orhi.S | 0
> tests/{ => tcg}/lm32/test_ori.S | 0
> tests/{ => tcg}/lm32/test_ret.S | 0
> tests/{ => tcg}/lm32/test_sb.S | 0
> tests/{ => tcg}/lm32/test_scall.S | 0
> tests/{ => tcg}/lm32/test_sextb.S | 0
> tests/{ => tcg}/lm32/test_sexth.S | 0
> tests/{ => tcg}/lm32/test_sh.S | 0
> tests/{ => tcg}/lm32/test_sl.S | 0
> tests/{ => tcg}/lm32/test_sli.S | 0
> tests/{ => tcg}/lm32/test_sr.S | 0
> tests/{ => tcg}/lm32/test_sri.S | 0
> tests/{ => tcg}/lm32/test_sru.S | 0
> tests/{ => tcg}/lm32/test_srui.S | 0
> tests/{ => tcg}/lm32/test_sub.S | 0
> tests/{ => tcg}/lm32/test_sw.S | 0
> tests/{ => tcg}/lm32/test_xnor.S | 0
> tests/{ => tcg}/lm32/test_xnori.S | 0
> tests/{ => tcg}/lm32/test_xor.S | 0
> tests/{ => tcg}/lm32/test_xori.S | 0
> tests/{ => tcg}/pi_10.com | Bin 54 -> 54 bytes
> tests/{ => tcg}/runcom.c | 0
> tests/{ => tcg}/sha1.c | 0
> tests/{ => tcg}/test-arm-iwmmxt.s | 0
> tests/{ => tcg}/test-i386-code16.S | 0
> tests/{ => tcg}/test-i386-muldiv.h | 0
> tests/{ => tcg}/test-i386-shift.h | 0
> tests/{ => tcg}/test-i386-ssse3.c | 0
> tests/{ => tcg}/test-i386-vm86.S | 0
> tests/{ => tcg}/test-i386.c | 0
> tests/{ => tcg}/test-i386.h | 0
> tests/{ => tcg}/test-mmap.c | 0
> tests/{ => tcg}/test_path.c | 0
> tests/{ => tcg}/testthread.c | 0
> tests/{ => tcg}/xtensa/Makefile | 0
> tests/{ => tcg}/xtensa/crt.S | 0
> tests/{ => tcg}/xtensa/linker.ld | 0
> tests/{ => tcg}/xtensa/macros.inc | 0
> tests/{ => tcg}/xtensa/test_b.S | 0
> tests/{ => tcg}/xtensa/test_bi.S | 0
> tests/{ => tcg}/xtensa/test_boolean.S | 0
> tests/{ => tcg}/xtensa/test_bz.S | 0
> tests/{ => tcg}/xtensa/test_clamps.S | 0
> tests/{ => tcg}/xtensa/test_fail.S | 0
> tests/{ => tcg}/xtensa/test_interrupt.S | 0
> tests/{ => tcg}/xtensa/test_loop.S | 0
> tests/{ => tcg}/xtensa/test_mac16.S | 0
> tests/{ => tcg}/xtensa/test_max.S | 0
> tests/{ => tcg}/xtensa/test_min.S | 0
> tests/{ => tcg}/xtensa/test_mmu.S | 0
> tests/{ => tcg}/xtensa/test_mul16.S | 0
> tests/{ => tcg}/xtensa/test_mul32.S | 0
> tests/{ => tcg}/xtensa/test_nsa.S | 0
> tests/{ => tcg}/xtensa/test_pipeline.S | 0
> tests/{ => tcg}/xtensa/test_quo.S | 0
> tests/{ => tcg}/xtensa/test_rem.S | 0
> tests/{ => tcg}/xtensa/test_rst0.S | 0
> tests/{ => tcg}/xtensa/test_sar.S | 0
> tests/{ => tcg}/xtensa/test_sext.S | 0
> tests/{ => tcg}/xtensa/test_shift.S | 0
> tests/{ => tcg}/xtensa/test_timer.S | 0
> tests/{ => tcg}/xtensa/test_windowed.S | 0
> tests/{ => tcg}/xtensa/vectors.S | 0
> 227 files changed, 5 insertions(+), 5 deletions(-)
> rename tests/{ => tcg}/Makefile (100%)
> rename tests/{ => tcg}/alpha/Makefile (100%)
> rename tests/{ => tcg}/alpha/crt.s (100%)
> rename tests/{ => tcg}/alpha/hello-alpha.c (100%)
> rename tests/{ => tcg}/alpha/test-cond.c (100%)
> rename tests/{ => tcg}/alpha/test-ovf.c (100%)
> rename tests/{ => tcg}/cris/.gdbinit (100%)
> rename tests/{ => tcg}/cris/Makefile (100%)
> rename tests/{ => tcg}/cris/README (100%)
> rename tests/{ => tcg}/cris/check_abs.c (100%)
> rename tests/{ => tcg}/cris/check_addc.c (100%)
> rename tests/{ => tcg}/cris/check_addcm.c (100%)
> rename tests/{ => tcg}/cris/check_addi.s (100%)
> rename tests/{ => tcg}/cris/check_addiv32.s (100%)
> rename tests/{ => tcg}/cris/check_addm.s (100%)
> rename tests/{ => tcg}/cris/check_addo.c (100%)
> rename tests/{ => tcg}/cris/check_addoq.c (100%)
> rename tests/{ => tcg}/cris/check_addq.s (100%)
> rename tests/{ => tcg}/cris/check_addr.s (100%)
> rename tests/{ => tcg}/cris/check_addxc.s (100%)
> rename tests/{ => tcg}/cris/check_addxm.s (100%)
> rename tests/{ => tcg}/cris/check_addxr.s (100%)
> rename tests/{ => tcg}/cris/check_andc.s (100%)
> rename tests/{ => tcg}/cris/check_andm.s (100%)
> rename tests/{ => tcg}/cris/check_andq.s (100%)
> rename tests/{ => tcg}/cris/check_andr.s (100%)
> rename tests/{ => tcg}/cris/check_asr.s (100%)
> rename tests/{ => tcg}/cris/check_ba.s (100%)
> rename tests/{ => tcg}/cris/check_bas.s (100%)
> rename tests/{ => tcg}/cris/check_bcc.s (100%)
> rename tests/{ => tcg}/cris/check_bound.c (100%)
> rename tests/{ => tcg}/cris/check_boundc.s (100%)
> rename tests/{ => tcg}/cris/check_boundr.s (100%)
> rename tests/{ => tcg}/cris/check_btst.s (100%)
> rename tests/{ => tcg}/cris/check_clearfv32.s (100%)
> rename tests/{ => tcg}/cris/check_clrjmp1.s (100%)
> rename tests/{ => tcg}/cris/check_cmp-2.s (100%)
> rename tests/{ => tcg}/cris/check_cmpc.s (100%)
> rename tests/{ => tcg}/cris/check_cmpm.s (100%)
> rename tests/{ => tcg}/cris/check_cmpq.s (100%)
> rename tests/{ => tcg}/cris/check_cmpr.s (100%)
> rename tests/{ => tcg}/cris/check_cmpxc.s (100%)
> rename tests/{ => tcg}/cris/check_cmpxm.s (100%)
> rename tests/{ => tcg}/cris/check_dstep.s (100%)
> rename tests/{ => tcg}/cris/check_ftag.c (100%)
> rename tests/{ => tcg}/cris/check_gcctorture_pr28634-1.c (100%)
> rename tests/{ => tcg}/cris/check_gcctorture_pr28634.c (100%)
> rename tests/{ => tcg}/cris/check_glibc_kernelversion.c (100%)
> rename tests/{ => tcg}/cris/check_hello.c (100%)
> rename tests/{ => tcg}/cris/check_int64.c (100%)
> rename tests/{ => tcg}/cris/check_jsr.s (100%)
> rename tests/{ => tcg}/cris/check_lapc.s (100%)
> rename tests/{ => tcg}/cris/check_lsl.s (100%)
> rename tests/{ => tcg}/cris/check_lsr.s (100%)
> rename tests/{ => tcg}/cris/check_lz.c (100%)
> rename tests/{ => tcg}/cris/check_mapbrk.c (100%)
> rename tests/{ => tcg}/cris/check_mcp.s (100%)
> rename tests/{ => tcg}/cris/check_mmap1.c (100%)
> rename tests/{ => tcg}/cris/check_mmap2.c (100%)
> rename tests/{ => tcg}/cris/check_mmap3.c (100%)
> rename tests/{ => tcg}/cris/check_movdelsr1.s (100%)
> rename tests/{ => tcg}/cris/check_movecr.s (100%)
> rename tests/{ => tcg}/cris/check_movei.s (100%)
> rename tests/{ => tcg}/cris/check_movemr.s (100%)
> rename tests/{ => tcg}/cris/check_movemrv32.s (100%)
> rename tests/{ => tcg}/cris/check_moveq.c (100%)
> rename tests/{ => tcg}/cris/check_mover.s (100%)
> rename tests/{ => tcg}/cris/check_moverm.s (100%)
> rename tests/{ => tcg}/cris/check_movmp.s (100%)
> rename tests/{ => tcg}/cris/check_movpmv32.s (100%)
> rename tests/{ => tcg}/cris/check_movpr.s (100%)
> rename tests/{ => tcg}/cris/check_movprv32.s (100%)
> rename tests/{ => tcg}/cris/check_movscr.s (100%)
> rename tests/{ => tcg}/cris/check_movsm.s (100%)
> rename tests/{ => tcg}/cris/check_movsr.s (100%)
> rename tests/{ => tcg}/cris/check_movucr.s (100%)
> rename tests/{ => tcg}/cris/check_movum.s (100%)
> rename tests/{ => tcg}/cris/check_movur.s (100%)
> rename tests/{ => tcg}/cris/check_mulv32.s (100%)
> rename tests/{ => tcg}/cris/check_mulx.s (100%)
> rename tests/{ => tcg}/cris/check_neg.s (100%)
> rename tests/{ => tcg}/cris/check_not.s (100%)
> rename tests/{ => tcg}/cris/check_openpf1.c (100%)
> rename tests/{ => tcg}/cris/check_openpf2.c (100%)
> rename tests/{ => tcg}/cris/check_openpf3.c (100%)
> rename tests/{ => tcg}/cris/check_openpf4.c (100%)
> rename tests/{ => tcg}/cris/check_openpf5.c (100%)
> rename tests/{ => tcg}/cris/check_orc.s (100%)
> rename tests/{ => tcg}/cris/check_orm.s (100%)
> rename tests/{ => tcg}/cris/check_orq.s (100%)
> rename tests/{ => tcg}/cris/check_orr.s (100%)
> rename tests/{ => tcg}/cris/check_ret.s (100%)
> rename tests/{ => tcg}/cris/check_scc.s (100%)
> rename tests/{ => tcg}/cris/check_settls1.c (100%)
> rename tests/{ => tcg}/cris/check_sigalrm.c (100%)
> rename tests/{ => tcg}/cris/check_stat1.c (100%)
> rename tests/{ => tcg}/cris/check_stat2.c (100%)
> rename tests/{ => tcg}/cris/check_stat3.c (100%)
> rename tests/{ => tcg}/cris/check_stat4.c (100%)
> rename tests/{ => tcg}/cris/check_subc.s (100%)
> rename tests/{ => tcg}/cris/check_subm.s (100%)
> rename tests/{ => tcg}/cris/check_subq.s (100%)
> rename tests/{ => tcg}/cris/check_subr.s (100%)
> rename tests/{ => tcg}/cris/check_swap.c (100%)
> rename tests/{ => tcg}/cris/check_time1.c (100%)
> rename tests/{ => tcg}/cris/check_time2.c (100%)
> rename tests/{ => tcg}/cris/check_xarith.s (100%)
> rename tests/{ => tcg}/cris/crisutils.h (100%)
> rename tests/{ => tcg}/cris/crt.s (100%)
> rename tests/{ => tcg}/cris/sys.c (100%)
> rename tests/{ => tcg}/cris/sys.h (100%)
> rename tests/{ => tcg}/cris/testutils.inc (100%)
> rename tests/{ => tcg}/hello-arm.c (100%)
> rename tests/{ => tcg}/hello-i386.c (100%)
> rename tests/{ => tcg}/hello-mips.c (100%)
> rename tests/{ => tcg}/linux-test.c (100%)
> rename tests/{ => tcg}/lm32/Makefile (100%)
> rename tests/{ => tcg}/lm32/crt.S (100%)
> rename tests/{ => tcg}/lm32/linker.ld (100%)
> rename tests/{ => tcg}/lm32/macros.inc (100%)
> rename tests/{ => tcg}/lm32/test_add.S (100%)
> rename tests/{ => tcg}/lm32/test_addi.S (100%)
> rename tests/{ => tcg}/lm32/test_and.S (100%)
> rename tests/{ => tcg}/lm32/test_andhi.S (100%)
> rename tests/{ => tcg}/lm32/test_andi.S (100%)
> rename tests/{ => tcg}/lm32/test_b.S (100%)
> rename tests/{ => tcg}/lm32/test_be.S (100%)
> rename tests/{ => tcg}/lm32/test_bg.S (100%)
> rename tests/{ => tcg}/lm32/test_bge.S (100%)
> rename tests/{ => tcg}/lm32/test_bgeu.S (100%)
> rename tests/{ => tcg}/lm32/test_bgu.S (100%)
> rename tests/{ => tcg}/lm32/test_bi.S (100%)
> rename tests/{ => tcg}/lm32/test_bne.S (100%)
> rename tests/{ => tcg}/lm32/test_break.S (100%)
> rename tests/{ => tcg}/lm32/test_bret.S (100%)
> rename tests/{ => tcg}/lm32/test_call.S (100%)
> rename tests/{ => tcg}/lm32/test_calli.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpe.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpei.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpg.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpge.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgei.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgeu.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgeui.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgi.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgu.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpgui.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpne.S (100%)
> rename tests/{ => tcg}/lm32/test_cmpnei.S (100%)
> rename tests/{ => tcg}/lm32/test_divu.S (100%)
> rename tests/{ => tcg}/lm32/test_eret.S (100%)
> rename tests/{ => tcg}/lm32/test_lb.S (100%)
> rename tests/{ => tcg}/lm32/test_lbu.S (100%)
> rename tests/{ => tcg}/lm32/test_lh.S (100%)
> rename tests/{ => tcg}/lm32/test_lhu.S (100%)
> rename tests/{ => tcg}/lm32/test_lw.S (100%)
> rename tests/{ => tcg}/lm32/test_modu.S (100%)
> rename tests/{ => tcg}/lm32/test_mul.S (100%)
> rename tests/{ => tcg}/lm32/test_muli.S (100%)
> rename tests/{ => tcg}/lm32/test_nor.S (100%)
> rename tests/{ => tcg}/lm32/test_nori.S (100%)
> rename tests/{ => tcg}/lm32/test_or.S (100%)
> rename tests/{ => tcg}/lm32/test_orhi.S (100%)
> rename tests/{ => tcg}/lm32/test_ori.S (100%)
> rename tests/{ => tcg}/lm32/test_ret.S (100%)
> rename tests/{ => tcg}/lm32/test_sb.S (100%)
> rename tests/{ => tcg}/lm32/test_scall.S (100%)
> rename tests/{ => tcg}/lm32/test_sextb.S (100%)
> rename tests/{ => tcg}/lm32/test_sexth.S (100%)
> rename tests/{ => tcg}/lm32/test_sh.S (100%)
> rename tests/{ => tcg}/lm32/test_sl.S (100%)
> rename tests/{ => tcg}/lm32/test_sli.S (100%)
> rename tests/{ => tcg}/lm32/test_sr.S (100%)
> rename tests/{ => tcg}/lm32/test_sri.S (100%)
> rename tests/{ => tcg}/lm32/test_sru.S (100%)
> rename tests/{ => tcg}/lm32/test_srui.S (100%)
> rename tests/{ => tcg}/lm32/test_sub.S (100%)
> rename tests/{ => tcg}/lm32/test_sw.S (100%)
> rename tests/{ => tcg}/lm32/test_xnor.S (100%)
> rename tests/{ => tcg}/lm32/test_xnori.S (100%)
> rename tests/{ => tcg}/lm32/test_xor.S (100%)
> rename tests/{ => tcg}/lm32/test_xori.S (100%)
> rename tests/{ => tcg}/pi_10.com (100%)
> rename tests/{ => tcg}/runcom.c (100%)
> rename tests/{ => tcg}/sha1.c (100%)
> rename tests/{ => tcg}/test-arm-iwmmxt.s (100%)
> rename tests/{ => tcg}/test-i386-code16.S (100%)
> rename tests/{ => tcg}/test-i386-muldiv.h (100%)
> rename tests/{ => tcg}/test-i386-shift.h (100%)
> rename tests/{ => tcg}/test-i386-ssse3.c (100%)
> rename tests/{ => tcg}/test-i386-vm86.S (100%)
> rename tests/{ => tcg}/test-i386.c (100%)
> rename tests/{ => tcg}/test-i386.h (100%)
> rename tests/{ => tcg}/test-mmap.c (100%)
> rename tests/{ => tcg}/test_path.c (100%)
> rename tests/{ => tcg}/testthread.c (100%)
> rename tests/{ => tcg}/xtensa/Makefile (100%)
> rename tests/{ => tcg}/xtensa/crt.S (100%)
> rename tests/{ => tcg}/xtensa/linker.ld (100%)
> rename tests/{ => tcg}/xtensa/macros.inc (100%)
> rename tests/{ => tcg}/xtensa/test_b.S (100%)
> rename tests/{ => tcg}/xtensa/test_bi.S (100%)
> rename tests/{ => tcg}/xtensa/test_boolean.S (100%)
> rename tests/{ => tcg}/xtensa/test_bz.S (100%)
> rename tests/{ => tcg}/xtensa/test_clamps.S (100%)
> rename tests/{ => tcg}/xtensa/test_fail.S (100%)
> rename tests/{ => tcg}/xtensa/test_interrupt.S (100%)
> rename tests/{ => tcg}/xtensa/test_loop.S (100%)
> rename tests/{ => tcg}/xtensa/test_mac16.S (100%)
> rename tests/{ => tcg}/xtensa/test_max.S (100%)
> rename tests/{ => tcg}/xtensa/test_min.S (100%)
> rename tests/{ => tcg}/xtensa/test_mmu.S (100%)
> rename tests/{ => tcg}/xtensa/test_mul16.S (100%)
> rename tests/{ => tcg}/xtensa/test_mul32.S (100%)
> rename tests/{ => tcg}/xtensa/test_nsa.S (100%)
> rename tests/{ => tcg}/xtensa/test_pipeline.S (100%)
> rename tests/{ => tcg}/xtensa/test_quo.S (100%)
> rename tests/{ => tcg}/xtensa/test_rem.S (100%)
> rename tests/{ => tcg}/xtensa/test_rst0.S (100%)
> rename tests/{ => tcg}/xtensa/test_sar.S (100%)
> rename tests/{ => tcg}/xtensa/test_sext.S (100%)
> rename tests/{ => tcg}/xtensa/test_shift.S (100%)
> rename tests/{ => tcg}/xtensa/test_timer.S (100%)
> rename tests/{ => tcg}/xtensa/test_windowed.S (100%)
> rename tests/{ => tcg}/xtensa/vectors.S (100%)
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment
2012-01-09 15:56 ` [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment Anthony Liguori
@ 2012-01-09 19:23 ` Andreas Färber
2012-01-09 19:38 ` Anthony Liguori
0 siblings, 1 reply; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 19:23 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Am 09.01.2012 16:56, schrieb Anthony Liguori:
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
> Makefile | 31 ++-----------------------------
> tests/Makefile | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+), 29 deletions(-)
> create mode 100644 tests/Makefile
>
> diff --git a/Makefile b/Makefile
> index 0cbe7c2..80fb512 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -162,32 +162,14 @@ fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
> qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
> $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
>
> -check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
> -
> -check-qint: check-qint.o qint.o $(tools-obj-y)
> -check-qstring: check-qstring.o qstring.o $(tools-obj-y)
> -check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qlist.o $(tools-obj-y)
> -check-qlist: check-qlist.o qlist.o qint.o $(tools-obj-y)
> -check-qfloat: check-qfloat.o qfloat.o $(tools-obj-y)
> -check-qjson: check-qjson.o $(qobject-obj-y) $(tools-obj-y)
> -test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y) $(tools-obj-y)
> -
> $(qapi-obj-y): $(GENERATED_HEADERS)
> qapi-dir := $(BUILD_DIR)/qapi-generated
> -test-qmp-input-visitor.o test-qmp-output-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
> +
> qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
>
> gen-out-type = $(subst .,-,$@)
>
> -$(qapi-dir)/test-qapi-types.c $(qapi-dir)/test-qapi-types.h :\
> -$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
> - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
> -$(qapi-dir)/test-qapi-visit.c $(qapi-dir)/test-qapi-visit.h :\
> -$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py
> - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
> -$(qapi-dir)/test-qmp-commands.h $(qapi-dir)/test-qmp-marshal.c :\
> -$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py
> - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
> +include $(SRC_PATH)/tests/Makefile
>
> $(qapi-dir)/qga-qapi-types.c $(qapi-dir)/qga-qapi-types.h :\
> $(SRC_PATH)/qapi-schema-guest.json $(SRC_PATH)/scripts/qapi-types.py
> @@ -209,15 +191,6 @@ qmp-commands.h qmp-marshal.c :\
> $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py
> $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -m -o "." < $<, " GEN $@")
>
> -test-qmp-output-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
> -test-qmp-output-visitor: test-qmp-output-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
> -
> -test-qmp-input-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
> -test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
> -
> -test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
> -test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
> -
> QGALIB_OBJ=$(addprefix $(qapi-dir)/, qga-qapi-types.o qga-qapi-visit.o qga-qmp-marshal.o)
> QGALIB_GEN=$(addprefix $(qapi-dir)/, qga-qapi-types.h qga-qapi-visit.h qga-qmp-commands.h)
> $(QGALIB_OBJ): $(QGALIB_GEN) $(GENERATED_HEADERS)
> diff --git a/tests/Makefile b/tests/Makefile
> new file mode 100644
> index 0000000..c11d980
> --- /dev/null
> +++ b/tests/Makefile
> @@ -0,0 +1,31 @@
> +check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
> +
> +check-qint: check-qint.o qint.o $(tools-obj-y)
> +check-qstring: check-qstring.o qstring.o $(tools-obj-y)
> +check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qlist.o $(tools-obj-y)
> +check-qlist: check-qlist.o qlist.o qint.o $(tools-obj-y)
> +check-qfloat: check-qfloat.o qfloat.o $(tools-obj-y)
> +check-qjson: check-qjson.o $(qobject-obj-y) $(tools-obj-y)
> +test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y) $(tools-obj-y)
> +
> +test-qmp-input-visitor.o test-qmp-output-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
> +
> +$(qapi-dir)/test-qapi-types.c $(qapi-dir)/test-qapi-types.h :\
> +$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
> +$(qapi-dir)/test-qapi-visit.c $(qapi-dir)/test-qapi-visit.h :\
> +$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py
> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
> +$(qapi-dir)/test-qmp-commands.h $(qapi-dir)/test-qmp-marshal.c :\
> +$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py
> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o "$(qapi-dir)" -p "test-" < $<, " GEN $@")
> +
> +test-qmp-output-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
> +test-qmp-output-visitor: test-qmp-output-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
> +
> +test-qmp-input-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
> +test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
> +
> +test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
> +test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
> +
Would be nice if we could recurse into tests/ subdir... If you don't
want that, please rename the file so that it is obvious.
Also, the new Makefile probably needs to be added to $FILES in configure
for out-of-tree builds?
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest
2012-01-09 15:56 ` [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest Anthony Liguori
2012-01-09 18:27 ` Luiz Capitulino
@ 2012-01-09 19:26 ` Andreas Färber
2012-01-09 19:39 ` Anthony Liguori
1 sibling, 1 reply; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 19:26 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Am 09.01.2012 16:56, schrieb Anthony Liguori:
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
> Makefile | 6 --
> check-qdict.c | 246 +++++++++++++++++++++++++-------------------------------
> configure | 4 +-
> tests/Makefile | 6 ++
> 4 files changed, 119 insertions(+), 143 deletions(-)
> diff --git a/Makefile b/Makefile
> index 80fb512..4823144 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -294,12 +294,6 @@ endif
> test speed: all
> $(MAKE) -C tests/tcg $@
>
> -.PHONY: check
> -check: $(patsubst %,run-check-%,$(CHECKS))
> -
> -run-check-%: %
> - ./$<
> -
> .PHONY: TAGS
> TAGS:
> find "$(SRC_PATH)" -name '*.[hc]' -print0 | xargs -0 etags
> diff --git a/tests/Makefile b/tests/Makefile
> index c11d980..cff9ff3 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -29,3 +29,9 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
> test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>
> +.PHONY: check
> +check: $(patsubst %,run-check-%,$(CHECKS))
> +
> +run-check-%: %
> + ./$<
> +
These should be squashed into 02/11. Unrelated to check-qdict.
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 17:47 ` Paul Brook
@ 2012-01-09 19:28 ` Anthony Liguori
2012-01-09 20:57 ` Andreas Färber
0 siblings, 1 reply; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 19:28 UTC (permalink / raw)
To: Paul Brook
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Daniel Gollub, Luiz Capitulino, Venkateswararao Jujjuri (JV),
Richard Henderson, Kevin Wolf, Vassili Karpov (malc),
Marcelo Tosatti, Michael Walle, Amit Shah, Paolo Bonzini,
Aurelien Jarno
On 01/09/2012 11:47 AM, Paul Brook wrote:
>> I'm going to apply this series quickly and will start running 'make
>> check-quick' as part a sniff test before pushing patches.
>>
>> I'd like to request that all maintainers/submaintainers do the same and
>> that everyone contributes unit tests to this target.
>>
>> The general rules for 'make check-quick':
>>
>> 1) It must complete in less than 10 minutes start to finish (the entire
>> rule). We can re-examine this over time but for now, it seems like a
>> reasonable limit.
>
> No objection in principle, though I'm a bit unclear on the guidelines.
> In particular:
>
> - 10 minutes on what hardware? 10 minutes on one of my fat build machines is
> an hour on an average year-old laptop/desktop, and I guess 6+ hours on the
> netbook I use when travelling. Maybe relating this to the time taken to do a
> clean build would make more sense?
10 minutes on my laptop. It's a soft rule and is meant to give people an idea
of what to target.
gtest has a set of functions to use to select run profiles (quick, slow,
thorough, etc.). It's just a matter of making sure that you don't add anything
ridiculous to the quick profile.
We can tweak the profiles over time
>
> - What level of testing is appropriate? As a maintainer when can/should I
> bounce a patch due to lack of tests?
Yes.
> e.g should new device emulation come with
> unit tests? New infrastructure? What about fixes to both of the above, should
> these include regression tests?
There's a careful balance that we're going to need to work out over time. We
need to balance test coverage with setting reasonable criteria for patch inclusion.
We're still short on infrastructure right now so I expect that a lot of stuff
will get merged without tests at first. As we get more test infrastructure like
qtest and qemu-test, I expect that to change.
In terms of total coverage for any given feature, I think ultimately the goal is
to move the responsibility for regression testing from the contributors of new
features to the subsystems themselves.
IOW, after we get going with our test infrastructure, when we do big sweeping
changes like the memory API or QOM, I will have much less sympathy for breakages
that are caused by subsystems with an incomplete test suite.
So I think the most important thing for maintainers to start thinking about is
how they can add the necessary infrastructure for testing their subsystems.
> Given the size of the test surface for many
> components (in particular emulated CPUs), I'm guessing we're looking at
> extremely basic smoke-tests. Consistent regression tests or any sort of
> architecture conformance tests are going to completely blow your time budget.
Right, testing is a cost that should be minimized. Ultimately, the right
testing investment is something like the amount of hours that you would have
spent fixing introduced regressions multiplied by the impact of the regression
appear in the first place. That's not an easy formula to use for prediction :-)
That probably means that for subsystems that are well isolated and not in
anyone's critical path, not a lot of test infrastructure is practical.
> Obviously level of testing is always a bit of a judgement call - anyone who
> claims of have complete test coverage is either lying or writing trivially
> uninteresting code. However given qemu has historically had zero active test
> coverage I'd appreciate some guidance (as both maintainers and contrubutor).
We're going to have to strike a balance. To start with, I'd recommend enforcing
at least sniff tests. We'll get a huge return on investment with a reasonable
set of sniff tests. Longer term, we're going to have to just wait and see at
what point the ROI starts to diminish significantly.
Regards,
Anthony Liguori
> Paul
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester
2012-01-09 15:56 ` [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester Anthony Liguori
@ 2012-01-09 19:35 ` Andreas Färber
2012-01-10 9:17 ` Gerd Hoffmann
1 sibling, 0 replies; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 19:35 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Am 09.01.2012 16:56, schrieb Anthony Liguori:
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
> configure | 33 +--------------------------------
> tests/Makefile | 11 ++++++-----
> 2 files changed, 7 insertions(+), 37 deletions(-)
> diff --git a/tests/Makefile b/tests/Makefile
> index cff9ff3..cba482f 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -1,3 +1,7 @@
> +CHECKS=check-qdict check-qfloat check-qint check-qstring check-qlist
> +CHECKS+=check-qjson test-coroutine test-qmp-output-visitor
> +CHECKS+=test-qmp-input-visitor
I think we're using
VAR = value1 value2
VAR += value3 value4
elsewhere (e.g., Makefile.objs), which resembles our Coding Style.
Might it make sense to put coroutine on its own line (so that one can
comment it out) and semantically group the QMP visitors into one line
instead?
Otherwise very nice. Looking forward to using gtester with qtest.
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest
2012-01-09 19:15 ` Anthony Liguori
@ 2012-01-09 19:37 ` Luiz Capitulino
0 siblings, 0 replies; 40+ messages in thread
From: Luiz Capitulino @ 2012-01-09 19:37 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel
On Mon, 09 Jan 2012 13:15:27 -0600
Anthony Liguori <aliguori@us.ibm.com> wrote:
> On 01/09/2012 12:27 PM, Luiz Capitulino wrote:
> >> -START_TEST(qdict_put_obj_test)
> >> +static void qdict_put_obj_test(void)
> >> {
> >> QInt *qi;
> >> QDict *qdict;
> >> @@ -49,10 +48,10 @@ START_TEST(qdict_put_obj_test)
> >> // key "" will have tdb hash 12345
> >> qdict_put_obj(qdict, "", QOBJECT(qint_from_int(num)));
> >>
> >> - fail_unless(qdict_size(qdict) == 1);
> >> + g_assert(qdict_size(qdict) == 1);
> >> ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);
> >> qi = qobject_to_qint(ent->value);
> >> - fail_unless(qint_get_int(qi) == num);
> >> + g_assert(qint_get_int(qi) == num);
> >
> > Would be nice to use g_assert_cmpint()& friends, but I can do it later...
>
> Yup.
>
> >> -static QDict *tests_dict = NULL;
> >> -
> >> -static void qdict_setup(void)
> >> -{
> >> - tests_dict = qdict_new();
> >> - fail_unless(tests_dict != NULL);
> >> -}
> >>
> >> -static void qdict_teardown(void)
> >> -{
> >> - QDECREF(tests_dict);
> >> - tests_dict = NULL;
> >> -}
> >> -
> >
> > Why not use setup/teardown in the gtest version too? This is not hugely
> > important, but I don't see why duplicate the code in all tests either.
>
> Mainly because an emacs macro actually did the conversion so it was easier to
> make everything look the same and then run the macro. It didn't seem
> significant enough to worry that much about.
>
> But of course, we can change it after the fact too.
>
> > Also, wouldn't be better to rename this to test-qdict (and the others too)?
>
> Yes, but we should also find a sane way to express the build rules. Right now,
> it's a major hassle to figure out what unit tests need to link against.
>
> I figure that in the not too distant future, I'll take a pass at the build rules
> and along the way, rename everything so we can have an implicit rule like:
>
> test-%: test-%.o $(test-objs-y)
>
> But I don't know yet what that rule is going to look like so I think we should
> wait to do the rename.
Fine with me.
>
> Regards,
>
> Anthony Liguori
>
> > Otherwise the whole series look good, you can add:
> >
> > Reviewed-by: Luiz Capitulino<lcapitulino@redhat.com>
> >
> > If you think it's worth it.
> >
> >> -START_TEST(qdict_get_test)
> >> +static void qdict_get_test(void)
> >> {
> >> QInt *qi;
> >> QObject *obj;
> >> const int value = -42;
> >> const char *key = "test";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qint_from_int(value));
> >>
> >> obj = qdict_get(tests_dict, key);
> >> - fail_unless(obj != NULL);
> >> + g_assert(obj != NULL);
> >>
> >> qi = qobject_to_qint(obj);
> >> - fail_unless(qint_get_int(qi) == value);
> >> + g_assert(qint_get_int(qi) == value);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_get_int_test)
> >> +static void qdict_get_int_test(void)
> >> {
> >> int ret;
> >> const int value = 100;
> >> const char *key = "int";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qint_from_int(value));
> >>
> >> ret = qdict_get_int(tests_dict, key);
> >> - fail_unless(ret == value);
> >> + g_assert(ret == value);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_get_try_int_test)
> >> +static void qdict_get_try_int_test(void)
> >> {
> >> int ret;
> >> const int value = 100;
> >> const char *key = "int";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qint_from_int(value));
> >>
> >> ret = qdict_get_try_int(tests_dict, key, 0);
> >> - fail_unless(ret == value);
> >> + g_assert(ret == value);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_get_str_test)
> >> +static void qdict_get_str_test(void)
> >> {
> >> const char *p;
> >> const char *key = "key";
> >> const char *str = "string";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qstring_from_str(str));
> >>
> >> p = qdict_get_str(tests_dict, key);
> >> - fail_unless(p != NULL);
> >> - fail_unless(strcmp(p, str) == 0);
> >> + g_assert(p != NULL);
> >> + g_assert(strcmp(p, str) == 0);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_get_try_str_test)
> >> +static void qdict_get_try_str_test(void)
> >> {
> >> const char *p;
> >> const char *key = "key";
> >> const char *str = "string";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qstring_from_str(str));
> >>
> >> p = qdict_get_try_str(tests_dict, key);
> >> - fail_unless(p != NULL);
> >> - fail_unless(strcmp(p, str) == 0);
> >> + g_assert(p != NULL);
> >> + g_assert(strcmp(p, str) == 0);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_haskey_not_test)
> >> +static void qdict_haskey_not_test(void)
> >> {
> >> - fail_unless(qdict_haskey(tests_dict, "test") == 0);
> >> + QDict *tests_dict = qdict_new();
> >> + g_assert(qdict_haskey(tests_dict, "test") == 0);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_haskey_test)
> >> +static void qdict_haskey_test(void)
> >> {
> >> const char *key = "test";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qint_from_int(0));
> >> - fail_unless(qdict_haskey(tests_dict, key) == 1);
> >> + g_assert(qdict_haskey(tests_dict, key) == 1);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_del_test)
> >> +static void qdict_del_test(void)
> >> {
> >> const char *key = "key test";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qstring_from_str("foo"));
> >> - fail_unless(qdict_size(tests_dict) == 1);
> >> + g_assert(qdict_size(tests_dict) == 1);
> >>
> >> qdict_del(tests_dict, key);
> >>
> >> - fail_unless(qdict_size(tests_dict) == 0);
> >> - fail_unless(qdict_haskey(tests_dict, key) == 0);
> >> + g_assert(qdict_size(tests_dict) == 0);
> >> + g_assert(qdict_haskey(tests_dict, key) == 0);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qobject_to_qdict_test)
> >> +static void qobject_to_qdict_test(void)
> >> {
> >> - fail_unless(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
> >> + QDict *tests_dict = qdict_new();
> >> + g_assert(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_iterapi_test)
> >> +static void qdict_iterapi_test(void)
> >> {
> >> int count;
> >> const QDictEntry *ent;
> >> + QDict *tests_dict = qdict_new();
> >>
> >> - fail_unless(qdict_first(tests_dict) == NULL);
> >> + g_assert(qdict_first(tests_dict) == NULL);
> >>
> >> qdict_put(tests_dict, "key1", qint_from_int(1));
> >> qdict_put(tests_dict, "key2", qint_from_int(2));
> >> @@ -207,47 +209,52 @@ START_TEST(qdict_iterapi_test)
> >>
> >> count = 0;
> >> for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
> >> - fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> >> + g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> >> count++;
> >> }
> >>
> >> - fail_unless(count == qdict_size(tests_dict));
> >> + g_assert(count == qdict_size(tests_dict));
> >>
> >> /* Do it again to test restarting */
> >> count = 0;
> >> for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
> >> - fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> >> + g_assert(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
> >> count++;
> >> }
> >>
> >> - fail_unless(count == qdict_size(tests_dict));
> >> + g_assert(count == qdict_size(tests_dict));
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> /*
> >> * Errors test-cases
> >> */
> >>
> >> -START_TEST(qdict_put_exists_test)
> >> +static void qdict_put_exists_test(void)
> >> {
> >> int value;
> >> const char *key = "exists";
> >> + QDict *tests_dict = qdict_new();
> >>
> >> qdict_put(tests_dict, key, qint_from_int(1));
> >> qdict_put(tests_dict, key, qint_from_int(2));
> >>
> >> value = qdict_get_int(tests_dict, key);
> >> - fail_unless(value == 2);
> >> + g_assert(value == 2);
> >>
> >> - fail_unless(qdict_size(tests_dict) == 1);
> >> + g_assert(qdict_size(tests_dict) == 1);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> -START_TEST(qdict_get_not_exists_test)
> >> +static void qdict_get_not_exists_test(void)
> >> {
> >> - fail_unless(qdict_get(tests_dict, "foo") == NULL);
> >> + QDict *tests_dict = qdict_new();
> >> + g_assert(qdict_get(tests_dict, "foo") == NULL);
> >> +
> >> + QDECREF(tests_dict);
> >> }
> >> -END_TEST
> >>
> >> /*
> >> * Stress test-case
> >> @@ -276,7 +283,7 @@ static QString *read_line(FILE *file, char *key)
> >>
> >> #define reset_file(file) fseek(file, 0L, SEEK_SET)
> >>
> >> -START_TEST(qdict_stress_test)
> >> +static void qdict_stress_test(void)
> >> {
> >> size_t lines;
> >> char key[128];
> >> @@ -286,11 +293,11 @@ START_TEST(qdict_stress_test)
> >> const char *test_file_path = "qdict-test-data.txt";
> >>
> >> test_file = fopen(test_file_path, "r");
> >> - fail_unless(test_file != NULL);
> >> + g_assert(test_file != NULL);
> >>
> >> // Create the dict
> >> qdict = qdict_new();
> >> - fail_unless(qdict != NULL);
> >> + g_assert(qdict != NULL);
> >>
> >> // Add everything from the test file
> >> for (lines = 0;; lines++) {
> >> @@ -300,7 +307,7 @@ START_TEST(qdict_stress_test)
> >>
> >> qdict_put(qdict, key, value);
> >> }
> >> - fail_unless(qdict_size(qdict) == lines);
> >> + g_assert(qdict_size(qdict) == lines);
> >>
> >> // Check if everything is really in there
> >> reset_file(test_file);
> >> @@ -314,9 +321,9 @@ START_TEST(qdict_stress_test)
> >> str1 = qstring_get_str(value);
> >>
> >> str2 = qdict_get_str(qdict, key);
> >> - fail_unless(str2 != NULL);
> >> + g_assert(str2 != NULL);
> >>
> >> - fail_unless(strcmp(str1, str2) == 0);
> >> + g_assert(strcmp(str1, str2) == 0);
> >>
> >> QDECREF(value);
> >> }
> >> @@ -331,72 +338,41 @@ START_TEST(qdict_stress_test)
> >> qdict_del(qdict, key);
> >> QDECREF(value);
> >>
> >> - fail_unless(qdict_haskey(qdict, key) == 0);
> >> + g_assert(qdict_haskey(qdict, key) == 0);
> >> }
> >> fclose(test_file);
> >>
> >> - fail_unless(qdict_size(qdict) == 0);
> >> + g_assert(qdict_size(qdict) == 0);
> >> QDECREF(qdict);
> >> }
> >> -END_TEST
> >>
> >> -static Suite *qdict_suite(void)
> >> +int main(int argc, char **argv)
> >> {
> >> - Suite *s;
> >> - TCase *qdict_public_tcase;
> >> - TCase *qdict_public2_tcase;
> >> - TCase *qdict_stress_tcase;
> >> - TCase *qdict_errors_tcase;
> >> -
> >> - s = suite_create("QDict test-suite");
> >> + g_test_init(&argc,&argv, NULL);
> >>
> >> - qdict_public_tcase = tcase_create("Public Interface");
> >> - suite_add_tcase(s, qdict_public_tcase);
> >> - tcase_add_test(qdict_public_tcase, qdict_new_test);
> >> - tcase_add_test(qdict_public_tcase, qdict_put_obj_test);
> >> - tcase_add_test(qdict_public_tcase, qdict_destroy_simple_test);
> >> + g_test_add_func("/public/new", qdict_new_test);
> >> + g_test_add_func("/public/put_obj", qdict_put_obj_test);
> >> + g_test_add_func("/public/destroy_simple", qdict_destroy_simple_test);
> >>
> >> /* Continue, but now with fixtures */
> >> - qdict_public2_tcase = tcase_create("Public Interface (2)");
> >> - suite_add_tcase(s, qdict_public2_tcase);
> >> - tcase_add_checked_fixture(qdict_public2_tcase, qdict_setup, qdict_teardown);
> >> - tcase_add_test(qdict_public2_tcase, qdict_get_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_get_int_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_get_try_int_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_get_str_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_get_try_str_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_haskey_not_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_haskey_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_del_test);
> >> - tcase_add_test(qdict_public2_tcase, qobject_to_qdict_test);
> >> - tcase_add_test(qdict_public2_tcase, qdict_iterapi_test);
> >> -
> >> - qdict_errors_tcase = tcase_create("Errors");
> >> - suite_add_tcase(s, qdict_errors_tcase);
> >> - tcase_add_checked_fixture(qdict_errors_tcase, qdict_setup, qdict_teardown);
> >> - tcase_add_test(qdict_errors_tcase, qdict_put_exists_test);
> >> - tcase_add_test(qdict_errors_tcase, qdict_get_not_exists_test);
> >> + g_test_add_func("/public/get", qdict_get_test);
> >> + g_test_add_func("/public/get_int", qdict_get_int_test);
> >> + g_test_add_func("/public/get_try_int", qdict_get_try_int_test);
> >> + g_test_add_func("/public/get_str", qdict_get_str_test);
> >> + g_test_add_func("/public/get_try_str", qdict_get_try_str_test);
> >> + g_test_add_func("/public/haskey_not", qdict_haskey_not_test);
> >> + g_test_add_func("/public/haskey", qdict_haskey_test);
> >> + g_test_add_func("/public/del", qdict_del_test);
> >> + g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
> >> + g_test_add_func("/public/iterapi", qdict_iterapi_test);
> >> +
> >> + g_test_add_func("/errors/put_exists", qdict_put_exists_test);
> >> + g_test_add_func("/errors/get_not_exists", qdict_get_not_exists_test);
> >>
> >> /* The Big one */
> >> - qdict_stress_tcase = tcase_create("Stress Test");
> >> - suite_add_tcase(s, qdict_stress_tcase);
> >> - tcase_add_test(qdict_stress_tcase, qdict_stress_test);
> >> -
> >> - return s;
> >> -}
> >> -
> >> -int main(void)
> >> -{
> >> - int nf;
> >> - Suite *s;
> >> - SRunner *sr;
> >> -
> >> - s = qdict_suite();
> >> - sr = srunner_create(s);
> >> -
> >> - srunner_run_all(sr, CK_NORMAL);
> >> - nf = srunner_ntests_failed(sr);
> >> - srunner_free(sr);
> >> + if (g_test_slow()) {
> >> + g_test_add_func("/stress/test", qdict_stress_test);
> >> + }
> >>
> >> - return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
> >> + return g_test_run();
> >> }
> >> diff --git a/configure b/configure
> >> index 79790b3..7e3f28f 100755
> >> --- a/configure
> >> +++ b/configure
> >> @@ -2800,10 +2800,10 @@ if test "$softmmu" = yes ; then
> >> tools="qemu-ga\$(EXESUF) $tools"
> >> fi
> >> if [ "$check_utests" = "yes" ]; then
> >> - checks="check-qint check-qstring check-qdict check-qlist"
> >> + checks="check-qint check-qstring check-qlist"
> >> checks="check-qfloat check-qjson $checks"
> >> fi
> >> - test_progs="$checks test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
> >> + test_progs="$checks check-qdict test-coroutine test-qmp-output-visitor test-qmp-input-visitor"
> >> fi
> >> fi
> >>
> >> diff --git a/tests/Makefile b/tests/Makefile
> >> index c11d980..cff9ff3 100644
> >> --- a/tests/Makefile
> >> +++ b/tests/Makefile
> >> @@ -29,3 +29,9 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
> >> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
> >> test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
> >>
> >> +.PHONY: check
> >> +check: $(patsubst %,run-check-%,$(CHECKS))
> >> +
> >> +run-check-%: %
> >> + ./$<
> >> +
> >
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment
2012-01-09 19:23 ` Andreas Färber
@ 2012-01-09 19:38 ` Anthony Liguori
0 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 19:38 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-devel, Luiz Capitulino
On 01/09/2012 01:23 PM, Andreas Färber wrote:
> Am 09.01.2012 16:56, schrieb Anthony Liguori:
>> diff --git a/tests/Makefile b/tests/Makefile
>> new file mode 100644
>> index 0000000..c11d980
>> --- /dev/null
>> +++ b/tests/Makefile
>> @@ -0,0 +1,31 @@
>> +check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
>> +
>> +check-qint: check-qint.o qint.o $(tools-obj-y)
>> +check-qstring: check-qstring.o qstring.o $(tools-obj-y)
>> +check-qdict: check-qdict.o qdict.o qfloat.o qint.o qstring.o qbool.o qlist.o $(tools-obj-y)
>> +check-qlist: check-qlist.o qlist.o qint.o $(tools-obj-y)
>> +check-qfloat: check-qfloat.o qfloat.o $(tools-obj-y)
>> +check-qjson: check-qjson.o $(qobject-obj-y) $(tools-obj-y)
>> +test-coroutine: test-coroutine.o qemu-timer-common.o async.o $(coroutine-obj-y) $(tools-obj-y)
>> +
>> +test-qmp-input-visitor.o test-qmp-output-visitor.o test-qmp-commands.o qemu-ga$(EXESUF): QEMU_CFLAGS += -I $(qapi-dir)
>> +
>> +$(qapi-dir)/test-qapi-types.c $(qapi-dir)/test-qapi-types.h :\
>> +$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-types.py
>> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py $(gen-out-type) -o "$(qapi-dir)" -p "test-"< $<, " GEN $@")
>> +$(qapi-dir)/test-qapi-visit.c $(qapi-dir)/test-qapi-visit.h :\
>> +$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-visit.py
>> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py $(gen-out-type) -o "$(qapi-dir)" -p "test-"< $<, " GEN $@")
>> +$(qapi-dir)/test-qmp-commands.h $(qapi-dir)/test-qmp-marshal.c :\
>> +$(SRC_PATH)/qapi-schema-test.json $(SRC_PATH)/scripts/qapi-commands.py
>> + $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py $(gen-out-type) -o "$(qapi-dir)" -p "test-"< $<, " GEN $@")
>> +
>> +test-qmp-output-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
>> +test-qmp-output-visitor: test-qmp-output-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
>> +
>> +test-qmp-input-visitor.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h) $(qapi-obj-y)
>> +test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o
>> +
>> +test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
>> +test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>> +
>
> Would be nice if we could recurse into tests/ subdir...
I've looked a lot into how we could make the build system nicer. As best as I
can tell, making good use of recursive make files is very, very difficult to get
right.
I've tried a few times to prototype something and have not been all that successful.
> If you don't
> want that, please rename the file so that it is obvious.
I can do that, I guess. I was going by Linux convention where even the
subdirectory fragments are still called Makefile.
>
> Also, the new Makefile probably needs to be added to $FILES in configure
> for out-of-tree builds?
It doesn't. FILES creates symlinks but this makefile fragment is not directly
buildable so it's not helpful to have it in the build directory
Regards,
Anthony Liguori
>
> Andreas
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest
2012-01-09 19:26 ` Andreas Färber
@ 2012-01-09 19:39 ` Anthony Liguori
0 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 19:39 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-devel, Luiz Capitulino
On 01/09/2012 01:26 PM, Andreas Färber wrote:
> Am 09.01.2012 16:56, schrieb Anthony Liguori:
>> Signed-off-by: Anthony Liguori<aliguori@us.ibm.com>
>> ---
>> Makefile | 6 --
>> check-qdict.c | 246 +++++++++++++++++++++++++-------------------------------
>> configure | 4 +-
>> tests/Makefile | 6 ++
>> 4 files changed, 119 insertions(+), 143 deletions(-)
>
>> diff --git a/Makefile b/Makefile
>> index 80fb512..4823144 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -294,12 +294,6 @@ endif
>> test speed: all
>> $(MAKE) -C tests/tcg $@
>>
>> -.PHONY: check
>> -check: $(patsubst %,run-check-%,$(CHECKS))
>> -
>> -run-check-%: %
>> - ./$<
>> -
>> .PHONY: TAGS
>> TAGS:
>> find "$(SRC_PATH)" -name '*.[hc]' -print0 | xargs -0 etags
>
>> diff --git a/tests/Makefile b/tests/Makefile
>> index c11d980..cff9ff3 100644
>> --- a/tests/Makefile
>> +++ b/tests/Makefile
>> @@ -29,3 +29,9 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
>> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
>> test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>>
>> +.PHONY: check
>> +check: $(patsubst %,run-check-%,$(CHECKS))
>> +
>> +run-check-%: %
>> + ./$<
>> +
>
> These should be squashed into 02/11. Unrelated to check-qdict.
Thanks.
Regards,
Anthony Liguori
>
> Andreas
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
` (2 preceding siblings ...)
2012-01-09 17:47 ` Paul Brook
@ 2012-01-09 20:00 ` Stefan Weil
2012-01-10 8:39 ` Stefan Hajnoczi
4 siblings, 0 replies; 40+ messages in thread
From: Stefan Weil @ 2012-01-09 20:00 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Paul Brook, Daniel Gollub, Luiz Capitulino,
Venkateswararao Jujjuri (JV), Richard Henderson, Kevin Wolf,
Vassili Karpov (malc), Marcelo Tosatti, Michael Walle, Amit Shah,
Paolo Bonzini, Aurelien Jarno
Am 09.01.2012 17:04, schrieb Anthony Liguori:
> Hi,
>
> I'm going to apply this series quickly and will start running 'make
> check-quick' as part a sniff test before pushing patches.
>
> I'd like to request that all maintainers/submaintainers do the same
> and that everyone contributes unit tests to this target.
>
> The general rules for 'make check-quick':
>
> 1) It must complete in less than 10 minutes start to finish (the
> entire rule). We can re-examine this over time but for now, it seems
> like a reasonable limit.
>
> 2) It must gracefully degrade across architectures/targets. Do not
> assume qemu-system-x86_64 is present or that an arm cross compiler is
> available.
>
> It would also be nice to get this integrated as part of buildbot.
> Stefan/Daniel, is that something we can do?
>
> Regards,
>
> Anthony Liguori
Hi,
'make check-quick' sounds unusual for me. I'm not a native speaker,
so I compared the frequency of "check quick" and "quick check"
using Google. 'make quick-check' would sound better, but even
that is a Makefile target which I never saw before.
There is a standard for the commonly used 'make check'
(http://www.gnu.org/prep/standards/html_node/Standard-Targets.html).
I'd stick to that standard and allow users to select the tests
which should be run by Makefile macros. So
make check-quick
could be replaced by
make check TESTS=quick
Macro TESTS could be used to select a list of tests, for example
TESTS=tcg,block,pci or TESTS=mips,s390. The supported keywords
should be similar to the keywords used in MAINTAINERS. Then
committers or maintainers can select which tests are needed
for their commits. Other keywords like 'quick' or 'all' select
a predefined subset or all tests, and individual tests can be
specified by some kind of hierarchical name like for example
'pci/net/e1000'.
Regards,
Stefan Weil
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 11/11] check: add a check-report and check-help target
2012-01-09 15:56 ` [Qemu-devel] [PATCH 11/11] check: add a check-report and check-help target Anthony Liguori
@ 2012-01-09 20:00 ` Andreas Färber
0 siblings, 0 replies; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 20:00 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Am 09.01.2012 16:56, schrieb Anthony Liguori:
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
> tests/Makefile | 43 ++++++++++++++++++++++++++++++++++++++++---
> 1 files changed, 40 insertions(+), 3 deletions(-)
>
> diff --git a/tests/Makefile b/tests/Makefile
> index cba482f..7228f44 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -33,6 +33,43 @@ test-qmp-input-visitor: test-qmp-input-visitor.o $(qobject-obj-y) $(qapi-obj-y)
> test-qmp-commands.o: $(addprefix $(qapi-dir)/, test-qapi-types.c test-qapi-types.h test-qapi-visit.c test-qapi-visit.h test-qmp-marshal.c test-qmp-commands.h) $(qapi-obj-y)
> test-qmp-commands: test-qmp-commands.o $(qobject-obj-y) $(qapi-obj-y) $(tools-obj-y) $(qapi-dir)/test-qapi-visit.o $(qapi-dir)/test-qapi-types.o $(qapi-dir)/test-qmp-marshal.o module.o
>
> -.PHONY: check
> -check: $(CHECKS)
> - gtester $(CHECKS)
> +check: check-quick
> +
> +check-slow: $(CHECKS)
> + gtester -m=slow $(CHECKS)
> +
> +check-quick: $(CHECKS)
> + gtester -m=quick $(CHECKS)
> +
> +check-perf: $(CHECKS)
> + gtester -m=perf $(CHECKS)
> +
> +check-help:
> + @echo "Regression targets:"
> + @echo
> + @echo " make check Alias for 'make check-quick'"
> + @echo " make check-quick Run all unit tests in 'quick' mode"
> + @echo " make check-slow Run all unit tests in 'slow' mode"
> + @echo " make check-perf Run all unit tests in 'perf' mode"
Are these a fixed set of profiles defined by gtester, or are they
arbitrary choices?
quick and slow seem intuitive but 'perf' could use an explanation:
Is 'perf' more performant than quick, or does it measure performance?
(or is it for perfidious test cases?;))
If test cases need to be annotated as slow, describe it in the commit
message?
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 19:28 ` Anthony Liguori
@ 2012-01-09 20:57 ` Andreas Färber
2012-01-09 21:42 ` Anthony Liguori
0 siblings, 1 reply; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 20:57 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Hervé Poussineau,
Avi Kivity, Stefan Hajnoczi, Stefano Stabellini, Stefan Weil,
Riku Voipio, Jan Kiszka, Paul Brook, Paolo Bonzini, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Marcelo Tosatti, Michael Walle, Amit Shah,
Vassili Karpov (malc), Aurelien Jarno
Am 09.01.2012 20:28, schrieb Anthony Liguori:
> On 01/09/2012 11:47 AM, Paul Brook wrote:
>> - What level of testing is appropriate? As a maintainer when can/should I
>> bounce a patch due to lack of tests?
>
> Yes.
Note the "when". :)
>> e.g should new device emulation come with
>> unit tests? New infrastructure? What about fixes to both of the above,
>> should
>> these include regression tests?
>
> There's a careful balance that we're going to need to work out over
> time. We need to balance test coverage with setting reasonable criteria
> for patch inclusion.
Can we interpret that as new API infrastructure for now? As opposed to
devices (needing qtest), TCG (not unified), KVM (autotest), build
infrastructure (manually).
Do you envision also testing scripts? (e.g., simpletrace.py,
checkpatch.pl, tracetool[.py])
> We're still short on infrastructure right now so I expect that a lot of
> stuff will get merged without tests at first. As we get more test
> infrastructure like qtest and qemu-test, I expect that to change.
>
> In terms of total coverage for any given feature, I think ultimately the
> goal is to move the responsibility for regression testing from the
> contributors of new features to the subsystems themselves.
>
> IOW, after we get going with our test infrastructure, when we do big
> sweeping changes like the memory API or QOM, I will have much less
> sympathy for breakages that are caused by subsystems with an incomplete
> test suite.
>
> So I think the most important thing for maintainers to start thinking
> about is how they can add the necessary infrastructure for testing their
> subsystems.
Well, I already tried pointing out that qemu-test in the way previously
proposed does not help catching the recent regressions for PReP.
Neither am I a kernel guru to propose my own JeOS build and testing
framework, nor do I think an abundance of test frameworks merely
orchestrated by a common driver will do us much good...
>From what I understand, qemu-test with building binutils, gcc, linux
would not fit the stated 10 minutes goal.
The intentions here are certainly good, just the process needs some more
thought - or less absoluteness in announcing it. If the infrastructure
we provide in a first step is good and people benefit from using it, we
will gain coverage and supporting infrastructure over time. It's
unlikely to work as a requirement from day one though.
Regards,
Andreas
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 20:57 ` Andreas Färber
@ 2012-01-09 21:42 ` Anthony Liguori
2012-01-09 23:22 ` Andreas Färber
0 siblings, 1 reply; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 21:42 UTC (permalink / raw)
To: Andreas Färber
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Hervé Poussineau,
Avi Kivity, Stefan Hajnoczi, Stefano Stabellini, Stefan Weil,
Riku Voipio, Jan Kiszka, Paul Brook, Paolo Bonzini, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Marcelo Tosatti, Michael Walle, Amit Shah,
Vassili Karpov (malc), Aurelien Jarno
On 01/09/2012 02:57 PM, Andreas Färber wrote:
> Am 09.01.2012 20:28, schrieb Anthony Liguori:
>> On 01/09/2012 11:47 AM, Paul Brook wrote:
>>> - What level of testing is appropriate? As a maintainer when can/should I
>>> bounce a patch due to lack of tests?
>>
>> Yes.
>
> Note the "when". :)
I read "should".
I think I answered this below...
>
>>> e.g should new device emulation come with
>>> unit tests? New infrastructure? What about fixes to both of the above,
>>> should
>>> these include regression tests?
>>
>> There's a careful balance that we're going to need to work out over
>> time. We need to balance test coverage with setting reasonable criteria
>> for patch inclusion.
>
> Can we interpret that as new API infrastructure for now? As opposed to
> devices (needing qtest),
I'm working on the qtest integration patches right now actually.. Right now,
there's no excuse to not write test cases against anything that is
infrastructure and reasonably stand alone.
I hope to make it easy to write device specific test cases very soon too.
> TCG (not unified), KVM (autotest), build
> infrastructure (manually).
>
> Do you envision also testing scripts? (e.g., simpletrace.py,
> checkpatch.pl, tracetool[.py])
I don't see any of that stuff being in the critical path.
>> We're still short on infrastructure right now so I expect that a lot of
>> stuff will get merged without tests at first. As we get more test
>> infrastructure like qtest and qemu-test, I expect that to change.
>>
>> In terms of total coverage for any given feature, I think ultimately the
>> goal is to move the responsibility for regression testing from the
>> contributors of new features to the subsystems themselves.
>>
>> IOW, after we get going with our test infrastructure, when we do big
>> sweeping changes like the memory API or QOM, I will have much less
>> sympathy for breakages that are caused by subsystems with an incomplete
>> test suite.
>>
>> So I think the most important thing for maintainers to start thinking
>> about is how they can add the necessary infrastructure for testing their
>> subsystems.
>
> Well, I already tried pointing out that qemu-test in the way previously
> proposed does not help catching the recent regressions for PReP.
Actually, qemu-test did catch it. The only reason I didn't see it is that I
didn't add qemu-system-powerpc to my regression script that I'm using to drive
it. But simply booting up a Linux guest would have caught it.
> Neither am I a kernel guru to propose my own JeOS build and testing
> framework, nor do I think an abundance of test frameworks merely
> orchestrated by a common driver will do us much good...
It's really not that complicated... it's just building four packages in sequence.
>> From what I understand, qemu-test with building binutils, gcc, linux
> would not fit the stated 10 minutes goal.
The idea would be that qemu-jeos would generate the test images, make check
could probe for the existence of those images, and run tests if they are there.
The same principle could apply to anything else that has an external dependency.
> The intentions here are certainly good, just the process needs some more
> thought - or less absoluteness in announcing it.
There's no magic here. If you care about your code not breaking, write a unit
test so that other people can check to see if there changes broke your code.
We can bike shed all day long about how long things should run, or whether the
wording of the "rules" require us to write tests for checkpatch, but it's
counter productive.
If there's some piece of QEMU you care about, start writing tests and tie it
into make check. It's that simple :-)
> If the infrastructure
> we provide in a first step is good and people benefit from using it, we
> will gain coverage and supporting infrastructure over time. It's
> unlikely to work as a requirement from day one though.
Maintainers are going to have exercise discretion, yes.
But the mandate here (if there even is one), is while you can continue to
complain when people break your subsystem, if you aren't working to add test
infrastructure so people can reasonably test your subsystem, then your
complaints aren't going to receive much sympathy.
Regards,
Anthony Liguori
>
> Regards,
> Andreas
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 21:42 ` Anthony Liguori
@ 2012-01-09 23:22 ` Andreas Färber
2012-01-09 23:56 ` Anthony Liguori
0 siblings, 1 reply; 40+ messages in thread
From: Andreas Färber @ 2012-01-09 23:22 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Hervé Poussineau,
Avi Kivity, Stefan Hajnoczi, Stefano Stabellini, Stefan Weil,
Riku Voipio, Jan Kiszka, Paul Brook, Paolo Bonzini, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Marcelo Tosatti, Michael Walle, Amit Shah,
Vassili Karpov (malc), Aurelien Jarno
Am 09.01.2012 22:42, schrieb Anthony Liguori:
> On 01/09/2012 02:57 PM, Andreas Färber wrote:
>> Am 09.01.2012 20:28, schrieb Anthony Liguori:
>>> We're still short on infrastructure right now so I expect that a lot of
>>> stuff will get merged without tests at first. As we get more test
>>> infrastructure like qtest and qemu-test, I expect that to change.
>>>
>>> In terms of total coverage for any given feature, I think ultimately the
>>> goal is to move the responsibility for regression testing from the
>>> contributors of new features to the subsystems themselves.
>>>
>>> IOW, after we get going with our test infrastructure, when we do big
>>> sweeping changes like the memory API or QOM, I will have much less
>>> sympathy for breakages that are caused by subsystems with an incomplete
>>> test suite.
>>>
>>> So I think the most important thing for maintainers to start thinking
>>> about is how they can add the necessary infrastructure for testing their
>>> subsystems.
>>
>> Well, I already tried pointing out that qemu-test in the way previously
>> proposed does not help catching the recent regressions for PReP.
>
> Actually, qemu-test did catch it. The only reason I didn't see it is
> that I didn't add qemu-system-powerpc to my regression script that I'm
> using to drive it. But simply booting up a Linux guest would have
> caught it.
Booting up a Linux kernel yes, but not the latest-and-greatest like you
proposed. Meaning, we need to be able to reference different branches or
trees instead of a single submodule (cf. qemu-test thread).
>> The intentions here are certainly good, just the process needs some more
>> thought - or less absoluteness in announcing it.
>
> There's no magic here. If you care about your code not breaking, write
> a unit test so that other people can check to see if there changes broke
> your code.
>
> We can bike shed all day long about how long things should run, or
> whether the wording of the "rules" require us to write tests for
> checkpatch, but it's counter productive.
>
> If there's some piece of QEMU you care about, start writing tests and
> tie it into make check. It's that simple :-)
Not quite. It would be easier if we just set up some storage space with
images like the handful of *-test images on qemu.org. That way we can
supply working images for all targets, you can supply build scripts to
rebuild them and we can all be done quickly and have fun.
I was just saying, stop bike-shedding about how we're supposed to deny
patches without test cases from tomorrow on, and instead let's get the
test infrastructure in place and see how well we get along with it.
That's even simpler and much more convenient.
You're building up quite a lot of time pressure on other people lately,
claiming two days for review were long already, wanting to merge QOM and
now make check ASAP - despite all inchoate. Don't expect a lot of
sympathy for ignoring in pursuit of your own agenda that there's other
down- and upstream issues people are handling besides these. :/
Me, I've reviewed most of this series in what I believe is a
constructive way; I'd love to build test cases for my code based on
qtest - you've made this series a prerequisite, so getting libqtest for
writing test cases based on it is going to take some more time until we
can expect contributors to contribute test cases.
If however you're trying to push the work of writing tons of test cases
for legacy code - be it qtest or qemu-test or a qemu-test alternative -
upfront to submaintainers, like you seemed to with this thread, then
you're on the wrong track IMO. KVM on x86_64 has the biggest user base
in terms of people testing and potentially contributing test cases; this
imbalance of manpower is not going to be remedied by any unit test
frameworks we introduce.
Regards,
Andreas
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 23:22 ` Andreas Färber
@ 2012-01-09 23:56 ` Anthony Liguori
2012-01-10 9:57 ` Kevin Wolf
2012-01-10 14:49 ` Andreas Färber
0 siblings, 2 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-09 23:56 UTC (permalink / raw)
To: Andreas Färber
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Hervé Poussineau,
Avi Kivity, Stefan Hajnoczi, Stefano Stabellini, Stefan Weil,
Riku Voipio, Jan Kiszka, Paul Brook, Paolo Bonzini, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Marcelo Tosatti, Michael Walle, Amit Shah,
Vassili Karpov (malc), Aurelien Jarno
On 01/09/2012 05:22 PM, Andreas Färber wrote:
> Am 09.01.2012 22:42, schrieb Anthony Liguori:
>> On 01/09/2012 02:57 PM, Andreas Färber wrote:
>>> Am 09.01.2012 20:28, schrieb Anthony Liguori:
>>>> We're still short on infrastructure right now so I expect that a lot of
>>>> stuff will get merged without tests at first. As we get more test
>>>> infrastructure like qtest and qemu-test, I expect that to change.
>>>>
>>>> In terms of total coverage for any given feature, I think ultimately the
>>>> goal is to move the responsibility for regression testing from the
>>>> contributors of new features to the subsystems themselves.
>>>>
>>>> IOW, after we get going with our test infrastructure, when we do big
>>>> sweeping changes like the memory API or QOM, I will have much less
>>>> sympathy for breakages that are caused by subsystems with an incomplete
>>>> test suite.
>>>>
>>>> So I think the most important thing for maintainers to start thinking
>>>> about is how they can add the necessary infrastructure for testing their
>>>> subsystems.
>>>
>>> Well, I already tried pointing out that qemu-test in the way previously
>>> proposed does not help catching the recent regressions for PReP.
>>
>> Actually, qemu-test did catch it. The only reason I didn't see it is
>> that I didn't add qemu-system-powerpc to my regression script that I'm
>> using to drive it. But simply booting up a Linux guest would have
>> caught it.
>
> Booting up a Linux kernel yes, but not the latest-and-greatest like you
> proposed. Meaning, we need to be able to reference different branches or
> trees instead of a single submodule (cf. qemu-test thread).
I don't understand what you mean. Given the set of submodules currently used,
I'm not aware of any target that has issues. You asserted that it may not be
the case that a single version of Linux, busybox, uclibc would all work on all
targets. But so far, I don't see any evidence to suggest that this isn't, in
fact, possible.
>> If there's some piece of QEMU you care about, start writing tests and
>> tie it into make check. It's that simple :-)
>
> Not quite. It would be easier if we just set up some storage space with
> images like the handful of *-test images on qemu.org.
It's not that simple. We cannot just host an image on qemu.org without getting
into GPL considerations. Even beyond the GPL, I don't think having opaque
images that people don't understand how to recreate if they need to is a good
strategy.
I've considered trying to do something based on automated installation (using
kickstart/preseed). This has limitations though. It takes an extremely long
time to generate these having the necessary hooks with preseeds appears to be
very difficult.
> That way we can
> supply working images for all targets, you can supply build scripts to
> rebuild them and we can all be done quickly and have fun.
That's what qemu-jeos is.
> I was just saying, stop bike-shedding about how we're supposed to deny
> patches without test cases from tomorrow on,
I never said that.
> and instead let's get the
> test infrastructure in place and see how well we get along with it.
> That's even simpler and much more convenient.
That's what I'm proposing. Specifically:
"I'm going to apply this series quickly and will start running 'make
check-quick' as part a sniff test before pushing patches.
I'd like to request that all maintainers/submaintainers do the same and that
everyone contributes unit tests to this target."
> You're building up quite a lot of time pressure on other people lately,
> claiming two days for review were long already, wanting to merge QOM and
The latest QOM series has been sitting on the list for a few weeks and I'm still
waiting to give people time to review. I think it's hard to claim I'm rushing it.
> now make check ASAP - despite all inchoate.
Yes, I am going to rush through make check but there's nothing new or exciting here.
> Me, I've reviewed most of this series in what I believe is a
> constructive way;
Yes, and I appreciate that :-)
> I'd love to build test cases for my code based on
> qtest - you've made this series a prerequisite, so getting libqtest for
> writing test cases based on it is going to take some more time until we
> can expect contributors to contribute test cases.
The reason I sent this out before qtest (which is my real goal) is based on past
experience. We have had two unit test frameworks in use, libcheck and gtester.
I'd wager that most developers haven't used either. The libcheck tests spent
a while with a small break too that no one noticed.
I don't want to introduce yet another test framework without having a
simple-to-consume mechanism for our existing test suites while also unifying
what we already have into a single mechanism.
> If however you're trying to push the work of writing tons of test cases
> for legacy code - be it qtest or qemu-test or a qemu-test alternative -
> upfront to submaintainers, like you seemed to with this thread, then
> you're on the wrong track IMO.
I think you mean 'existing code', not legacy code. I don't consider all of the
code we have today as legacy.
> KVM on x86_64 has the biggest user base
> in terms of people testing and potentially contributing test cases; this
> imbalance of manpower is not going to be remedied by any unit test
> frameworks we introduce.
Actually, I think it will. Why do non-x86 architectures break so often?
Because they aren't tested. Why aren't they tested? Because it's extremely
difficult.
AFAIK, the majority of folks that do test non-x86 architectures do so by running
images manually. Most of them use Aurelien's debian images.
What I'm trying to get at with make check/qemu-test is a simple way that we can
add test cases for less commonly used features that makes it very easy to test
these things. That's the only way we'll stop breaking other targets.
Don't view this as, "here is extra work you have to do to get your feature in",
but rather as, "here is an opportunity to make sure that no one else does
something silly and breaks your feature, forcing you to spend your time tracking
it down."
Regards,
Anthony Liguori
>
> Regards,
> Andreas
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
` (3 preceding siblings ...)
2012-01-09 20:00 ` Stefan Weil
@ 2012-01-10 8:39 ` Stefan Hajnoczi
2012-01-10 13:21 ` Luiz Capitulino
4 siblings, 1 reply; 40+ messages in thread
From: Stefan Hajnoczi @ 2012-01-10 8:39 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Paul Brook, Paolo Bonzini, Daniel Gollub, Luiz Capitulino,
Venkateswararao Jujjuri (JV), Richard Henderson, Kevin Wolf,
Marcelo Tosatti, Michael Walle, Amit Shah, Vassili Karpov (malc),
Aurelien Jarno
On Mon, Jan 09, 2012 at 10:04:38AM -0600, Anthony Liguori wrote:
> The general rules for 'make check-quick':
>
> 1) It must complete in less than 10 minutes start to finish (the
> entire rule). We can re-examine this over time but for now, it
> seems like a reasonable limit.
>
> 2) It must gracefully degrade across architectures/targets. Do not
> assume qemu-system-x86_64 is present or that an arm cross compiler
> is available.
This should be captured in qemu/ documentation somewhere, otherwise it
will be quickly forgotten or newcomers will not be aware.
Stefan
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester
2012-01-09 15:56 ` [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester Anthony Liguori
2012-01-09 19:35 ` Andreas Färber
@ 2012-01-10 9:17 ` Gerd Hoffmann
2012-01-10 13:10 ` Anthony Liguori
1 sibling, 1 reply; 40+ messages in thread
From: Gerd Hoffmann @ 2012-01-10 9:17 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Hi,
While being at it: The check should not be killed. It should be
replaced by one which checks whenever glib is new enough. Right now
qemu doesn't build on RHEL-5 because the glib shipped with it is too old
to run the tests.
cheers,
Gerd
----------------- [ cut here ] -------------------
CC test-coroutine.o
cc1: warnings being treated as errors
test-coroutine.c: In function 'test_nesting':
test-coroutine.c:92: warning: implicit declaration of function
'g_assert_cmpint'
test-coroutine.c:92: warning: nested extern declaration of 'g_assert_cmpint'
test-coroutine.c:92: error: expected expression before '==' token
test-coroutine.c:93: error: expected expression before '==' token
test-coroutine.c: In function 'test_yield':
test-coroutine.c:122: error: expected expression before '==' token
test-coroutine.c: In function 'perf_lifecycle':
test-coroutine.c:170: warning: implicit declaration of function
'g_test_timer_start'
test-coroutine.c:170: warning: nested extern declaration of
'g_test_timer_start'
test-coroutine.c:175: warning: implicit declaration of function
'g_test_timer_elapsed'
test-coroutine.c:175: warning: nested extern declaration of
'g_test_timer_elapsed'
test-coroutine.c:177: warning: implicit declaration of function
'g_test_message'
test-coroutine.c:177: warning: nested extern declaration of 'g_test_message'
test-coroutine.c: In function 'main':
test-coroutine.c:182: warning: implicit declaration of function
'g_test_init'
test-coroutine.c:182: warning: nested extern declaration of 'g_test_init'
test-coroutine.c:183: warning: implicit declaration of function
'g_test_add_func'
test-coroutine.c:183: warning: nested extern declaration of
'g_test_add_func'
test-coroutine.c:188: warning: implicit declaration of function
'g_test_perf'
test-coroutine.c:188: warning: nested extern declaration of 'g_test_perf'
test-coroutine.c:191: warning: implicit declaration of function 'g_test_run'
test-coroutine.c:191: warning: nested extern declaration of 'g_test_run'
make: *** [test-coroutine.o] Error 1
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 23:56 ` Anthony Liguori
@ 2012-01-10 9:57 ` Kevin Wolf
2012-01-10 13:11 ` Anthony Liguori
2012-01-10 14:49 ` Andreas Färber
1 sibling, 1 reply; 40+ messages in thread
From: Kevin Wolf @ 2012-01-10 9:57 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Paul Brook, Paolo Bonzini, Daniel Gollub, Luiz Capitulino,
Venkateswararao Jujjuri (JV), Richard Henderson, Marcelo Tosatti,
Michael Walle, Amit Shah, Vassili Karpov (malc), Aurelien Jarno
Am 10.01.2012 00:56, schrieb Anthony Liguori:
> On 01/09/2012 05:22 PM, Andreas Färber wrote:
>> Am 09.01.2012 22:42, schrieb Anthony Liguori:
>>> If there's some piece of QEMU you care about, start writing tests and
>>> tie it into make check. It's that simple :-)
>>
>> Not quite. It would be easier if we just set up some storage space with
>> images like the handful of *-test images on qemu.org.
>
> It's not that simple. We cannot just host an image on qemu.org without getting
> into GPL considerations. Even beyond the GPL, I don't think having opaque
> images that people don't understand how to recreate if they need to is a good
> strategy.
>
> I've considered trying to do something based on automated installation (using
> kickstart/preseed). This has limitations though. It takes an extremely long
> time to generate these having the necessary hooks with preseeds appears to be
> very difficult.
Isn't this kind of tool called autotest? I can't see a reason to
duplicate it if you really want to go for full-blown guests.
Kevin
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester
2012-01-10 9:17 ` Gerd Hoffmann
@ 2012-01-10 13:10 ` Anthony Liguori
0 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-10 13:10 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel, Luiz Capitulino
On 01/10/2012 03:17 AM, Gerd Hoffmann wrote:
> Hi,
>
> While being at it: The check should not be killed. It should be
> replaced by one which checks whenever glib is new enough. Right now
> qemu doesn't build on RHEL-5 because the glib shipped with it is too old
> to run the tests.
Good point.
Regards,
Anthony Liguori
>
> cheers,
> Gerd
>
> ----------------- [ cut here ] -------------------
> CC test-coroutine.o
> cc1: warnings being treated as errors
> test-coroutine.c: In function 'test_nesting':
> test-coroutine.c:92: warning: implicit declaration of function
> 'g_assert_cmpint'
> test-coroutine.c:92: warning: nested extern declaration of 'g_assert_cmpint'
> test-coroutine.c:92: error: expected expression before '==' token
> test-coroutine.c:93: error: expected expression before '==' token
> test-coroutine.c: In function 'test_yield':
> test-coroutine.c:122: error: expected expression before '==' token
> test-coroutine.c: In function 'perf_lifecycle':
> test-coroutine.c:170: warning: implicit declaration of function
> 'g_test_timer_start'
> test-coroutine.c:170: warning: nested extern declaration of
> 'g_test_timer_start'
> test-coroutine.c:175: warning: implicit declaration of function
> 'g_test_timer_elapsed'
> test-coroutine.c:175: warning: nested extern declaration of
> 'g_test_timer_elapsed'
> test-coroutine.c:177: warning: implicit declaration of function
> 'g_test_message'
> test-coroutine.c:177: warning: nested extern declaration of 'g_test_message'
> test-coroutine.c: In function 'main':
> test-coroutine.c:182: warning: implicit declaration of function
> 'g_test_init'
> test-coroutine.c:182: warning: nested extern declaration of 'g_test_init'
> test-coroutine.c:183: warning: implicit declaration of function
> 'g_test_add_func'
> test-coroutine.c:183: warning: nested extern declaration of
> 'g_test_add_func'
> test-coroutine.c:188: warning: implicit declaration of function
> 'g_test_perf'
> test-coroutine.c:188: warning: nested extern declaration of 'g_test_perf'
> test-coroutine.c:191: warning: implicit declaration of function 'g_test_run'
> test-coroutine.c:191: warning: nested extern declaration of 'g_test_run'
> make: *** [test-coroutine.o] Error 1
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-10 9:57 ` Kevin Wolf
@ 2012-01-10 13:11 ` Anthony Liguori
0 siblings, 0 replies; 40+ messages in thread
From: Anthony Liguori @ 2012-01-10 13:11 UTC (permalink / raw)
To: Kevin Wolf
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Paul Brook, Paolo Bonzini, Daniel Gollub, Luiz Capitulino,
Venkateswararao Jujjuri (JV), Richard Henderson, Marcelo Tosatti,
Michael Walle, Amit Shah, Vassili Karpov (malc), Aurelien Jarno
On 01/10/2012 03:57 AM, Kevin Wolf wrote:
> Am 10.01.2012 00:56, schrieb Anthony Liguori:
>> On 01/09/2012 05:22 PM, Andreas Färber wrote:
>>> Am 09.01.2012 22:42, schrieb Anthony Liguori:
>>>> If there's some piece of QEMU you care about, start writing tests and
>>>> tie it into make check. It's that simple :-)
>>>
>>> Not quite. It would be easier if we just set up some storage space with
>>> images like the handful of *-test images on qemu.org.
>>
>> It's not that simple. We cannot just host an image on qemu.org without getting
>> into GPL considerations. Even beyond the GPL, I don't think having opaque
>> images that people don't understand how to recreate if they need to is a good
>> strategy.
>>
>> I've considered trying to do something based on automated installation (using
>> kickstart/preseed). This has limitations though. It takes an extremely long
>> time to generate these having the necessary hooks with preseeds appears to be
>> very difficult.
>
> Isn't this kind of tool called autotest? I can't see a reason to
> duplicate it if you really want to go for full-blown guests.
Yes, I should have added, "I couldn't think of a better way to do this than what
autotest already does."
Regards,
Anthony Liguori
>
> Kevin
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-10 8:39 ` Stefan Hajnoczi
@ 2012-01-10 13:21 ` Luiz Capitulino
0 siblings, 0 replies; 40+ messages in thread
From: Luiz Capitulino @ 2012-01-10 13:21 UTC (permalink / raw)
To: Stefan Hajnoczi
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Andreas Färber,
Hervé Poussineau, Avi Kivity, Stefan Hajnoczi,
Stefano Stabellini, Stefan Weil, Riku Voipio, Jan Kiszka,
Paul Brook, Paolo Bonzini, Daniel Gollub,
Venkateswararao Jujjuri (JV), Richard Henderson, Kevin Wolf,
Anthony Liguori, Marcelo Tosatti, Michael Walle, Amit Shah,
Vassili Karpov (malc), Aurelien Jarno
On Tue, 10 Jan 2012 08:39:07 +0000
Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Mon, Jan 09, 2012 at 10:04:38AM -0600, Anthony Liguori wrote:
> > The general rules for 'make check-quick':
> >
> > 1) It must complete in less than 10 minutes start to finish (the
> > entire rule). We can re-examine this over time but for now, it
> > seems like a reasonable limit.
> >
> > 2) It must gracefully degrade across architectures/targets. Do not
> > assume qemu-system-x86_64 is present or that an arm cross compiler
> > is available.
>
> This should be captured in qemu/ documentation somewhere, otherwise it
> will be quickly forgotten or newcomers will not be aware.
Submitting patches also should have a clause asking submitters to run
the suite before posting patches.
>
> Stefan
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-09 23:56 ` Anthony Liguori
2012-01-10 9:57 ` Kevin Wolf
@ 2012-01-10 14:49 ` Andreas Färber
2012-01-10 15:39 ` Peter Maydell
1 sibling, 1 reply; 40+ messages in thread
From: Andreas Färber @ 2012-01-10 14:49 UTC (permalink / raw)
To: Anthony Liguori
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Peter Maydell, Markus Armbruster, Hervé Poussineau,
Avi Kivity, Stefan Hajnoczi, Stefano Stabellini, Stefan Weil,
Riku Voipio, Jan Kiszka, Paul Brook, Paolo Bonzini, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Marcelo Tosatti, Michael Walle, Amit Shah,
Vassili Karpov (malc), Aurelien Jarno
Am 10.01.2012 00:56, schrieb Anthony Liguori:
> On 01/09/2012 05:22 PM, Andreas Färber wrote:
>> Am 09.01.2012 22:42, schrieb Anthony Liguori:
>>> On 01/09/2012 02:57 PM, Andreas Färber wrote:
>>>> Am 09.01.2012 20:28, schrieb Anthony Liguori:
>>>>> We're still short on infrastructure right now so I expect that a
>>>>> lot of
>>>>> stuff will get merged without tests at first. As we get more test
>>>>> infrastructure like qtest and qemu-test, I expect that to change.
>>>>>
>>>>> In terms of total coverage for any given feature, I think
>>>>> ultimately the
>>>>> goal is to move the responsibility for regression testing from the
>>>>> contributors of new features to the subsystems themselves.
>>>>>
>>>>> IOW, after we get going with our test infrastructure, when we do big
>>>>> sweeping changes like the memory API or QOM, I will have much less
>>>>> sympathy for breakages that are caused by subsystems with an
>>>>> incomplete
>>>>> test suite.
>>>>>
>>>>> So I think the most important thing for maintainers to start thinking
>>>>> about is how they can add the necessary infrastructure for testing
>>>>> their
>>>>> subsystems.
>>>>
>>>> Well, I already tried pointing out that qemu-test in the way previously
>>>> proposed does not help catching the recent regressions for PReP.
>>>
>>> Actually, qemu-test did catch it. The only reason I didn't see it is
>>> that I didn't add qemu-system-powerpc to my regression script that I'm
>>> using to drive it. But simply booting up a Linux guest would have
>>> caught it.
>>
>> Booting up a Linux kernel yes, but not the latest-and-greatest like you
>> proposed. Meaning, we need to be able to reference different branches or
>> trees instead of a single submodule (cf. qemu-test thread).
>
> I don't understand what you mean. Given the set of submodules currently
> used, I'm not aware of any target that has issues.
To my knowledge -M prep is not supported from 2.6 kernel on while
g3beige/mac99/pseries are. So yes, there's ppc support in binutils, yes
there'll probably be ppc support in uClibc but no 3.x kernel support
despite the target generally being supported by the kernel.
> You asserted that it
> may not be the case that a single version of Linux, busybox, uclibc
> would all work on all targets. But so far, I don't see any evidence to
> suggest that this isn't, in fact, possible.
Depends on what you consider possible, of course. ;)
At university we were stuck at 2.4.x for the Sharp Zaurus (armel) -
don't know the background there though, might be resolved by now.
Many mipsel devices still run 2.4.x but that's more of a binary-driver
issue, I guess.
ARM recently needed a binutils fix by Alex to avoid some segfault.
Toshiba AC100, Efika, etc. all have their respective downstream kernels.
Haven't checked the kernel for Cortex-R4F support yet but my board
doesn't really support it memory-wise (unless there's sufficient RAM to
boot via CAN, but point is, not all boards are manufactured for Linux).
Examples of potentially problematic targets not in upstream:
* V850 was recently scheduled for removal from the kernel; stable
binutils+gcc available, apparently supported by uClib.
* RX needs a binutils snapshot apparently (GNURX v11.03) and is not
mentioned in the uClibc FAQ, but supported by gcc 4.5; no kernel port
that I'm aware of (/me poking at it).
* RL78 needs binutils+gcc+newlib snapshot (GNRL78 v11.03), not mentioned
in uClibc FAQ; no kernel port that I'm aware of (and doesn't seem worth
the effort to me).
* STM8 not supported by binutils+gcc at all (llvm+clang port underway),
probably no uClibc/kernel support either then.
* 8051 needs sdcc iirc. Don't know about libc/kernel.
* z80? openrisc? mmix? avr32? iPhone?
You'll find plenty more examples when you look at embedded systems
(e.g., automotive) and/or relatively new architectures.
Doesn't mean we can't use qemu-test for some targets, just that we can't
use Linux 3.x and uClibc for everything. For many things yes.
In particular my criticism targetted the proposed use of submodules for
qemu-jeos.git: Doing the checkouts from a trivial shell script instead
would allow to checkout different commits/trees for different targets
and resolve part of the problem.
Andreas
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [Qemu-devel] Please read: make check framework
2012-01-10 14:49 ` Andreas Färber
@ 2012-01-10 15:39 ` Peter Maydell
0 siblings, 0 replies; 40+ messages in thread
From: Peter Maydell @ 2012-01-10 15:39 UTC (permalink / raw)
To: Andreas Färber
Cc: Mark McLoughlin, Michael S. Tsirkin, qemu-devel, Alexander Graf,
Blue Swirl, Max Filippov, Gerd Hoffmann, Edgar E. Iglesias,
Markus Armbruster, Hervé Poussineau, Avi Kivity,
Stefan Hajnoczi, Stefano Stabellini, Stefan Weil, Riku Voipio,
Jan Kiszka, Paul Brook, Paolo Bonzini, Daniel Gollub,
Luiz Capitulino, Venkateswararao Jujjuri (JV), Richard Henderson,
Kevin Wolf, Anthony Liguori, Marcelo Tosatti, Michael Walle,
Amit Shah, Vassili Karpov (malc), Aurelien Jarno
On 10 January 2012 14:49, Andreas Färber <andreas.faerber@web.de> wrote:
> Haven't checked the kernel for Cortex-R4F support yet but my board
> doesn't really support it memory-wise (unless there's sufficient RAM to
> boot via CAN, but point is, not all boards are manufactured for Linux).
Also R profile doesn't have an MMU... (M profile even more so. uClinux,
anybody?)
-- PMM
^ permalink raw reply [flat|nested] 40+ messages in thread
end of thread, other threads:[~2012-01-10 15:40 UTC | newest]
Thread overview: 40+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-09 15:56 [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 02/11] build: split unit test builds to a separate makefile fragment Anthony Liguori
2012-01-09 19:23 ` Andreas Färber
2012-01-09 19:38 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 03/11] check-qdict: convert to gtest Anthony Liguori
2012-01-09 18:27 ` Luiz Capitulino
2012-01-09 19:15 ` Anthony Liguori
2012-01-09 19:37 ` Luiz Capitulino
2012-01-09 19:26 ` Andreas Färber
2012-01-09 19:39 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 04/11] check-qfloat: " Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 05/11] check-qint: " Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 06/11] check-qstring: " Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 07/11] check-qlist: " Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 08/11] check-qjson: " Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 09/11] check-qjson: enable disabled tests Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 10/11] test: eliminate libcheck tests and have make check use gtester Anthony Liguori
2012-01-09 19:35 ` Andreas Färber
2012-01-10 9:17 ` Gerd Hoffmann
2012-01-10 13:10 ` Anthony Liguori
2012-01-09 15:56 ` [Qemu-devel] [PATCH 11/11] check: add a check-report and check-help target Anthony Liguori
2012-01-09 20:00 ` Andreas Färber
2012-01-09 16:04 ` [Qemu-devel] Please read: make check framework Anthony Liguori
2012-01-09 16:16 ` Avi Kivity
2012-01-09 16:28 ` Anthony Liguori
2012-01-09 16:47 ` Daniel Gollub
2012-01-09 17:47 ` Paul Brook
2012-01-09 19:28 ` Anthony Liguori
2012-01-09 20:57 ` Andreas Färber
2012-01-09 21:42 ` Anthony Liguori
2012-01-09 23:22 ` Andreas Färber
2012-01-09 23:56 ` Anthony Liguori
2012-01-10 9:57 ` Kevin Wolf
2012-01-10 13:11 ` Anthony Liguori
2012-01-10 14:49 ` Andreas Färber
2012-01-10 15:39 ` Peter Maydell
2012-01-09 20:00 ` Stefan Weil
2012-01-10 8:39 ` Stefan Hajnoczi
2012-01-10 13:21 ` Luiz Capitulino
2012-01-09 19:18 ` [Qemu-devel] [PATCH 01/11] tests: mv tests/* -> tests/tcg Andreas Färber
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).