diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fcntl-misc/output.txt | 10 | ||||
-rw-r--r-- | tests/fcntl-misc/src.c | 31 | ||||
-rw-r--r-- | tests/fcntl-open/output.txt | 723 | ||||
-rw-r--r-- | tests/fcntl-open/src.c | 56 | ||||
-rw-r--r-- | tests/fcntl/output.txt | 42 | ||||
-rw-r--r-- | tests/fcntl/src.c | 80 | ||||
-rw-r--r-- | tests/runner.py | 37 |
7 files changed, 979 insertions, 0 deletions
diff --git a/tests/fcntl-misc/output.txt b/tests/fcntl-misc/output.txt new file mode 100644 index 00000000..73eae541 --- /dev/null +++ b/tests/fcntl-misc/output.txt @@ -0,0 +1,10 @@ +posix_fadvise: 0 +errno: 0 + +posix_fallocate: 0 +errno: 0 +st_size: 6 + +posix_fallocate2: 0 +errno: 0 +st_size: 10 diff --git a/tests/fcntl-misc/src.c b/tests/fcntl-misc/src.c new file mode 100644 index 00000000..73734969 --- /dev/null +++ b/tests/fcntl-misc/src.c @@ -0,0 +1,31 @@ +#include <stdio.h> +#include <errno.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <string.h> + +int main() { + struct stat s; + int f = open("/test", O_RDONLY, 0777); + + printf("posix_fadvise: %d\n", posix_fadvise(f, 3, 2, POSIX_FADV_DONTNEED)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("posix_fallocate: %d\n", posix_fallocate(f, 3, 2)); + printf("errno: %d\n", errno); + stat("/test", &s); + printf("st_size: %d\n", s.st_size); + memset(&s, 0, sizeof s); + printf("\n"); + errno = 0; + + printf("posix_fallocate2: %d\n", posix_fallocate(f, 3, 7)); + printf("errno: %d\n", errno); + stat("/test", &s); + printf("st_size: %d\n", s.st_size); + memset(&s, 0, sizeof s); + + return 0; +} diff --git a/tests/fcntl-open/output.txt b/tests/fcntl-open/output.txt new file mode 100644 index 00000000..314ae880 --- /dev/null +++ b/tests/fcntl-open/output.txt @@ -0,0 +1,723 @@ +EXISTING FILE 0,0 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,0 +success: 1 +errno: 0 +st_mode: 040000 + +NON-EXISTING 0,0 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,1 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,1 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,1 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,2 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,2 +success: 1 +errno: 0 +st_mode: 040000 + +NON-EXISTING 0,2 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,3 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 0,3 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 0,3 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,4 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,4 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,4 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,5 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,5 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,5 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,6 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,6 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,6 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,7 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 0,7 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 0,7 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,8 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,8 +success: 1 +errno: 0 +st_mode: 040000 + +NON-EXISTING 0,8 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,9 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,9 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,9 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,10 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,10 +success: 1 +errno: 0 +st_mode: 040000 + +NON-EXISTING 0,10 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,11 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 0,11 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 0,11 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,12 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,12 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,12 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,13 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,13 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,13 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 0,14 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 0,14 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 0,14 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 0,15 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 0,15 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 0,15 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,0 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,0 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,0 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,1 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,1 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,1 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,2 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,2 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,2 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,3 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 1,3 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 1,3 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,4 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,4 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,4 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,5 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,5 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,5 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,6 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,6 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,6 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,7 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 1,7 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 1,7 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,8 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,8 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,8 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,9 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,9 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,9 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,10 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,10 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,10 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,11 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 1,11 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 1,11 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,12 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,12 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,12 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,13 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,13 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,13 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 1,14 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 1,14 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 1,14 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 1,15 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 1,15 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 1,15 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,0 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,0 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,0 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,1 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,1 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,1 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,2 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,2 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,2 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,3 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 2,3 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 2,3 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,4 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,4 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,4 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,5 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,5 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,5 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,6 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,6 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,6 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,7 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 2,7 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 2,7 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,8 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,8 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,8 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,9 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,9 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,9 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,10 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,10 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,10 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,11 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 2,11 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 2,11 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,12 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,12 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,12 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,13 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,13 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,13 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FILE 2,14 +success: 1 +errno: 0 +st_mode: 0100000 + +EXISTING FOLDER 2,14 +success: 0 +errno: 21 +st_mode: 040000 + +NON-EXISTING 2,14 +success: 0 +errno: 2 +st_mode: 00 + +EXISTING FILE 2,15 +success: 0 +errno: 17 +st_mode: 0100000 + +EXISTING FOLDER 2,15 +success: 0 +errno: 17 +st_mode: 040000 + +NON-EXISTING 2,15 +success: 1 +errno: 0 +st_mode: 0100000 + +CREAT +success: 1 +errno: 0 diff --git a/tests/fcntl-open/src.c b/tests/fcntl-open/src.c new file mode 100644 index 00000000..52d2e7e4 --- /dev/null +++ b/tests/fcntl-open/src.c @@ -0,0 +1,56 @@ +#include <stdio.h> +#include <errno.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <string.h> + +int main() { + struct stat s; + int modes[] = {O_RDONLY, O_WRONLY, O_RDWR}; + char nonexistent_name[] = "/noexist-##"; + + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 16; j++) { + int flags = modes[i]; + if (j & 0x1) flags |= O_CREAT; + if (j & 0x2) flags |= O_EXCL; + if (j & 0x4) flags |= O_TRUNC; + if (j & 0x8) flags |= O_APPEND; + + printf("EXISTING FILE %d,%d\n", i, j); + printf("success: %d\n", open("/test-file", flags, 0777) != -1); + printf("errno: %d\n", errno); + stat("/test-file", &s); + printf("st_mode: 0%o\n", s.st_mode & 037777777000); + memset(&s, 0, sizeof s); + printf("\n"); + errno = 0; + + printf("EXISTING FOLDER %d,%d\n", i, j); + printf("success: %d\n", open("/test-folder", flags, 0777) != -1); + printf("errno: %d\n", errno); + stat("/test-folder", &s); + printf("st_mode: 0%o\n", s.st_mode & 037777777000); + memset(&s, 0, sizeof s); + printf("\n"); + errno = 0; + + nonexistent_name[9] = 'a' + i; + nonexistent_name[10] = 'a' + j; + printf("NON-EXISTING %d,%d\n", i, j); + printf("success: %d\n", open(nonexistent_name, flags, 0777) != -1); + printf("errno: %d\n", errno); + stat(nonexistent_name, &s); + printf("st_mode: 0%o\n", s.st_mode & 037777777000); + memset(&s, 0, sizeof s); + printf("\n"); + errno = 0; + } + } + + printf("CREAT\n"); + printf("success: %d\n", creat("/creat-me", 0777) != -1); + printf("errno: %d\n", errno); + + return 0; +} diff --git a/tests/fcntl/output.txt b/tests/fcntl/output.txt new file mode 100644 index 00000000..1077e89b --- /dev/null +++ b/tests/fcntl/output.txt @@ -0,0 +1,42 @@ +F_DUPFD: 100 +errno: 0 + +F_DUPFD/error1: -1 +errno: 9 + +F_DUPFD/error2: -1 +errno: 22 + +F_GETFD: 0 +errno: 0 + +F_SETFD: 0 +errno: 0 + +F_GETFL: 2 +errno: 0 + +F_SETFL: 0 +errno: 0 + +F_GETFL/2: 0x402 +errno: 0 + +F_GETLK: 0 +errno: 0 +lk.l_type == F_UNLCK: 1 + +F_SETLK: 0 +errno: 0 + +F_SETLKW: 0 +errno: 0 + +F_SETOWN: -1 +errno: 22 + +F_GETOWN: -1 +errno: 22 + +INVALID: -1 +errno: 22 diff --git a/tests/fcntl/src.c b/tests/fcntl/src.c new file mode 100644 index 00000000..1e9a1536 --- /dev/null +++ b/tests/fcntl/src.c @@ -0,0 +1,80 @@ +#include <stdio.h> +#include <errno.h> +#include <fcntl.h> + +int main() { + int f = open("/test", O_RDWR, 0777); + + printf("F_DUPFD: %d\n", fcntl(f, F_DUPFD, 100)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_DUPFD/error1: %d\n", fcntl(50, F_DUPFD, 200)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_DUPFD/error2: %d\n", fcntl(f, F_DUPFD, -1)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_GETFD: %d\n", fcntl(f, F_GETFD)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_SETFD: %d\n", fcntl(f, F_SETFD)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_GETFL: %d\n", fcntl(f, F_GETFL)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_SETFL: %d\n", fcntl(f, F_SETFL, O_APPEND)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_GETFL/2: %#x\n", fcntl(f, F_GETFL)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + flock lk; + lk.l_type = 42; + printf("F_GETLK: %d\n", fcntl(f, F_GETLK, &lk)); + printf("errno: %d\n", errno); + printf("lk.l_type == F_UNLCK: %d\n", lk.l_type == F_UNLCK); + printf("\n"); + errno = 0; + + printf("F_SETLK: %d\n", fcntl(f, F_SETLK, &lk)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_SETLKW: %d\n", fcntl(f, F_SETLK, &lk)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_SETOWN: %d\n", fcntl(f, F_SETOWN, 123)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("F_GETOWN: %d\n", fcntl(f, F_GETOWN)); + printf("errno: %d\n", errno); + printf("\n"); + errno = 0; + + printf("INVALID: %d\n", fcntl(f, 123)); + printf("errno: %d\n", errno); + + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 27c19867..4a91f59e 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -2173,6 +2173,43 @@ if 'benchmark' not in sys.argv: expected = open(path_from_root('tests', 'stat', 'output.txt'), 'r').read() self.do_test(src, expected, post_build=addPreRun) + def test_fcntl(self): + def addPreRun(filename): + src = open(filename, 'r').read().replace( + '// {{PRE_RUN_ADDITIONS}}', + "FS.createDataFile('/', 'test', 'abcdef', true, true);" + ) + open(filename, 'w').write(src) + src = open(path_from_root('tests', 'fcntl', 'src.c'), 'r').read() + expected = open(path_from_root('tests', 'fcntl', 'output.txt'), 'r').read() + self.do_test(src, expected, post_build=addPreRun) + + def test_fcntl_open(self): + def addPreRun(filename): + src = open(filename, 'r').read().replace( + '// {{PRE_RUN_ADDITIONS}}', + ''' + FS.createDataFile('/', 'test-file', 'abcdef', true, true); + FS.createFolder('/', 'test-folder', true, true); + FS.root.write = true; + ''' + ) + open(filename, 'w').write(src) + src = open(path_from_root('tests', 'fcntl-open', 'src.c'), 'r').read() + expected = open(path_from_root('tests', 'fcntl-open', 'output.txt'), 'r').read() + self.do_test(src, expected, post_build=addPreRun) + + def test_fcntl_misc(self): + def addPreRun(filename): + src = open(filename, 'r').read().replace( + '// {{PRE_RUN_ADDITIONS}}', + "FS.createDataFile('/', 'test', 'abcdef', true, true);" + ) + open(filename, 'w').write(src) + src = open(path_from_root('tests', 'fcntl-misc', 'src.c'), 'r').read() + expected = open(path_from_root('tests', 'fcntl-misc', 'output.txt'), 'r').read() + self.do_test(src, expected, post_build=addPreRun) + def test_statvfs(self): src = r''' #include <stdio.h> |