summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2022-06-02 11:56:38 +1000
committerAnastasia Klimchuk <aklm@chromium.org>2022-06-21 00:31:52 +0000
commitfac9fc28f5a6cadf7c94264f429faa597a2058ac (patch)
treebf95f4d8c5762599774ffc0e309aae7a0b76cd0c /tests
parent3c8166e50b1f2eeba45662b29f7cc8823e198d8d (diff)
downloadflashrom-fac9fc28f5a6cadf7c94264f429faa597a2058ac.tar.gz
flashrom-fac9fc28f5a6cadf7c94264f429faa597a2058ac.tar.bz2
flashrom-fac9fc28f5a6cadf7c94264f429faa597a2058ac.zip
tests: Use regular cmocka wraps for hwaccess functions
hwaccess functions used to be static inline functions and needed a special treatment so that they could be mocked for unit tests. This has changed, see include/hwaccess_x86_io.h now the functions are not static inline anymore, and it is possible to use regular cmocka wraps. Fixes https://ticket.coreboot.org/issues/385 BUG=b:181803212 TEST=ninja test Change-Id: Iafce071ea7ad5bcfdebbba968699d5743705f8e0 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/64881 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Joursoir <chat@joursoir.net> Reviewed-by: Thomas Heijligen <src@posteo.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/hwaccess_x86_io_unittest.h64
-rw-r--r--tests/meson.build12
-rw-r--r--tests/tests.c12
-rw-r--r--tests/wraps.h12
4 files changed, 18 insertions, 82 deletions
diff --git a/tests/hwaccess_x86_io_unittest.h b/tests/hwaccess_x86_io_unittest.h
deleted file mode 100644
index 14f3caa90..000000000
--- a/tests/hwaccess_x86_io_unittest.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * This file is part of the flashrom project.
- *
- * Copyright 2021 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 is used instead of hwaccess_x86_io.h for unit tests
- * (see flashrom_test_dep in meson.build).
- *
- * There is no hardware in unit test environment and all hardware operations
- * need to be mocked.
- */
-
-/*
- * The same guard is used intentionally for hwaccess_x86_io.h and
- * hwaccess_x86_io_unittest.h. When build is made for the test environment,
- * hwaccess_x86_io_unittest.h is included first, and it effectively
- * replaces hwaccess_x86_io.h.
- */
-#ifndef __HWACCESS_X86_IO_H__
-#define __HWACCESS_X86_IO_H__ 1
-
-#define OUTB(v, p) test_outb(v, p)
-#define OUTW(v, p) test_outw(v, p)
-#define OUTL(v, p) test_outl(v, p)
-#define INB(p) test_inb(p)
-#define INW(p) test_inw(p)
-#define INL(p) test_inl(p)
-
-#include <stdint.h>
-
-int rget_io_perms(void);
-
-/*
- * Dummy implementation of iopl from sys/io.h.
- * sys/io.h by itself is platform-specific, so instead of including
- * the header we just have this dummy function, which is sufficient
- * for test purposes.
- */
-static inline int iopl(int level)
-{
- return 0;
-}
-
-/* All functions below are mocked in unit tests. */
-
-void test_outb(uint8_t value, uint16_t port);
-uint8_t test_inb(uint16_t port);
-void test_outw(uint16_t value, uint16_t port);
-uint16_t test_inw(uint16_t port);
-void test_outl(uint32_t value, uint16_t port);
-uint32_t test_inl(uint16_t port);
-
-#endif /* !__HWACCESS_X86_IO_H__ */
diff --git a/tests/meson.build b/tests/meson.build
index 588ac17fb..38f5be56b 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -67,12 +67,12 @@ mocks = [
'-Wl,--wrap=clearerr',
'-Wl,--wrap=setvbuf',
'-Wl,--wrap=rget_io_perms',
- '-Wl,--wrap=test_outb',
- '-Wl,--wrap=test_inb',
- '-Wl,--wrap=test_outw',
- '-Wl,--wrap=test_inw',
- '-Wl,--wrap=test_outl',
- '-Wl,--wrap=test_inl',
+ '-Wl,--wrap=OUTB',
+ '-Wl,--wrap=INB',
+ '-Wl,--wrap=OUTW',
+ '-Wl,--wrap=INW',
+ '-Wl,--wrap=OUTL',
+ '-Wl,--wrap=INL',
'-Wl,--wrap=usb_dev_get_by_vid_pid_number',
'-Wl,--wrap=libusb_init',
'-Wl,--wrap=libusb_open',
diff --git a/tests/tests.c b/tests/tests.c
index a719a8fd0..ed833b73e 100644
--- a/tests/tests.c
+++ b/tests/tests.c
@@ -321,14 +321,14 @@ int __wrap_rget_io_perms(void)
return 0;
}
-void __wrap_test_outb(unsigned char value, unsigned short port)
+void __wrap_OUTB(unsigned char value, unsigned short port)
{
/* LOG_ME; */
if (get_io() && get_io()->outb)
get_io()->outb(get_io()->state, value, port);
}
-unsigned char __wrap_test_inb(unsigned short port)
+unsigned char __wrap_INB(unsigned short port)
{
/* LOG_ME; */
if (get_io() && get_io()->inb)
@@ -336,14 +336,14 @@ unsigned char __wrap_test_inb(unsigned short port)
return 0;
}
-void __wrap_test_outw(unsigned short value, unsigned short port)
+void __wrap_OUTW(unsigned short value, unsigned short port)
{
/* LOG_ME; */
if (get_io() && get_io()->outw)
get_io()->outw(get_io()->state, value, port);
}
-unsigned short __wrap_test_inw(unsigned short port)
+unsigned short __wrap_INW(unsigned short port)
{
/* LOG_ME; */
if (get_io() && get_io()->inw)
@@ -351,14 +351,14 @@ unsigned short __wrap_test_inw(unsigned short port)
return 0;
}
-void __wrap_test_outl(unsigned int value, unsigned short port)
+void __wrap_OUTL(unsigned int value, unsigned short port)
{
/* LOG_ME; */
if (get_io() && get_io()->outl)
get_io()->outl(get_io()->state, value, port);
}
-unsigned int __wrap_test_inl(unsigned short port)
+unsigned int __wrap_INL(unsigned short port)
{
/* LOG_ME; */
if (get_io() && get_io()->inl)
diff --git a/tests/wraps.h b/tests/wraps.h
index c088d98d7..bfa8a41fb 100644
--- a/tests/wraps.h
+++ b/tests/wraps.h
@@ -58,12 +58,12 @@ int __wrap_feof(FILE *fp);
int __wrap_ferror(FILE *fp);
void __wrap_clearerr(FILE *fp);
int __wrap_rget_io_perms(void);
-void __wrap_test_outb(unsigned char value, unsigned short port);
-unsigned char __wrap_test_inb(unsigned short port);
-void __wrap_test_outw(unsigned short value, unsigned short port);
-unsigned short __wrap_test_inw(unsigned short port);
-void __wrap_test_outl(unsigned int value, unsigned short port);
-unsigned int __wrap_test_inl(unsigned short port);
+void __wrap_OUTB(unsigned char value, unsigned short port);
+unsigned char __wrap_INB(unsigned short port);
+void __wrap_OUTW(unsigned short value, unsigned short port);
+unsigned short __wrap_INW(unsigned short port);
+void __wrap_OUTL(unsigned int value, unsigned short port);
+unsigned int __wrap_INL(unsigned short port);
int __wrap_spi_send_command(const struct flashctx *flash,
unsigned int writecnt, unsigned int readcnt,
const unsigned char *writearr, unsigned char *readarr);