sandbox: Add a way to access persistent test files

Some pytests create files in the persistent-data directory. It is useful
to be able to access these files in C tests. Add a function which can
locate a file given its leaf name, using the environment variable set
up in test/py/conftest.py

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-08-24 13:55:37 -06:00 committed by Tom Rini
parent 8d6337e691
commit e2d22f7822
2 changed files with 34 additions and 0 deletions

View file

@ -258,6 +258,30 @@ int os_unmap(void *buf, int size)
return 0; return 0;
} }
int os_persistent_file(char *buf, int maxsize, const char *fname)
{
const char *dirname = getenv("U_BOOT_PERSISTENT_DATA_DIR");
char *ptr;
int len;
len = strlen(fname) + (dirname ? strlen(dirname) + 1 : 0) + 1;
if (len > maxsize)
return -ENOSPC;
ptr = buf;
if (dirname) {
strcpy(ptr, dirname);
ptr += strlen(dirname);
*ptr++ = '/';
}
strcpy(ptr, fname);
if (access(buf, F_OK) == -1)
return -ENOENT;
return 0;
}
/* Restore tty state when we exit */ /* Restore tty state when we exit */
static struct termios orig_term; static struct termios orig_term;
static bool term_setup; static bool term_setup;

View file

@ -98,6 +98,16 @@ int os_close(int fd);
*/ */
int os_unlink(const char *pathname); int os_unlink(const char *pathname);
/** os_persistent_fname() - Find the path to a test file
*
* @buf: Buffer to hold path
* @maxsize: Maximum size of buffer
* @fname: Leaf filename to find
* Returns: 0 on success, -ENOENT if file is not found, -ENOSPC if the buffer is
* too small
*/
int os_persistent_file(char *buf, int maxsize, const char *fname);
/** /**
* os_exit() - access to the OS exit() system call * os_exit() - access to the OS exit() system call
* *