121 lines
3.0 KiB
Python
Executable File
121 lines
3.0 KiB
Python
Executable File
#!/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()
|