[PATCH v3 3/4] tree: Use TST_EXP_PASS_OR_FAIL() and TST_EXP_FD_OR_FAIL()

Petr Vorel <[email protected]>
Newsgroups gmane.linux.ltp
Message-ID <[email protected]>
Shorten code with test macros.

Signed-off-by: Petr Vorel <[email protected]>
---
 testcases/kernel/syscalls/access/access01.c   |   9 +-
 .../kernel/syscalls/arch_prctl/arch_prctl01.c |   9 +-
 testcases/kernel/syscalls/bind/bind01.c       |   9 +-
 .../kernel/syscalls/epoll_ctl/epoll_ctl06.c   |  12 +-
 .../syscalls/finit_module/finit_module01.c    |   7 +-
 .../syscalls/init_module/init_module01.c      |   7 +-
 .../kernel/syscalls/landlock/landlock08.c     |  18 +--
 .../kernel/syscalls/landlock/landlock09.c     |  10 +-
 .../kernel/syscalls/landlock/landlock10.c     |   8 +-
 .../syscalls/landlock/landlock_tester.h       | 129 ++++++------------
 10 files changed, 66 insertions(+), 152 deletions(-)

diff --git a/testcases/kernel/syscalls/access/access01.c b/testcases/kernel/syscalls/access/access01.c
index 66907d1279..e8d81b392f 100644
--- a/testcases/kernel/syscalls/access/access01.c
+++ b/testcases/kernel/syscalls/access/access01.c
@@ -236,13 +236,8 @@ static struct tcase {
 
 static void access_test(struct tcase *tc, const char *user)
 {
-	if (tc->exp_errno) {
-		TST_EXP_FAIL(access(tc->fname, tc->mode), tc->exp_errno,
-		             "access(%s, %s) as %s", tc->fname, tc->name, user);
-	} else {
-		TST_EXP_PASS(access(tc->fname, tc->mode),
-		             "access(%s, %s) as %s", tc->fname, tc->name, user);
-	}
+	TST_EXP_PASS_OR_FAIL(access(tc->fname, tc->mode), tc->exp_errno,
+				 "access(%s, %s) as %s", tc->fname, tc->name, user);
 }
 
 static void verify_access(unsigned int n)
diff --git a/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c b/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c
index 8ce905c6ce..851a5cf50a 100644
--- a/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c
+++ b/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c
@@ -50,10 +50,9 @@ static void setup(void)
 
 static void run(unsigned int index)
 {
-	if (tag)
-		TST_EXP_PASS(arch_prctl_set(ARCH_SET_CPUID, index));
-	else
-		TST_EXP_FAIL(arch_prctl_set(ARCH_SET_CPUID, index), ENODEV);
+	int err = tag ? 0 : ENODEV;
+
+	TST_EXP_PASS_OR_FAIL(arch_prctl_set(ARCH_SET_CPUID, index), err);
 
 	// if cpu has cpuid_fault flag, ARCH_GET_CPUID returns what has been
 	// set: index, otherwise, returns default status: 1
@@ -61,7 +60,7 @@ static void run(unsigned int index)
 
 	TEST(arch_prctl_get(ARCH_GET_CPUID));
 	if (TST_RET == exp)
-		tst_res(TPASS, "get cpuid succeed.");
+		tst_res(TPASS, "get cpuid succeed");
 	else
 		tst_res(TFAIL, "get wrong cpuid status");
 }
diff --git a/testcases/kernel/syscalls/bind/bind01.c b/testcases/kernel/syscalls/bind/bind01.c
index 1bf55e898d..7f27bf3b7c 100644
--- a/testcases/kernel/syscalls/bind/bind01.c
+++ b/testcases/kernel/syscalls/bind/bind01.c
@@ -69,12 +69,9 @@ static void verify_bind(unsigned int nr)
 {
 	struct test_case *tcase = &tcases[nr];
 
-	if (tcase->experrno) {
-		TST_EXP_FAIL(bind(*tcase->socket_fd, tcase->sockaddr, tcase->salen),
-				tcase->experrno, "%s", tcase->desc);
-	} else {
-		TST_EXP_PASS(bind(*tcase->socket_fd, tcase->sockaddr, tcase->salen),
-				"%s", tcase->desc);
+	TST_EXP_PASS_OR_FAIL(bind(*tcase->socket_fd, tcase->sockaddr, tcase->salen),
+			tcase->experrno, "%s", tcase->desc);
+	if (TST_PASS) {
 		SAFE_CLOSE(inet_socket);
 		inet_socket = SAFE_SOCKET(PF_INET, SOCK_STREAM, 0);
 	}
diff --git a/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c b/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c
index a06d996e02..69321582f1 100644
--- a/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c
+++ b/testcases/kernel/syscalls/epoll_ctl/epoll_ctl06.c
@@ -52,15 +52,9 @@ static void run(void)
 		ev.data.fd = fd.fd;
 		err = exp_errno(fd.type);
 
-		if (err) {
-			TST_EXP_FAIL(epoll_ctl(efd, EPOLL_CTL_ADD,
-				     fd.fd, &ev), err,
-				     "epoll_ctl() on %s", tst_fd_desc(&fd));
-		} else {
-			TST_EXP_PASS(epoll_ctl(efd, EPOLL_CTL_ADD,
-				     fd.fd, &ev),
-				     "epoll_ctl() on %s", tst_fd_desc(&fd));
-		}
+		TST_EXP_PASS_OR_FAIL(epoll_ctl(efd, EPOLL_CTL_ADD,
+				 fd.fd, &ev), err,
+				 "epoll_ctl() on %s", tst_fd_desc(&fd));
 
 		SAFE_CLOSE(efd);
 	}
diff --git a/testcases/kernel/syscalls/finit_module/finit_module01.c b/testcases/kernel/syscalls/finit_module/finit_module01.c
index 397d5a1ae4..ec14a42588 100644
--- a/testcases/kernel/syscalls/finit_module/finit_module01.c
+++ b/testcases/kernel/syscalls/finit_module/finit_module01.c
@@ -34,12 +34,9 @@ static void setup(void)
 
 static void run(void)
 {
-	if (sig_enforce == 1) {
-		TST_EXP_FAIL(finit_module(fd, "status=valid", 0), EKEYREJECTED);
-		return;
-	}
+	int err = sig_enforce == 1 ? EKEYREJECTED : 0;
 
-	TST_EXP_PASS(finit_module(fd, "status=valid", 0));
+	TST_EXP_PASS_OR_FAIL(finit_module(fd, "status=valid", 0), err);
 	if (!TST_PASS)
 		return;
 
diff --git a/testcases/kernel/syscalls/init_module/init_module01.c b/testcases/kernel/syscalls/init_module/init_module01.c
index a0d4792c95..171e360f89 100644
--- a/testcases/kernel/syscalls/init_module/init_module01.c
+++ b/testcases/kernel/syscalls/init_module/init_module01.c
@@ -39,12 +39,9 @@ static void setup(void)
 
 static void run(void)
 {
-	if (sig_enforce == 1) {
-		TST_EXP_FAIL(init_module(buf, sb.st_size, "status=valid"), EKEYREJECTED);
-		return;
-	}
+	int err = sig_enforce == 1 ? EKEYREJECTED : 0;
 
-	TST_EXP_PASS(init_module(buf, sb.st_size, "status=valid"));
+	TST_EXP_PASS_OR_FAIL(init_module(buf, sb.st_size, "status=valid"), err);
 	if (!TST_PASS)
 		return;
 
diff --git a/testcases/kernel/syscalls/landlock/landlock08.c b/testcases/kernel/syscalls/landlock/landlock08.c
index 770061ba0b..052b016be6 100644
--- a/testcases/kernel/syscalls/landlock/landlock08.c
+++ b/testcases/kernel/syscalls/landlock/landlock08.c
@@ -102,13 +102,8 @@ static void test_bind(const struct tcase *tc, const in_port_t port, const int ex
 	create_socket(&socket, tc->family, port, tc->type);
 	getsocket_addr(&socket, tc->family, &addr);
 
-	if (exp_err) {
-		TST_EXP_FAIL(bind(socket.fd, addr, socket.address_size),
-			     exp_err, "bind() access on port %u", port);
-	} else {
-		TST_EXP_PASS(bind(socket.fd, addr, socket.address_size),
-			     "bind() access on port %u", port);
-	}
+	TST_EXP_PASS_OR_FAIL(bind(socket.fd, addr, socket.address_size),
+		exp_err, "bind() access on port %u", port);
 
 	SAFE_CLOSE(socket.fd);
 }
@@ -121,13 +116,8 @@ static void test_connect(const struct tcase *tc, const in_port_t port, const int
 	create_socket(&socket, tc->family, port, tc->type);
 	getsocket_addr(&socket, tc->family, &addr);
 
-	if (exp_err) {
-		TST_EXP_FAIL(connect(socket.fd, addr, socket.address_size),
-			     exp_err, "connect() on port %u", port);
-	} else {
-		TST_EXP_PASS(connect(socket.fd, addr, socket.address_size),
-			     "connect() on port %u", port);
-	}
+	TST_EXP_PASS_OR_FAIL(connect(socket.fd, addr, socket.address_size),
+		exp_err, "connect() on port %u", port);
 
 	SAFE_CLOSE(socket.fd);
 }
diff --git a/testcases/kernel/syscalls/landlock/landlock09.c b/testcases/kernel/syscalls/landlock/landlock09.c
index 09a762bb1b..c2d73a7085 100644
--- a/testcases/kernel/syscalls/landlock/landlock09.c
+++ b/testcases/kernel/syscalls/landlock/landlock09.c
@@ -35,6 +35,8 @@ static void scoped_sandbox(const char *from)
 
 static void run_client(void)
 {
+	int err = tst_variant == DOMAIN_CLIENT ? EPERM : 0;
+
 	if (tst_variant == DOMAIN_CLIENT)
 		scoped_sandbox("client");
 
@@ -47,14 +49,8 @@ static void run_client(void)
 	TST_CHECKPOINT_WAIT(0);
 
 	tst_res(TINFO, "Connecting to UNIX socket");
-
 	sendsock = SAFE_SOCKET(AF_UNIX, SOCK_STREAM, 0);
-
-	if (tst_variant != DOMAIN_CLIENT)
-		TST_EXP_PASS(connect(sendsock, (struct sockaddr *)&addr, SOCKET_LENGTH));
-	else
-		TST_EXP_FAIL(connect(sendsock, (struct sockaddr *)&addr, SOCKET_LENGTH), EPERM);
-
+	TST_EXP_PASS_OR_FAIL(connect(sendsock, (struct sockaddr *)&addr, SOCKET_LENGTH), err);
 	SAFE_CLOSE(sendsock);
 
 	TST_CHECKPOINT_WAKE(0);
diff --git a/testcases/kernel/syscalls/landlock/landlock10.c b/testcases/kernel/syscalls/landlock/landlock10.c
index a29e3bca82..96ee40bc79 100644
--- a/testcases/kernel/syscalls/landlock/landlock10.c
+++ b/testcases/kernel/syscalls/landlock/landlock10.c
@@ -30,6 +30,8 @@ static void scoped_sandbox(const char *from)
 
 static void run(void)
 {
+	int err = tst_variant == DOMAIN_KILLER ? EPERM : 0;
+
 	/* isolate test inside a process so we won't stack too many
 	 * layers (-E2BIG) when there are multiple test's iterations
 	 */
@@ -62,11 +64,7 @@ static void run(void)
 
 		TST_CHECKPOINT_WAKE(0);
 
-		if (tst_variant == DOMAIN_KILLER)
-			TST_EXP_FAIL(kill(paused_pid, SIGKILL), EPERM);
-		else
-			TST_EXP_PASS(kill(paused_pid, SIGKILL));
-
+		TST_EXP_PASS_OR_FAIL(kill(paused_pid, SIGKILL), err);
 		exit(0);
 	}
 
diff --git a/testcases/kernel/syscalls/landlock/landlock_tester.h b/testcases/kernel/syscalls/landlock/landlock_tester.h
index 4e77e8a61f..3e2abd2e78 100644
--- a/testcases/kernel/syscalls/landlock/landlock_tester.h
+++ b/testcases/kernel/syscalls/landlock/landlock_tester.h
@@ -145,7 +145,7 @@ static void tester_cleanup_files(void)
 	_remove_file(FILE_REGULAR);
 }
 
-static void _test_exec(const int result)
+static void _test_exec(const int exp_err)
 {
 	int status;
 	pid_t pid;
@@ -155,16 +155,7 @@ static void _test_exec(const int result)
 
 	pid = SAFE_FORK();
 	if (!pid) {
-		int rval;
-
-		if (result == TPASS) {
-			rval = execve(FILE_EXEC, args, NULL);
-			if (rval == -1)
-				tst_res(TFAIL | TERRNO, "Failed to execute test binary");
-		} else {
-			TST_EXP_FAIL(execve(FILE_EXEC, args, NULL), EACCES);
-		}
-
+		TST_EXP_PASS_OR_FAIL(execve(FILE_EXEC, args, NULL), exp_err);
 		_exit(1);
 	}
 
@@ -172,31 +163,23 @@ static void _test_exec(const int result)
 	if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
 		return;
 
-	tst_res(result, "Test binary has been executed");
+	tst_res(exp_err ? TFAIL : TPASS, "Test binary has been executed");
 }
 
-static void _test_write(const int result)
+static void _test_write(const int exp_err)
 {
 	tst_res(TINFO, "Test writing file");
 
-	if (result == TPASS)
-		TST_EXP_FD(open(FILE_WRITE, O_WRONLY, PERM_MODE));
-	else
-		TST_EXP_FAIL(open(FILE_WRITE, O_WRONLY, PERM_MODE), EACCES);
-
+	TST_EXP_FD_OR_FAIL(open(FILE_WRITE, O_WRONLY, PERM_MODE), exp_err);
 	if (TST_RET != -1)
 		SAFE_CLOSE(TST_RET);
 }
 
-static void _test_read(const int result)
+static void _test_read(const int exp_err)
 {
 	tst_res(TINFO, "Test reading file");
 
-	if (result == TPASS)
-		TST_EXP_FD(open(FILE_READ, O_RDONLY, PERM_MODE));
-	else
-		TST_EXP_FAIL(open(FILE_READ, O_RDONLY, PERM_MODE), EACCES);
-
+	TST_EXP_FD_OR_FAIL(open(FILE_READ, O_RDONLY, PERM_MODE), exp_err);
 	if (TST_RET != -1)
 		SAFE_CLOSE(TST_RET);
 }
@@ -239,122 +222,90 @@ static void _test_readdir(const int result)
 	TST_EXP_EQ_LI(files_counted, ARRAY_SIZE(readdir_files));
 }
 
-static void _test_rmdir(const int result)
+static void _test_rmdir(const int exp_err)
 {
 	tst_res(TINFO, "Test removing directory");
-
-	if (result == TPASS)
-		TST_EXP_PASS(rmdir(DIR_RMDIR));
-	else
-		TST_EXP_FAIL(rmdir(DIR_RMDIR), EACCES);
+	TST_EXP_PASS_OR_FAIL(rmdir(DIR_RMDIR), exp_err);
 }
 
-static void _test_rmfile(const int result)
+static void _test_rmfile(const int exp_err)
 {
 	tst_res(TINFO, "Test removing file");
-
-	if (result == TPASS) {
-		TST_EXP_PASS(unlink(FILE_UNLINK));
-		TST_EXP_PASS(remove(FILE_REMOVE));
-	} else {
-		TST_EXP_FAIL(unlink(FILE_UNLINK), EACCES);
-		TST_EXP_FAIL(remove(FILE_REMOVE), EACCES);
-	}
+	TST_EXP_PASS_OR_FAIL(unlink(FILE_UNLINK), exp_err);
+	TST_EXP_PASS_OR_FAIL(remove(FILE_REMOVE), exp_err);
 }
 
-static void _test_make(const char *path, const int type, const int dev, const int result)
+static void _test_make(const char *path, const int type, const int dev, const int exp_err)
 {
 	tst_res(TINFO, "Test normal or special files creation");
-
-	if (result == TPASS)
-		TST_EXP_PASS(mknod(path, type | 0400, dev));
-	else
-		TST_EXP_FAIL(mknod(path, type | 0400, dev), EACCES);
+	TST_EXP_PASS_OR_FAIL(mknod(path, type | 0400, dev), exp_err);
 }
 
-static void _test_symbolic(const int result)
+static void _test_symbolic(const int exp_err)
 {
 	tst_res(TINFO, "Test symbolic links");
-
-	if (result == TPASS)
-		TST_EXP_PASS(symlink(FILE_SYM0, FILE_SYM1));
-	else
-		TST_EXP_FAIL(symlink(FILE_SYM0, FILE_SYM1), EACCES);
+	TST_EXP_PASS_OR_FAIL(symlink(FILE_SYM0, FILE_SYM1), exp_err);
 }
 
-static void _test_truncate(const int result)
+static void _test_truncate(const int exp_err)
 {
 	int fd;
 
 	tst_res(TINFO, "Test truncating file");
 
-	if (result == TPASS) {
-		TST_EXP_PASS(truncate(FILE_TRUNCATE, 10));
-
-		fd = SAFE_OPEN(FILE_TRUNCATE, O_WRONLY, PERM_MODE);
-		if (fd != -1) {
-			TST_EXP_PASS(ftruncate(fd, 10));
-			SAFE_CLOSE(fd);
-		}
-
-		fd = TST_EXP_FD(open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE));
-		if (fd != -1)
-			SAFE_CLOSE(fd);
-	} else {
-		TST_EXP_FAIL(truncate(FILE_TRUNCATE, 10), EACCES);
-
-		fd = open(FILE_TRUNCATE, O_WRONLY, PERM_MODE);
-		if (fd != -1) {
-			TST_EXP_FAIL(ftruncate(fd, 10), EACCES);
-			SAFE_CLOSE(fd);
-		}
-
-		TST_EXP_FAIL(open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE), EACCES);
-
-		if (TST_RET != -1)
-			SAFE_CLOSE(TST_RET);
+	TST_EXP_PASS_OR_FAIL(truncate(FILE_TRUNCATE, 10), exp_err);
+	TST_EXP_FD_OR_FAIL(fd = open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE), exp_err);
+	if (fd != -1) {
+		TST_EXP_PASS_OR_FAIL(ftruncate(fd, 10), exp_err);
+		SAFE_CLOSE(fd);
 	}
+
+	TST_EXP_FD_OR_FAIL(fd = open(FILE_TRUNCATE, O_WRONLY | O_TRUNC, PERM_MODE), exp_err);
+	if (fd != -1)
+		SAFE_CLOSE(TST_RET);
 }
 
 static void tester_run_fs_rules(const int rules, const int result)
 {
+	int exp_err = result == TPASS ? 0 : EACCES;
+
 	if (rules & LANDLOCK_ACCESS_FS_EXECUTE)
-		_test_exec(result);
+		_test_exec(exp_err);
 
 	if (rules & LANDLOCK_ACCESS_FS_WRITE_FILE)
-		_test_write(result);
+		_test_write(exp_err);
 
 	if (rules & LANDLOCK_ACCESS_FS_READ_FILE)
-		_test_read(result);
+		_test_read(exp_err);
 
 	if (rules & LANDLOCK_ACCESS_FS_READ_DIR)
 		_test_readdir(result);
 
 	if (rules & LANDLOCK_ACCESS_FS_REMOVE_DIR)
-		_test_rmdir(result);
+		_test_rmdir(exp_err);
 
 	if (rules & LANDLOCK_ACCESS_FS_REMOVE_FILE)
-		_test_rmfile(result);
+		_test_rmfile(exp_err);
 
 	if (rules & LANDLOCK_ACCESS_FS_MAKE_REG)
-		_test_make(FILE_REGULAR, S_IFREG, 0, result);
+		_test_make(FILE_REGULAR, S_IFREG, 0, exp_err);
 
 	if (strcmp(tst_device->fs_type, "vfat") &&
 	    strcmp(tst_device->fs_type, "exfat")) {
 		if (rules & LANDLOCK_ACCESS_FS_MAKE_CHAR)
-			_test_make(DEV_CHAR0, S_IFCHR, dev_chr, result);
+			_test_make(DEV_CHAR0, S_IFCHR, dev_chr, exp_err);
 
 		if (rules & LANDLOCK_ACCESS_FS_MAKE_BLOCK)
-			_test_make(DEV_BLK0, S_IFBLK, dev_blk, result);
+			_test_make(DEV_BLK0, S_IFBLK, dev_blk, exp_err);
 
 		if (rules & LANDLOCK_ACCESS_FS_MAKE_SOCK)
-			_test_make(FILE_SOCKET, S_IFSOCK, 0, result);
+			_test_make(FILE_SOCKET, S_IFSOCK, 0, exp_err);
 
 		if (rules & LANDLOCK_ACCESS_FS_MAKE_FIFO)
-			_test_make(FILE_FIFO, S_IFIFO, 0, result);
+			_test_make(FILE_FIFO, S_IFIFO, 0, exp_err);
 
 		if (rules & LANDLOCK_ACCESS_FS_MAKE_SYM)
-			_test_symbolic(result);
+			_test_symbolic(exp_err);
 	}
 
 	if (rules & LANDLOCK_ACCESS_FS_TRUNCATE) {
@@ -366,7 +317,7 @@ static void tester_run_fs_rules(const int rules, const int result)
 			return;
 		}
 
-		_test_truncate(result);
+		_test_truncate(exp_err);
 	}
 }
 
-- 
2.55.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.