
Writing an OS in Rust: Testing - pcr910303
https://os.phil-opp.com/testing/
======
phil-opp
Author here. This post is a rewrite of the previous Unit Testing [1] and
Integration Tests [2] posts. It creates a custom test framework that runs test
functions inside QEMU, so that they run in a realistic environment (compared
to running on the host system).

[1]: [https://os.phil-opp.com/unit-testing/](https://os.phil-opp.com/unit-
testing/) [2]: [https://os.phil-opp.com/integration-tests/](https://os.phil-
opp.com/integration-tests/)

The new test framework directly works with `cargo xtest`, which brings the
project closer to using standard cargo programs for building, testing, and
running. The last remaining step is the `std` Aware Cargo RFC [3]. When the
RFC is merged and implemented, cargo-xbuild will no longer be needed and the
familiar cargo build, cargo run, and cargo test commands will just work,
including IDE integration.

[3]: [https://github.com/rust-lang/rfcs/pull/2663](https://github.com/rust-
lang/rfcs/pull/2663)

~~~
rstevens24
Just wanted to say thanks so much for your blog posts! I have been working on
a medical device in no_std Rust and your articles have been super helpful in
setting up a robust unit test suite. I have been trying to hack at the utest
crate and get on-device integration tests running again for quite some time...
good to know there is movement on the custom test runner front :)

~~~
phil-opp
It's the first time that I hear about Rust on medical devices. Sounds really
interesting! I'm glad to hear that my blog was useful to you!

> I have been trying to hack at the utest crate and get on-device integration
> tests running again for quite some time... good to know there is movement on
> the custom test runner front :)

The custom test framework feature of Rust was silently introduced in
[https://github.com/rust-lang/rust/pull/53410](https://github.com/rust-
lang/rust/pull/53410) and I didn't know that it even existed a month ago. But
it works really well and seems like a good solution for your problem.

------
_wwpm
I’ve started writing my own OS with this tutorial for a school project with a
friend. It is a big help! Our next step now is the GDT

[https://github.com/oyagci/kfs/tree/dev](https://github.com/oyagci/kfs/tree/dev)

~~~
phil-opp
Great to hear that!

