From 92989f2496e3b138e784d10ef4b2536a757c0953 Mon Sep 17 00:00:00 2001 From: Anastasia Klimchuk Date: Fri, 24 Sep 2021 16:05:35 +1000 Subject: 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 Reviewed-on: https://review.coreboot.org/c/flashrom/+/57917 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- tests/init_shutdown.c | 8 ++++++++ tests/io_mock.h | 1 + tests/libusb_wraps.c | 8 ++++++++ tests/meson.build | 1 + 4 files changed, 18 insertions(+) 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', -- cgit v1.2.3