[Concept,2/9] test: Write the SPI image to the persistent-data directory

Message ID 20251229160611.3899708-3-sjg@u-boot.org
State New
Headers
Series test: Various improvements to unit-test infrastructure |

Commit Message

Simon Glass Dec. 29, 2025, 4:06 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

It is annoying to have disk images in the source directory since it
clutters up the working space.

Move spi.bin (used by the SPI tests) into the persistent-data
directory, update the driver and add a comment.

Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 drivers/mtd/spi/sandbox.c | 14 +++++++++++---
 test/dm/sf.c              |  4 +++-
 test/py/tests/test_ut.py  |  2 +-
 3 files changed, 15 insertions(+), 5 deletions(-)
  

Patch

diff --git a/drivers/mtd/spi/sandbox.c b/drivers/mtd/spi/sandbox.c
index d9afe77e52d..0b56312bb85 100644
--- a/drivers/mtd/spi/sandbox.c
+++ b/drivers/mtd/spi/sandbox.c
@@ -126,7 +126,9 @@  static int sandbox_sf_probe(struct udevice *dev)
 	struct dm_spi_slave_plat *slave_plat;
 	struct udevice *bus = dev->parent;
 	const char *spec = NULL;
+	const char *filename;
 	struct udevice *emul;
+	char buf[256];
 	int ret = 0;
 	int cs = -1;
 
@@ -170,10 +172,16 @@  static int sandbox_sf_probe(struct udevice *dev)
 	if (sandbox_sf_0xff[0] == 0x00)
 		memset(sandbox_sf_0xff, 0xff, sizeof(sandbox_sf_0xff));
 
-	sbsf->fd = os_open(pdata->filename, 02);
+	/*
+	 * Try persistent data directory first, then fall back to the
+	 * filename as given (for absolute paths or current directory)
+	 */
+	filename = pdata->filename;
+	if (!os_persistent_file(buf, sizeof(buf), pdata->filename))
+		filename = buf;
+	sbsf->fd = os_open(filename, 02);
 	if (sbsf->fd < 0) {
-		printf("%s: unable to open file '%s'\n", __func__,
-		       pdata->filename);
+		log_err("Unable to open file '%s'\n", filename);
 		ret = -EIO;
 		goto error;
 	}
diff --git a/test/dm/sf.c b/test/dm/sf.c
index 3684d021709..15a95a2d41e 100644
--- a/test/dm/sf.c
+++ b/test/dm/sf.c
@@ -27,10 +27,12 @@  static int dm_test_spi_flash(struct unit_test_state *uts)
 	uint map_size;
 	ulong map_base;
 	uint offset;
+	char pathname[256];
 	int i;
 
 	src = map_sysmem(0x20000, full_size);
-	ut_assertok(os_write_file("spi.bin", src, full_size));
+	ut_assertok(os_persistent_file(pathname, sizeof(pathname), "spi.bin"));
+	ut_assertok(os_write_file(pathname, src, full_size));
 	ut_assertok(uclass_first_device_err(UCLASS_SPI_FLASH, &dev));
 
 	dst = map_sysmem(0x20000 + full_size, full_size);
diff --git a/test/py/tests/test_ut.py b/test/py/tests/test_ut.py
index 70a748a31f9..da36898d803 100644
--- a/test/py/tests/test_ut.py
+++ b/test/py/tests/test_ut.py
@@ -42,7 +42,7 @@  def test_ut_dm_init(ubman):
         with open(fn, 'wb') as fh:
             fh.write(data)
 
-    fn = ubman.config.source_dir + '/spi.bin'
+    fn = ubman.config.persistent_data_dir + '/spi.bin'
     if not os.path.exists(fn):
         data = b'\x00' * (2 * 1024 * 1024)
         with open(fn, 'wb') as fh: