summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2021-09-24 16:05:35 +1000
committerNico Huber <nico.h@gmx.de>2021-10-18 12:22:59 +0000
commit92989f2496e3b138e784d10ef4b2536a757c0953 (patch)
tree0792444165320934d74e938f6f61324bb89ca3d4
parenta7a59cf0bb37b7416756e6b1977b8667bbecb01b (diff)
downloadflashrom-92989f2496e3b138e784d10ef4b2536a757c0953.tar.gz
flashrom-92989f2496e3b138e784d10ef4b2536a757c0953.tar.bz2
flashrom-92989f2496e3b138e784d10ef4b2536a757c0953.zip
tests: Add wrap for libusb_init and use it in dediprog test
Missing wrap for libusb_init has been discovered while working on the test for raiden_debug_spi. Both dediprog (existing test) and raiden_debug_spi (new test, see later in this chain) are using libusb_init, so it definitely needs to be wrapped and added to io_mock. Why tests worked before, without the wrap: my understanding is that real libusb_init was called for dediprog test? Given that tests definitely should not call any real libusb functions, wrap is needed. BUG=b:181803212 TEST=builds and ninja test Change-Id: I51c9cb96db1afb3298f4d098df96509d3cb3c046 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/57917 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--tests/init_shutdown.c8
-rw-r--r--tests/io_mock.h1
-rw-r--r--tests/libusb_wraps.c8
-rw-r--r--tests/meson.build1
4 files changed, 18 insertions, 0 deletions
diff --git a/tests/init_shutdown.c b/tests/init_shutdown.c
index 03e888fd5..e64e58cbf 100644
--- a/tests/init_shutdown.c
+++ b/tests/init_shutdown.c
@@ -54,6 +54,13 @@ void nicrealtek_init_and_shutdown_test_success(void **state)
#endif
}
+
+int dediprog_libusb_init(void *state, libusb_context **ctx)
+{
+ *ctx = not_null();
+ return 0;
+}
+
int dediprog_libusb_control_transfer(void *state,
libusb_device_handle *devh,
uint8_t bmRequestType,
@@ -75,6 +82,7 @@ void dediprog_init_and_shutdown_test_success(void **state)
{
#if CONFIG_DEDIPROG == 1
const struct io_mock dediprog_io = {
+ .libusb_init = dediprog_libusb_init,
.libusb_control_transfer = dediprog_libusb_control_transfer,
};
diff --git a/tests/io_mock.h b/tests/io_mock.h
index 7c235d820..0bee6caba 100644
--- a/tests/io_mock.h
+++ b/tests/io_mock.h
@@ -70,6 +70,7 @@ struct io_mock {
unsigned int (*inl)(void *state, unsigned short port);
/* USB I/O */
+ int (*libusb_init)(void *state, libusb_context **ctx);
int (*libusb_control_transfer)(void *state,
libusb_device_handle *devh,
uint8_t bmRequestType,
diff --git a/tests/libusb_wraps.c b/tests/libusb_wraps.c
index 94ef652fc..978108e65 100644
--- a/tests/libusb_wraps.c
+++ b/tests/libusb_wraps.c
@@ -23,6 +23,14 @@ void *__wrap_usb_dev_get_by_vid_pid_number(
return not_null();
}
+int __wrap_libusb_init(libusb_context **ctx)
+{
+ LOG_ME;
+ if (get_io() && get_io()->libusb_init)
+ return get_io()->libusb_init(get_io()->state, ctx);
+ return 0;
+}
+
int __wrap_libusb_set_configuration(libusb_device_handle *devh, int config)
{
LOG_ME;
diff --git a/tests/meson.build b/tests/meson.build
index c55c5d20b..30b1e782e 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -64,6 +64,7 @@ mocks = [
'-Wl,--wrap=test_outl',
'-Wl,--wrap=test_inl',
'-Wl,--wrap=usb_dev_get_by_vid_pid_number',
+ '-Wl,--wrap=libusb_init',
'-Wl,--wrap=libusb_set_configuration',
'-Wl,--wrap=libusb_claim_interface',
'-Wl,--wrap=libusb_control_transfer',