Just a happy path test. Signed-off-by: Dorjoy Chowdhury --- .../testing/selftests/openat2/openat2_test.c | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/openat2/openat2_test.c b/tools/testing/selftests/openat2/openat2_test.c index 0e161ef9e9e4..c2f8771e2dae 100644 --- a/tools/testing/selftests/openat2/openat2_test.c +++ b/tools/testing/selftests/openat2/openat2_test.c @@ -320,8 +320,42 @@ void test_openat2_flags(void) } } +#ifndef O_REGULAR +#define O_REGULAR 040000000 +#endif + +#ifndef ENOTREGULAR +#define ENOTREGULAR 35 +#endif + +void test_openat2_o_regular_flag(void) +{ + if (!openat2_supported) { + ksft_test_result_skip("Skipping %s as openat2 is not supported\n", __func__); + return; + } + + struct open_how how = { + .flags = O_REGULAR | O_RDONLY + }; + + int fd = sys_openat2(AT_FDCWD, "/dev/null", &how); + + if (fd == ENOENT) { + ksft_test_result_skip("Skipping %s as there is no /dev/null\n", __func__); + return; + } + + if (fd != -ENOTREGULAR) { + ksft_test_result_fail("openat2 should return ENOTREGULAR\n"); + return; + } + + ksft_test_result_pass("%s succeeded\n", __func__); +} + #define NUM_TESTS (NUM_OPENAT2_STRUCT_VARIATIONS * NUM_OPENAT2_STRUCT_TESTS + \ - NUM_OPENAT2_FLAG_TESTS) + NUM_OPENAT2_FLAG_TESTS + 1) int main(int argc, char **argv) { @@ -330,6 +364,7 @@ int main(int argc, char **argv) test_openat2_struct(); test_openat2_flags(); + test_openat2_o_regular_flag(); if (ksft_get_fail_cnt() + ksft_get_error_cnt() > 0) ksft_exit_fail(); -- 2.52.0