|
|
|
@ -324,7 +324,7 @@ pub fn qemu_exit_success() -> ! {
|
|
|
|
|
[Click here] in case you are interested in the implementation. Note that for the functions to work,
|
|
|
|
|
the `-semihosting` flag must be added to the `QEMU` invocation.
|
|
|
|
|
|
|
|
|
|
You might have also noted the `#[cfg(feature = "test_build")]`. In `Cargo.toml`, we ensure that
|
|
|
|
|
You might have also noted the `#[cfg(feature = "test_build")]`. In the `Makefile`, we ensure that
|
|
|
|
|
this feature is only enabled when `cargo test` runs. This way, it is ensured that testing-specific
|
|
|
|
|
code is conditionally compiled only for testing.
|
|
|
|
|
|
|
|
|
@ -417,7 +417,7 @@ endef
|
|
|
|
|
test_unit:
|
|
|
|
|
$(call color_header, "Compiling unit test(s) - $(BSP)")
|
|
|
|
|
$(call test_prepare)
|
|
|
|
|
@RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(TEST_CMD) --lib
|
|
|
|
|
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(TEST_CMD) --lib
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
It first does the standard `objcopy` step to strip the `ELF` down to a raw binary. Just like in all
|
|
|
|
@ -910,7 +910,7 @@ diff -uNr 11_exceptions_part1_groundwork/Cargo.toml 12_integrated_testing/Cargo.
|
|
|
|
|
authors = ["Andre Richter <andre.o.richter@gmail.com>"]
|
|
|
|
|
edition = "2021"
|
|
|
|
|
|
|
|
|
|
@@ -11,20 +11,57 @@
|
|
|
|
|
@@ -11,20 +11,50 @@
|
|
|
|
|
default = []
|
|
|
|
|
bsp_rpi3 = ["tock-registers"]
|
|
|
|
|
bsp_rpi4 = ["tock-registers"]
|
|
|
|
@ -942,13 +942,6 @@ diff -uNr 11_exceptions_part1_groundwork/Cargo.toml 12_integrated_testing/Cargo.
|
|
|
|
|
+[dev-dependencies]
|
|
|
|
|
+test-macros = { path = "test-macros" }
|
|
|
|
|
+
|
|
|
|
|
+# The following line is a workaround, as suggested in [1], to enable a feature in test-builds only.
|
|
|
|
|
+# This allows building the library part of the kernel with specialized code for testing.
|
|
|
|
|
+#
|
|
|
|
|
+#
|
|
|
|
|
+# [1] https://github.com/rust-lang/cargo/issues/2911#issuecomment-749580481
|
|
|
|
|
+mingo = { path = ".", features = ["test_build"] }
|
|
|
|
|
+
|
|
|
|
|
+# Unit tests are done in the library part of the kernel.
|
|
|
|
|
+[lib]
|
|
|
|
|
+name = "libkernel"
|
|
|
|
@ -1014,12 +1007,14 @@ diff -uNr 11_exceptions_part1_groundwork/Makefile 12_integrated_testing/Makefile
|
|
|
|
|
OBJCOPY_CMD = rust-objcopy \
|
|
|
|
|
--strip-all \
|
|
|
|
|
-O binary
|
|
|
|
|
@@ -265,11 +275,11 @@
|
|
|
|
|
@@ -265,11 +275,13 @@
|
|
|
|
|
##--------------------------------------------------------------------------------------------------
|
|
|
|
|
## Testing targets
|
|
|
|
|
##--------------------------------------------------------------------------------------------------
|
|
|
|
|
-.PHONY: test test_boot
|
|
|
|
|
+.PHONY: test test_boot test_unit test_integration
|
|
|
|
|
+
|
|
|
|
|
+test_unit test_integration: FEATURES += --features test_build
|
|
|
|
|
|
|
|
|
|
ifeq ($(QEMU_MACHINE_TYPE),) # QEMU is not supported for the board.
|
|
|
|
|
|
|
|
|
@ -1028,7 +1023,7 @@ diff -uNr 11_exceptions_part1_groundwork/Makefile 12_integrated_testing/Makefile
|
|
|
|
|
$(call color_header, "$(QEMU_MISSING_STRING)")
|
|
|
|
|
|
|
|
|
|
else # QEMU is supported.
|
|
|
|
|
@@ -281,6 +291,43 @@
|
|
|
|
|
@@ -281,6 +293,43 @@
|
|
|
|
|
$(call color_header, "Boot test - $(BSP)")
|
|
|
|
|
@$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_RELEASE_ARGS) -kernel $(KERNEL_BIN)
|
|
|
|
|
|
|
|
|
|