summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2022-07-04 18:38:41 +1000
committerAnastasia Klimchuk <aklm@chromium.org>2022-07-10 22:29:04 +0000
commit06e73a8e61749c82ae9bd632113c01afd3ff2fd1 (patch)
tree1374c7e1aa292074241d3bf2a791d0cceeb6146c /tests
parent94efa4454225ca09db5c12dfcd2b6057dd1682bf (diff)
downloadflashrom-06e73a8e61749c82ae9bd632113c01afd3ff2fd1.tar.gz
flashrom-06e73a8e61749c82ae9bd632113c01afd3ff2fd1.tar.bz2
flashrom-06e73a8e61749c82ae9bd632113c01afd3ff2fd1.zip
tests: Make libusb conditional dependency for unit tests
Unit tests had an unconditional dependency on libusb and this was a) strictly speaking not needed, b) blocking one build system effort. This patch is a temporary solution to unblock one build system effort, specifically CB:63724. It creates a condition so that libusb is only included when it is required, not always. This workaround is based on the fact that at the moment only 2 lifecycle unit tests are using libusb symbols: dediprog and raiden_debug. BUG=b:237606255 TEST=the following scenarios run tests successfully 1) dediprog and raiden_debug programmers enabled, libusb.h present result: all test run and pass 2) dediprog disabled, libusb.h present result: dediprog test skipped, all other tests run and pass 3) dediprog and raiden_debug both disabled, libusb.h changed to libusbabcd.h result: dediprog and raiden_debug tests are skipped, all other tests run and pass Change-Id: Iec8a1826951fd6ae586e90fde1a55170e7de41a8 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/65627 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <felixsinger@posteo.net> Reviewed-by: Thomas Heijligen <src@posteo.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/io_mock.h8
-rw-r--r--tests/libusb_wraps.h2
-rw-r--r--tests/usb_unittests.h60
3 files changed, 64 insertions, 6 deletions
diff --git a/tests/io_mock.h b/tests/io_mock.h
index a36602a44..9e92a9d3e 100644
--- a/tests/io_mock.h
+++ b/tests/io_mock.h
@@ -34,11 +34,9 @@
/* Required for `FILE *` */
#include <stdio.h>
-/*
- * Explicitly including the header because some tests are using libusb structs
- * in depth, opaque symbols are not sufficient.
- */
-#include <libusb.h>
+#include <stdint.h>
+
+#include "usb_unittests.h"
/* Address value needs fit into uint8_t. */
#define USB_DEVICE_ADDRESS 19
diff --git a/tests/libusb_wraps.h b/tests/libusb_wraps.h
index b10b8c0cb..e42c5384b 100644
--- a/tests/libusb_wraps.h
+++ b/tests/libusb_wraps.h
@@ -16,7 +16,7 @@
#ifndef LIBUSB_WRAPS_H
#define LIBUSB_WRAPS_H
-#include <libusb.h>
+#include "usb_unittests.h"
void *__wrap_usb_dev_get_by_vid_pid_number(
libusb_context *usb_ctx, uint16_t vid, uint16_t pid, unsigned int num);
diff --git a/tests/usb_unittests.h b/tests/usb_unittests.h
new file mode 100644
index 000000000..29c4b78d3
--- /dev/null
+++ b/tests/usb_unittests.h
@@ -0,0 +1,60 @@
+/*
+ * This file is part of the flashrom project.
+ *
+ * Copyright 2022 Google LLC
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*
+ * This header provides a temporary solution to unblock build system
+ * work. The main goal is to remove unconditional dependency on libusb
+ * for unit tests. The dependency is still present, but now it is present
+ * only when it is needed and only when the header is present in the env.
+ *
+ * The contents of the file will be modified in a very near future.
+ */
+
+#ifndef _USB_UNITTESTS_H_
+#define _USB_UNITTESTS_H_
+
+#if CONFIG_RAIDEN_DEBUG_SPI == 1 || CONFIG_DEDIPROG == 1
+
+#include <libusb.h>
+
+#else
+
+struct libusb_context;
+typedef struct libusb_context libusb_context;
+
+struct libusb_device_handle;
+typedef struct libusb_device_handle libusb_device_handle;
+
+struct libusb_device_descriptor;
+typedef struct libusb_device_descriptor libusb_device_descriptor;
+
+struct libusb_device;
+typedef struct libusb_device libusb_device;
+
+struct libusb_config_descriptor;
+typedef struct libusb_config_descriptor libusb_config_descriptor;
+
+struct libusb_interface;
+typedef struct libusb_interface libusb_interface;
+
+struct libusb_interface_descriptor;
+typedef struct libusb_interface_descriptor libusb_interface_descriptor;
+
+struct libusb_endpoint_descriptor;
+typedef struct libusb_endpoint_descriptor libusb_endpoint_descriptor;
+
+#endif
+
+#endif /* _USB_UNITTESTS_H_ */