From cdf8cf4afe305b10bc6169856282cdbb6bcfbf32 Mon Sep 17 00:00:00 2001 From: Anastasia Klimchuk Date: Thu, 12 Aug 2021 10:41:03 +1000 Subject: tests: Use real spi_send_command for all tests except spi25.c At the moment one test (spi25.c) uses wrap of spi_send_command, and all other existing tests don't care about this function (don't call it at all). However in the next patch a new test in introduced, which needs a real spi_send_command. Following the approach "don't mock unless it is strictly necessary", all tests that don't care go into real function bucket. A declaration for __real_spi_send_command is needed for visibility, this way wrap function can redirect to real function for all other tests except spi25.c. Additionally, wrap function moves below mock_chip, so that mock_chip is visible inside wrap. BUG=b:181803212 TEST=builds and ninja test Change-Id: I22945cce3d0f36adaa8032167a3ef4e54eccb611 Signed-off-by: Anastasia Klimchuk Reviewed-on: https://review.coreboot.org/c/flashrom/+/56753 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan --- tests/spi25.c | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) (limited to 'tests') diff --git a/tests/spi25.c b/tests/spi25.c index 942fe6e5..251c98c0 100644 --- a/tests/spi25.c +++ b/tests/spi25.c @@ -20,10 +20,39 @@ #include "chipdrivers.h" #include "spi.h" +struct flashchip mock_chip = { + .vendor = "Generic", + .name = "unknown SPI chip (RDID)", + .bustype = BUS_SPI, + .manufacture_id = GENERIC_MANUF_ID, + .model_id = GENERIC_DEVICE_ID, + .total_size = 0, + .page_size = 256, + .tested = TEST_BAD_PREW, + .probe = probe_spi_rdid, + .write = NULL, +}; + +/* + * This declaration is needed for visibility, so that wrap below could + * redirect to real function. + */ +int __real_spi_send_command(const struct flashctx *flash, + unsigned int writecnt, unsigned int readcnt, + const unsigned char *writearr, unsigned char *readarr); + int __wrap_spi_send_command(const struct flashctx *flash, unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr) { + if (flash->chip != &mock_chip) + /* + * Caller is some other test, redirecting to real function. + * This test is the only one which uses wrap of spi_send_command, + * all other tests use real function. + */ + return __real_spi_send_command(flash, writecnt, readcnt, writearr, readarr); + check_expected_ptr(flash); assert_int_equal(writecnt, mock_type(int)); assert_int_equal(writearr[0], mock_type(int)); @@ -36,19 +65,6 @@ int __wrap_spi_send_command(const struct flashctx *flash, return 0; } -struct flashchip mock_chip = { - .vendor = "Generic", - .name = "unknown SPI chip (RDID)", - .bustype = BUS_SPI, - .manufacture_id = GENERIC_MANUF_ID, - .model_id = GENERIC_DEVICE_ID, - .total_size = 0, - .page_size = 256, - .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, - .write = NULL, -}; - void spi_write_enable_test_success(void **state) { (void) state; /* unused */ -- cgit v1.2.3