Re: [PATCH v2 3/3] selftests/nolibc: Add test for getcwd() and readlink()
From: Thomas Weißschuh
Date: Tue Jun 30 2026 - 14:48:08 EST
Hi Daniel,
thanks for the patches!
On 2026-06-30 22:24:19+0900, Daniel Palmer wrote:
> Add a test that uses both getcwd() and readlink() so that both
> are exercised.
>
> First the happy path is tested by fetching what should be the
> same string via getcwd() and readlink() and checking they match.
>
> Then a few different combinations of bad parameters are passed to
> getcwd() to make sure it returns NULL and sets errno in those
> cases.
Sashiko found a few things. I think all of them are valid.
https://sashiko.dev/#/patchset/20260630132419.2523890-1-daniel%40thingy.jp
> Signed-off-by: Daniel Palmer <daniel@xxxxxxxxx>
> ---
> tools/testing/selftests/nolibc/nolibc-test.c | 48 ++++++++++++++++++++
> 1 file changed, 48 insertions(+)
>
> diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
> index c1c1ce43a047..d54e7188e2ab 100644
> --- a/tools/testing/selftests/nolibc/nolibc-test.c
> +++ b/tools/testing/selftests/nolibc/nolibc-test.c
> @@ -854,6 +854,53 @@ static int test_dirent(void)
> return 0;
> }
>
> +static int test_getcwd(void)
> +{
> + char cwd_syscall[1024];
> + char cwd_proc[1024];
> + ssize_t len;
> +
> + /* Read where the link /proc/self/cwd points */
> + len = readlink("/proc/self/cwd", cwd_proc, sizeof(cwd_proc) - 1);
> + if (len <= 0)
> + return -1;
Please return different values here, so it is obvious which subtest
failed.
> +
> + /* Terminate the string from readlink() */
> + cwd_proc[len] = '\0';
> +
> + /* Get the cwd via syscall */
> + if (getcwd(cwd_syscall, sizeof(cwd_syscall)) == NULL)
> + return -1;
(...)