diff mbox series

[v2] open08.c: Use TST_EXP_FAIL2() and SAFE_CLOSE()

Message ID 20220710104449.10387-1-akumar@suse.de
State Accepted
Headers show
Series [v2] open08.c: Use TST_EXP_FAIL2() and SAFE_CLOSE() | expand

Commit Message

Avinesh Kumar July 10, 2022, 10:44 a.m. UTC
Make use of TST_EXP_FAIL2() macro with testcase descriptions

Signed-off-by: Avinesh Kumar <akumar@suse.de>
---
 testcases/kernel/syscalls/open/open08.c | 36 ++++++++-----------------
 1 file changed, 11 insertions(+), 25 deletions(-)

Comments

Petr Vorel July 11, 2022, 6:40 a.m. UTC | #1
Hi Avinesh,

> Make use of TST_EXP_FAIL2() macro with testcase descriptions
+1

Also +1 for static :).

...
> +++ b/testcases/kernel/syscalls/open/open08.c
> @@ -33,34 +33,20 @@ static struct test_case_t {
>  	char **fname;
>  	int flags;
>  	int error;
> +	const char *desc;
>  } tcases[] = {
> -	{&existing_fname, O_CREAT | O_EXCL, EEXIST},
> -	{&dir_fname, O_RDWR, EISDIR},
> -	{&existing_fname, O_DIRECTORY, ENOTDIR},
> -	{&toolong_fname, O_RDWR, ENAMETOOLONG},
> -	{&user2_fname, O_WRONLY, EACCES},
> -	{&unmapped_fname, O_CREAT, EFAULT}
> +	{&existing_fname, O_CREAT | O_EXCL, EEXIST, "open() existing file with 'O_CREAT | O_EXCL'"},
> +	{&dir_fname, O_RDWR, EISDIR, "open() existing directory with write access"},
> +	{&existing_fname, O_DIRECTORY, ENOTDIR, "open() non-directory pathname with O_DIRECTORY"},
> +	{&toolong_fname, O_RDWR, ENAMETOOLONG, "open() too long pathname"},
> +	{&user2_fname, O_WRONLY, EACCES, "open() file without requested access rights"},
> +	{&unmapped_fname, O_CREAT, EFAULT, "open() pathname with bad address"}
>  };

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Instead of text descriptions I'd just print flags:

#define FLAGS_DESC(x) .flags = x, .desc = #x

static struct test_case_t {
	char **fname;
	int flags;
	const char *desc;
	int error;
} tcases[] = {
	{&existing_fname, FLAGS_DESC(O_CREAT | O_EXCL), EEXIST},
	{&dir_fname, FLAGS_DESC(O_RDWR), EISDIR},
	{&existing_fname, FLAGS_DESC(O_DIRECTORY), ENOTDIR},
	{&toolong_fname, FLAGS_DESC(O_RDWR), ENAMETOOLONG},
	{&user2_fname, FLAGS_DESC(O_WRONLY), EACCES},
	{&unmapped_fname, FLAGS_DESC(O_CREAT), EFAULT},
};

# ./open08 
tst_test.c:1526: TINFO: Timeout per run is 0h 00m 30s
open08.c:52: TPASS: O_CREAT | O_EXCL : EEXIST (17)
open08.c:52: TPASS: O_RDWR : EISDIR (21)
open08.c:52: TPASS: O_DIRECTORY : ENOTDIR (20)
open08.c:52: TPASS: O_RDWR : ENAMETOOLONG (36)
open08.c:52: TPASS: O_WRONLY : EACCES (13)
open08.c:52: TPASS: O_CREAT : EFAULT (14)

If you agree, I can merge it with this change.

Kind regards,
Petr
Avinesh Kumar July 11, 2022, 8:59 a.m. UTC | #2
Hi Petr, 

