[LTP] [PATCH v1] Add readlink04 test

Andrea Cervesato andrea.cervesato@suse.com
Fri Feb 16 14:29:51 CET 2024


Hi!

On 2/2/24 17:17, Cyril Hrubis wrote:
> On Thu, Jan 18, 2024 at 04:07:42PM +0100, Andrea Cervesato wrote:
>> From: Andrea Cervesato <andrea.cervesato@suse.com>
>>
>> This test has been extracted from symlink01 and it verifies that
>> readlink() is working correctly on symlink() generated files.
>>
>> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
>> ---
>>   runtest/syscalls                              |  2 +-
>>   testcases/kernel/syscalls/readlink/.gitignore |  1 +
>>   .../kernel/syscalls/readlink/readlink04.c     | 57 +++++++++++++++++++
>>   3 files changed, 59 insertions(+), 1 deletion(-)
>>   create mode 100644 testcases/kernel/syscalls/readlink/readlink04.c
>>
>> diff --git a/runtest/syscalls b/runtest/syscalls
>> index 6e2407879..339697533 100644
>> --- a/runtest/syscalls
>> +++ b/runtest/syscalls
>> @@ -1125,9 +1125,9 @@ readahead02 readahead02
>>   readdir01 readdir01
>>   readdir21 readdir21
>>   
>> -readlink01A symlink01 -T readlink01
>>   readlink01 readlink01
>>   readlink03 readlink03
>> +readlink04 readlink04
>>   
>>   #readlinkat test cases
>>   readlinkat01 readlinkat01
>> diff --git a/testcases/kernel/syscalls/readlink/.gitignore b/testcases/kernel/syscalls/readlink/.gitignore
>> index 307817f4d..53e65eb5b 100644
>> --- a/testcases/kernel/syscalls/readlink/.gitignore
>> +++ b/testcases/kernel/syscalls/readlink/.gitignore
>> @@ -1,2 +1,3 @@
>>   /readlink01
>>   /readlink03
>> +/readlink04
>> diff --git a/testcases/kernel/syscalls/readlink/readlink04.c b/testcases/kernel/syscalls/readlink/readlink04.c
>> new file mode 100644
>> index 000000000..8d7d038bb
>> --- /dev/null
>> +++ b/testcases/kernel/syscalls/readlink/readlink04.c
>> @@ -0,0 +1,57 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
>> + *    Author: David Fenner
>> + *    Copilot: Jon Hendrickson
>> + * Copyright (C) 2024 Andrea Cervesato <andrea.cervesato@suse.com>
>> + */
>> +
>> +/*\
>> + * [Description]
>> + *
>> + * This test verifies that readlink() is working correctly on symlink()
>> + * generated files.
>> + */
>> +
>> +#include "tst_test.h"
>> +
>> +static void test_readlink(void)
>> +{
>> +	char *symname = "my_symlink0";
>> +
>> +	SAFE_SYMLINK(tst_get_tmpdir(), symname);
>> +
>> +	char path[PATH_MAX];
>> +	struct stat path_link;
>> +
>> +	SAFE_READLINK(symname, path, PATH_MAX);
>> +	TST_EXP_PASS(lstat(path, &path_link));
>> +
>> +	SAFE_UNLINK(symname);
>> +}
> Isn't this already tested in readlink01?
>
> And actually the readlink01 is doing this better by comparing the string
> returned from readlink() against the one we passed to the sysmlink()
> syscall previously. The lastat() check is indirectly asserting that we
> got right value as well, however simple memcmp() is better.
>
I agree, please ignore this test. I think we can just skip it
>> +static void test_readlink_no_path(void)
>> +{
>> +	char *symname = "my_symlink1";
>> +
>> +	SAFE_SYMLINK("bc+eFhi!k", symname);
>> +
>> +	char path[PATH_MAX];
>> +	struct stat path_link;
>> +
>> +	SAFE_READLINK(symname, path, PATH_MAX);
>> +	TST_EXP_FAIL(lstat(path, &path_link), ENOENT);
>> +
>> +	SAFE_UNLINK(symname);
>> +}
> Maybe it would be easier to add this to symlink01 as well?
>
> In reality it probably does not make much difference if we readlink a
> symlink to an existing or non-existing file though...
>
Andrea



More information about the ltp mailing list