From: Amir Goldstein Date: Wed, 9 Jun 2021 10:34:17 +0000 (+0300) Subject: test/test_syscalls.c: use unique filename per test X-Git-Tag: fuse-3.10.5~12 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=057d6de867b6a0b1750c25ac4e4417f364d42dd6;p=qemu-gpiodev%2Flibfuse.git test/test_syscalls.c: use unique filename per test Generate unique filename per test (only for regular file for now). Make sure to unlink the unique filename after each test. realpath variable was renamed to basepath_r to fix build warning on conflicting symbols with realpath() function. Signed-off-by: Amir Goldstein --- diff --git a/test/test_syscalls.c b/test/test_syscalls.c index cd799ce..487c0fe 100644 --- a/test/test_syscalls.c +++ b/test/test_syscalls.c @@ -21,6 +21,8 @@ #endif +static const char *basepath; +static const char *basepath_r; static char testfile[1024]; static char testfile2[1024]; static char testdir[1024]; @@ -42,7 +44,7 @@ static long seekdir_offsets[4]; static char zerodata[4096]; static int testdatalen = sizeof(testdata) - 1; static int testdata2len = sizeof(testdata2) - 1; -static unsigned int testnum = 1; +static unsigned int testnum = 0; static unsigned int select_test = 0; static unsigned int skip_test = 0; @@ -84,17 +86,20 @@ static void __start_test(const char *fmt, ...) { unsigned int n; va_list ap; - n = sprintf(testname, "%3i [", testnum++); + n = sprintf(testname, "%3i [", testnum); va_start(ap, fmt); n += vsprintf(testname + n, fmt, ap); va_end(ap); sprintf(testname + n, "]"); + // Use dedicated testfile per test + sprintf(testfile, "%s/testfile.%d", basepath, testnum); + sprintf(testfile_r, "%s/testfile.%d", basepath_r, testnum); } #define start_test(msg, args...) { \ + testnum++; \ if ((select_test && testnum != select_test) || \ (testnum == skip_test)) { \ - testnum++; \ return 0; \ } \ __start_test(msg, ##args); \ @@ -1199,6 +1204,19 @@ static int do_test_open_acc(int flags, const char *flags_str, int mode, int err) } close(fd); } + + res = unlink(testfile); + if (res == -1) { + PERROR("unlink"); + return -1; + } + res = check_nonexist(testfile); + if (res == -1) + return -1; + res = check_nonexist(testfile_r); + if (res == -1) + return -1; + success(); return 0; } @@ -1254,6 +1272,15 @@ static int test_symlink(void) if (err) return -1; + res = unlink(testfile); + if (res == -1) { + PERROR("unlink"); + return -1; + } + res = check_nonexist(testfile); + if (res == -1) + return -1; + success(); return 0; } @@ -1835,8 +1862,6 @@ static int do_test_create_ro_dir(int flags, const char *flags_str) int main(int argc, char *argv[]) { - const char *basepath; - const char *realpath; int err = 0; int a; int is_root; @@ -1847,12 +1872,12 @@ int main(int argc, char *argv[]) return 1; } basepath = argv[1]; - realpath = basepath; + basepath_r = basepath; for (a = 2; a < argc; a++) { char *endptr; char *arg = argv[a]; if (arg[0] == ':') { - realpath = arg + 1; + basepath_r = arg + 1; } else { if (arg[0] == '-') { arg++; @@ -1867,7 +1892,7 @@ int main(int argc, char *argv[]) } } assert(strlen(basepath) < 512); - assert(strlen(realpath) < 512); + assert(strlen(basepath_r) < 512); if (basepath[0] != '/') { fprintf(stderr, "testdir must be an absolute path\n"); return 1; @@ -1880,10 +1905,10 @@ int main(int argc, char *argv[]) sprintf(subfile, "%s/subfile", testdir2); sprintf(testsock, "%s/testsock", basepath); - sprintf(testfile_r, "%s/testfile", realpath); - sprintf(testfile2_r, "%s/testfile2", realpath); - sprintf(testdir_r, "%s/testdir", realpath); - sprintf(testdir2_r, "%s/testdir2", realpath); + sprintf(testfile_r, "%s/testfile", basepath_r); + sprintf(testfile2_r, "%s/testfile2", basepath_r); + sprintf(testdir_r, "%s/testdir", basepath_r); + sprintf(testdir2_r, "%s/testdir2", basepath_r); sprintf(subfile_r, "%s/subfile", testdir2_r); is_root = (geteuid() == 0); @@ -1959,7 +1984,6 @@ int main(int argc, char *argv[]) err += test_create_ro_dir(O_CREAT | O_TRUNC); err += test_copy_file_range(); - unlink(testfile); unlink(testfile2); unlink(testsock); rmdir(testdir);