binderfs: port tests to test harness infrastructure
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 13 Mar 2020 15:24:18 +0000 (16:24 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Mar 2020 06:41:01 +0000 (07:41 +0100)
Makes for nicer output and prepares for additional tests.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20200313152420.138777-1-christian.brauner@ubuntu.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/testing/selftests/filesystems/binderfs/Makefile
tools/testing/selftests/filesystems/binderfs/binderfs_test.c

index 58cb659b56b47b35bb58887a58c4f1b0aa6c60bd..75315d9ba7a926b06cb8149149815dc7b3cd43ef 100644 (file)
@@ -3,4 +3,6 @@
 CFLAGS += -I../../../../../usr/include/
 TEST_GEN_PROGS := binderfs_test
 
+binderfs_test: binderfs_test.c ../../kselftest.h ../../kselftest_harness.h
+
 include ../../lib.mk
index 8c2ed962e1c7904bee78d134d300f6b12cecc638..0cfca65e095ae88f20ce6a3a334425d54a7dacaf 100644 (file)
@@ -15,7 +15,9 @@
 #include <unistd.h>
 #include <linux/android/binder.h>
 #include <linux/android/binderfs.h>
+
 #include "../../kselftest.h"
+#include "../../kselftest_harness.h"
 
 static ssize_t write_nointr(int fd, const void *buf, size_t count)
 {
@@ -132,7 +134,7 @@ static void rmdir_protect_errno(const char *dir)
        errno = saved_errno;
 }
 
-static void __do_binderfs_test(void)
+static int __do_binderfs_test(void)
 {
        int fd, ret, saved_errno;
        size_t len;
@@ -160,8 +162,7 @@ static void __do_binderfs_test(void)
                                           strerror(errno));
 
                keep ? : rmdir_protect_errno("/dev/binderfs");
-               ksft_exit_skip(
-                       "The Android binderfs filesystem is not available\n");
+               return 1;
        }
 
        /* binderfs mount test passed */
@@ -250,26 +251,24 @@ on_error:
 
        /* binderfs unmount test passed */
        ksft_inc_pass_cnt();
+       return 0;
 }
 
-static void binderfs_test_privileged()
+TEST(binderfs_test_privileged)
 {
        if (geteuid() != 0)
-               ksft_print_msg(
-                       "Tests are not run as root. Skipping privileged tests\n");
-       else
-               __do_binderfs_test();
+               XFAIL(return, "Tests are not run as root. Skipping privileged tests");
+
+       if (__do_binderfs_test() == 1)
+               XFAIL(return, "The Android binderfs filesystem is not available");
 }
 
-static void binderfs_test_unprivileged()
+TEST(binderfs_test_unprivileged)
 {
        change_to_userns();
-       __do_binderfs_test();
-}
 
-int main(int argc, char *argv[])
-{
-       binderfs_test_privileged();
-       binderfs_test_unprivileged();
-       ksft_exit_pass();
+       if (__do_binderfs_test() == 1)
+               XFAIL(return, "The Android binderfs filesystem is not available");
 }
+
+TEST_HARNESS_MAIN