selftests/exec: recursion-depth: conform test to TAP format output
authorMuhammad Usama Anjum <usama.anjum@collabora.com>
Mon, 4 Mar 2024 15:59:25 +0000 (20:59 +0500)
committerKees Cook <keescook@chromium.org>
Wed, 13 Mar 2024 18:54:19 +0000 (11:54 -0700)
Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.
While at it, do minor cleanups like move the declarations of the variables
on top of the function.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Link: https://lore.kernel.org/r/20240304155928.1818928-3-usama.anjum@collabora.com
Signed-off-by: Kees Cook <keescook@chromium.org>
tools/testing/selftests/exec/recursion-depth.c

index 2dbd5bc45b3ed0fb095214d395e0132ca3c76a62..b2f37d86a5f623b1a8e91af7b42bfc6db79af34b 100644 (file)
 #include <fcntl.h>
 #include <sys/mount.h>
 #include <unistd.h>
+#include "../kselftest.h"
 
 int main(void)
 {
+       int fd, rv;
+
+       ksft_print_header();
+       ksft_set_plan(1);
+
        if (unshare(CLONE_NEWNS) == -1) {
                if (errno == ENOSYS || errno == EPERM) {
-                       fprintf(stderr, "error: unshare, errno %d\n", errno);
-                       return 4;
+                       ksft_test_result_skip("error: unshare, errno %d\n", errno);
+                       ksft_finished();
                }
-               fprintf(stderr, "error: unshare, errno %d\n", errno);
-               return 1;
-       }
-       if (mount(NULL, "/", NULL, MS_PRIVATE|MS_REC, NULL) == -1) {
-               fprintf(stderr, "error: mount '/', errno %d\n", errno);
-               return 1;
+               ksft_exit_fail_msg("error: unshare, errno %d\n", errno);
        }
+
+       if (mount(NULL, "/", NULL, MS_PRIVATE | MS_REC, NULL) == -1)
+               ksft_exit_fail_msg("error: mount '/', errno %d\n", errno);
+
        /* Require "exec" filesystem. */
-       if (mount(NULL, "/tmp", "ramfs", 0, NULL) == -1) {
-               fprintf(stderr, "error: mount ramfs, errno %d\n", errno);
-               return 1;
-       }
+       if (mount(NULL, "/tmp", "ramfs", 0, NULL) == -1)
+               ksft_exit_fail_msg("error: mount ramfs, errno %d\n", errno);
 
 #define FILENAME "/tmp/1"
 
-       int fd = creat(FILENAME, 0700);
-       if (fd == -1) {
-               fprintf(stderr, "error: creat, errno %d\n", errno);
-               return 1;
-       }
+       fd = creat(FILENAME, 0700);
+       if (fd == -1)
+               ksft_exit_fail_msg("error: creat, errno %d\n", errno);
+
 #define S "#!" FILENAME "\n"
-       if (write(fd, S, strlen(S)) != strlen(S)) {
-               fprintf(stderr, "error: write, errno %d\n", errno);
-               return 1;
-       }
+       if (write(fd, S, strlen(S)) != strlen(S))
+               ksft_exit_fail_msg("error: write, errno %d\n", errno);
+
        close(fd);
 
-       int rv = execve(FILENAME, NULL, NULL);
-       if (rv == -1 && errno == ELOOP) {
-               return 0;
-       }
-       fprintf(stderr, "error: execve, rv %d, errno %d\n", rv, errno);
-       return 1;
+       rv = execve(FILENAME, NULL, NULL);
+       ksft_test_result(rv == -1 && errno == ELOOP,
+                        "execve failed as expected (ret %d, errno %d)\n", rv, errno);
+       ksft_finished();
 }