This is kind of a problem like it existed a year ago, but more complicated.
So I am writing my kernel (loup-os/kernel: The Loup OS Kernel - Codeberg.org) and I want to run the tests. Until now, I had a custom test runner which would run in QEMU for every platform my kernel targets (currently risc-v and x86_64, but x86_64 is broken, so currently only risc-v) and then test everything from there. If you ask yourself why I did it that way: I have some conditional imports for e.g. different architectures.
Until now everything worked with the approach I described in a brainstorm about testing on freestanding in this forum, but recently somehow the file exists in multiple modules
error started triggering. But it says file exists in modules 'root' and 'root'
, which is weird. Probably one time the test runner root is meant, and one time the actual test root is meant.
But how do I fix this? If I create a module for the things I need to share, the tests inside my ākernel moduleā that shares things are not run. And if I point both the test runner source file and the test source file to src/main.zig
, it says:
/some/path/to/zig/lib/std/std.zig:1:1: error: file exists in modules 'root' and 'root'
/some/path/to/zig/lib/std/std.zig:1:1: note: files must belong to only one module
/some/path/to/zig/lib/std/std.zig:1:1: note: file is the root of module 'root'
/some/path/to/zig/lib/std/std.zig:1:1: note: file is the root of module 'root'
Any ideas?