On Monday, July 11, 2022 12:10:57 PM IST Petr Vorel wrote:
> Hi Avinesh,
> 
> > Make use of TST_EXP_FAIL2() macro with testcase descriptions
> +1
> 
> Also +1 for static :).
> 
> ...
> > +++ b/testcases/kernel/syscalls/open/open08.c
> > @@ -33,34 +33,20 @@ static struct test_case_t {
> >  	char **fname;
> >  	int flags;
> >  	int error;
> > +	const char *desc;
> >  } tcases[] = {
> > -	{&existing_fname, O_CREAT | O_EXCL, EEXIST},
> > -	{&dir_fname, O_RDWR, EISDIR},
> > -	{&existing_fname, O_DIRECTORY, ENOTDIR},
> > -	{&toolong_fname, O_RDWR, ENAMETOOLONG},
> > -	{&user2_fname, O_WRONLY, EACCES},
> > -	{&unmapped_fname, O_CREAT, EFAULT}
> > +	{&existing_fname, O_CREAT | O_EXCL, EEXIST, "open() existing file with 'O_CREAT | O_EXCL'"},
> > +	{&dir_fname, O_RDWR, EISDIR, "open() existing directory with write access"},
> > +	{&existing_fname, O_DIRECTORY, ENOTDIR, "open() non-directory pathname with O_DIRECTORY"},
> > +	{&toolong_fname, O_RDWR, ENAMETOOLONG, "open() too long pathname"},
> > +	{&user2_fname, O_WRONLY, EACCES, "open() file without requested access rights"},
> > +	{&unmapped_fname, O_CREAT, EFAULT, "open() pathname with bad address"}
> >  };
> 
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
> 
> Instead of text descriptions I'd just print flags:
> 
> #define FLAGS_DESC(x) .flags = x, .desc = #x
> 
> static struct test_case_t {
> 	char **fname;
> 	int flags;
> 	const char *desc;
> 	int error;
> } tcases[] = {
> 	{&existing_fname, FLAGS_DESC(O_CREAT | O_EXCL), EEXIST},
> 	{&dir_fname, FLAGS_DESC(O_RDWR), EISDIR},
> 	{&existing_fname, FLAGS_DESC(O_DIRECTORY), ENOTDIR},
> 	{&toolong_fname, FLAGS_DESC(O_RDWR), ENAMETOOLONG},
> 	{&user2_fname, FLAGS_DESC(O_WRONLY), EACCES},
> 	{&unmapped_fname, FLAGS_DESC(O_CREAT), EFAULT},
> };
> 
> # ./open08 
> tst_test.c:1526: TINFO: Timeout per run is 0h 00m 30s
> open08.c:52: TPASS: O_CREAT | O_EXCL : EEXIST (17)
> open08.c:52: TPASS: O_RDWR : EISDIR (21)
> open08.c:52: TPASS: O_DIRECTORY : ENOTDIR (20)
> open08.c:52: TPASS: O_RDWR : ENAMETOOLONG (36)
> open08.c:52: TPASS: O_WRONLY : EACCES (13)
> open08.c:52: TPASS: O_CREAT : EFAULT (14)
> 
> If you agree, I can merge it with this change.
Yes, this is nice, please go ahead.

> 
> Kind regards,
> Petr
> 

Thanks,
Avinesh
Petr Vorel July 11, 2022, 2:59 p.m. UTC | #3
Hi Avinesh,

> > If you agree, I can merge it with this change.
> Yes, this is nice, please go ahead.

Good, merged. Thanks!

Kind regards,
Petr
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/open/open08.c b/testcases/kernel/syscalls/open/open08.c
index 890fe2818..0742324c9 100644
--- a/testcases/kernel/syscalls/open/open08.c
+++ b/testcases/kernel/syscalls/open/open08.c
@@ -33,34 +33,20 @@  static struct test_case_t {
 	char **fname;
 	int flags;
 	int error;
+	const char *desc;
 } tcases[] = {
-	{&existing_fname, O_CREAT | O_EXCL, EEXIST},
-	{&dir_fname, O_RDWR, EISDIR},
-	{&existing_fname, O_DIRECTORY, ENOTDIR},
-	{&toolong_fname, O_RDWR, ENAMETOOLONG},
-	{&user2_fname, O_WRONLY, EACCES},
-	{&unmapped_fname, O_CREAT, EFAULT}
+	{&existing_fname, O_CREAT | O_EXCL, EEXIST, "open() existing file with 'O_CREAT | O_EXCL'"},
+	{&dir_fname, O_RDWR, EISDIR, "open() existing directory with write access"},
+	{&existing_fname, O_DIRECTORY, ENOTDIR, "open() non-directory pathname with O_DIRECTORY"},
+	{&toolong_fname, O_RDWR, ENAMETOOLONG, "open() too long pathname"},
+	{&user2_fname, O_WRONLY, EACCES, "open() file without requested access rights"},
+	{&unmapped_fname, O_CREAT, EFAULT, "open() pathname with bad address"}
 };
 
-void verify_open(unsigned int i)
+static void verify_open(unsigned int i)
 {
-	TEST(open(*tcases[i].fname, tcases[i].flags,
-		S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
-
-	if (TST_RET != -1) {
-		tst_res(TFAIL, "call succeeded unexpectedly");
-		return;
-	}
-
-	if (TST_ERR == tcases[i].error) {
-		tst_res(TPASS, "expected failure - "
-				"errno = %d : %s", TST_ERR,
-				strerror(TST_ERR));
-	} else {
-		tst_res(TFAIL, "unexpected error - %d : %s - "
-				"expected %d", TST_ERR,
-				strerror(TST_ERR), tcases[i].error);
-	}
+	TST_EXP_FAIL2(open(*tcases[i].fname, tcases[i].flags, 0644),
+				tcases[i].error, "%s", tcases[i].desc);
 }
 
 static void setup(void)
@@ -79,7 +65,7 @@  static void setup(void)
 	SAFE_SETUID(ltpuser->pw_uid);
 
 	fildes = SAFE_CREAT(existing_fname, 0600);
-	close(fildes);
+	SAFE_CLOSE(fildes);
 
 	unmapped_fname = tst_get_bad_addr(NULL);
 }