Closed rodrigovalle closed 4 years ago
Thanks a lot for reporting this! I fully agree and I'd be happy to merge a pull request for this. I think we should also set the --no-reboot
argument by default for test executables, since bootloops are rarely what you want in this case.
I was following along with Writing an OS in Rust post-06; after writing the stack_overflow() test I also tried testing the failure case. The posts suggests commenting out the
.set_stack_index(DOUBLE_FAULT_IST_INDEX)
line of the double-fault handler, so I did that and ran the test again.The test doesn't fail, instead it enters a bootloop where the stack overflows, pushes the interrupt handler to the stack, triple-faults, and reboots QEMU. This is reproducible in the post-06 branch of phil-opp/blog_os as well.
I tried setting QEMU's
-no-reboot
option in test-args; this stops the bootlooping, but the test still passes because QEMU has a return code of 0 in this case. Bootimage passes this exit code on to cargo-test, which marks the test as passed.I think it's a small change, but by considering all non
test-success-exit-codes
as test failures, we could set up tests that fail on any unexpected reboot of the system with-no-reboot
. Successful runs would then only be reported by the test framework itself.