mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00
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>
This commit is contained in:
parent
3c8166e50b
commit
fac9fc28f5
@ -512,7 +512,6 @@ cmocka_dep = dependency(
|
||||
compile_args : [
|
||||
'-includestdlib.h',
|
||||
'-includeunittest_env.h',
|
||||
'-includehwaccess_x86_io_unittest.h'
|
||||
],
|
||||
dependencies : [
|
||||
deps,
|
||||
|
@ -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__ */
|
@ -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',
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user