diff options
author | Evan Benn <evanbenn@chromium.org> | 2022-11-04 17:00:40 +1100 |
---|---|---|
committer | Anastasia Klimchuk <aklm@chromium.org> | 2022-12-09 00:26:53 +0000 |
commit | bcaaae15ae65fe8b2f0c2f9cb55c777a57eb5de4 (patch) | |
tree | ac4ce5319fe8b93f58a0c3d69bce1c5f79d91e02 | |
parent | 2c3bbd91e4ccbff8aa9053ad76a62b33df3119b1 (diff) | |
download | flashrom-bcaaae15ae65fe8b2f0c2f9cb55c777a57eb5de4.tar.gz flashrom-bcaaae15ae65fe8b2f0c2f9cb55c777a57eb5de4.tar.bz2 flashrom-bcaaae15ae65fe8b2f0c2f9cb55c777a57eb5de4.zip |
tests: Detect gcov run and redirect to real I/O functions
Code coverage writes data to disk, we need to use real io functions at
this point so that the data is really written.
BUG=b:187647884
BRANCH=None
TEST=meson test
TEST=ninja coverage
Change-Id: If06053ecd78e886c8f7fc55813f4b5635be78c6b
Signed-off-by: Evan Benn <evanbenn@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/69266
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | Documentation/building.md | 12 | ||||
-rw-r--r-- | tests/tests.c | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/Documentation/building.md b/Documentation/building.md index aabb45b1..81daeb06 100644 --- a/Documentation/building.md +++ b/Documentation/building.md @@ -48,6 +48,18 @@ ninja -C builddir install ninja -C builddir test ``` +### Run unit tests with code coverage +#### gcov +Due to a bug in lcov, the html file will only be correct if lcov is not +installed and gcovr is installed. See +https://github.com/linux-test-project/lcov/issues/168 +https://github.com/mesonbuild/meson/issues/6747 +``` +meson setup buildcov -Db_coverage=true +ninja -C buildcov test +ninja -C buildcov coverage +``` + ## System specific information ### Ubuntu / Debian (Linux) * __linux-headers__ are version specific diff --git a/tests/tests.c b/tests/tests.c index 41972ba2..b11f6421 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -17,6 +17,7 @@ #include "io_mock.h" #include "tests.h" #include "wraps.h" +#include "io_real.h" #include <stdio.h> #include <string.h> @@ -77,6 +78,7 @@ uint8_t __wrap_sio_read(uint16_t port, uint8_t reg) static int mock_open(const char *pathname, int flags, mode_t mode) { + maybe_unmock_io(pathname); if (get_io() && get_io()->iom_open) return get_io()->iom_open(get_io()->state, pathname, flags, mode); |