#!/usr/bin/env python3 import re from gradelib import * r = Runner(save("chcore.out"), stop_breakpoint("break_point")) @test(0) def test_badinsn(): r.make_kernel("badinsn") r.run_qemu(10) @test(15, parent=test_badinsn) def test_badinsn_output(): r.match("\[INFO\] UnKnown") r.match("\[INFO\] sys_exit with value -12") @test(0, parent=test_badinsn_output) def test_badinsn2(): r.make_kernel("badinsn2") r.run_qemu(10) @test(15, parent=test_badinsn2) def test_badinsn2_output(): r.match("\[INFO\] UnKnown") r.match("\[INFO\] sys_exit with value -12") @test(0, parent=test_badinsn_output) def test_hello(): r.make_kernel("hello") r.run_qemu(10) @test(15, parent=test_hello) def test_hello_output(): r.match("hello, world") r.match("\[INFO\] sys_exit with value 0") @test(0, parent=test_hello_output) def test_putc(): r.make_kernel("testputc") r.run_qemu(10) @test(5, parent=test_putc) def test_putc_output(): r.match("&") r.match("\[INFO\] sys_exit with value 0") @test(0, parent=test_putc_output) def test_createpmo(): r.make_kernel("testcreatepmo") r.run_qemu(10) @test(5, parent=test_createpmo) def test_createpmo_output(): r.match("\[INFO\] sys_create_pmo called") r.match("\[INFO\] sys_exit with value 0") @test(0, parent=test_createpmo_output) def test_mappmo(): r.make_kernel("testmappmo") r.run_qemu(10) @test(5, parent=test_mappmo) def test_mappmo_output(): r.match("\[INFO\] sys_map_pmo called") r.match("\[INFO\] sys_exit with value 0") @test(0, parent=test_mappmo_output) def test_mappmoerr(): r.make_kernel("testmappmoerr") r.run_qemu(10) @test(5, parent=test_mappmoerr) def test_mappmoerr_output(): r.match("\[INFO\] sys_map_pmo called") r.match("\[INFO\] sys_exit with value -1") @test(0, parent=test_mappmoerr_output) def test_brk(): r.make_kernel("testsbrk") r.run_qemu(10) @test(10, parent=test_brk) def test_brk_output(): r.match("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,") r.match("SBRK_TEST: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV.*") r.match("\[INFO\] sys_exit with value 0") @test(0, parent=test_brk_output) def test_faultread(): r.make_kernel("faultread") r.run_qemu(10) @test(5, parent=test_faultread) def test_faultread_output(): r.match("\[INFO\] pgfault at 0x1 failed") r.match("\[INFO\] sys_exit with value -14") @test(0, parent=test_faultread_output) def test_faultwrite(): r.make_kernel("faultwrite") r.run_qemu(10) @test(5, parent=test_faultwrite) def test_faultwrite_output(): r.match("\[INFO\] pgfault at 0x1 failed") r.match("\[INFO\] sys_exit with value -14") @test(0, parent=test_faultwrite_output) def test_pf(): r.make_kernel("testpf") r.run_qemu(10) @test(15, parent=test_pf) def test_pf_output(): r.match("value is deadbeef") r.match("\[INFO\] sys_exit with value 0") run_tests()