diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-04-09 15:39:23 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-04-09 15:39:23 -0400 |
commit | 29a397e2b28783c18e896da3fce8335130c271fa (patch) | |
tree | aa67561b5b6549fdaab1638aee0820f4895486d8 /tests/test_fs_mkdirs.c | |
parent | 0f0dd17bc5a2c3149684f2a50fbefae09e49be72 (diff) | |
download | spmc-29a397e2b28783c18e896da3fce8335130c271fa.tar.gz |
Add test_fs_mkdirs
Diffstat (limited to 'tests/test_fs_mkdirs.c')
-rw-r--r-- | tests/test_fs_mkdirs.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/test_fs_mkdirs.c b/tests/test_fs_mkdirs.c new file mode 100644 index 0000000..85ebfad --- /dev/null +++ b/tests/test_fs_mkdirs.c @@ -0,0 +1,40 @@ +#include "spm.h" +#include "framework.h" + +const char *testFmt = "returned '%d', expected '%d'\n"; +struct TestCase testCase[] = { + {.arg[0].str = "one", .truthValue.signed_integer = 0}, + {.arg[0].str = "one/two", .truthValue.signed_integer = 0}, + {.arg[0].str = "one/two/three", .truthValue.signed_integer = 0}, + {.arg[0].str = "one/two/three/four", .truthValue.signed_integer = 0}, + {.arg[0].str = "one/two/three/four/five", .truthValue.signed_integer = 0}, +}; +size_t numCases = sizeof(testCase) / sizeof(struct TestCase); + +int main(int argc, char *argv[]) { + for (size_t i = 0; i < numCases; i++) { + int present = 0; + int result = 0; + char path_root[PATH_MAX] = {"test_fs_mkdirs_XXXXXX"}; + char *path = NULL; + + if (mkdtemp(path_root) == NULL) { + perror("mkdtemp failed to create temporary directory"); + exit(errno); + } + + path = join((char *[]){path_root, testCase[i].caseValue.str, NULL}, DIRSEPS); + + if ((result = mkdirs(path, 0755)) < 0) { + perror(path); + exit(1); + } + present = access(path, X_OK); + + myassert(result == 0, testFmt, result, testCase[i].truthValue.signed_integer); + myassert(present == 0, testFmt, result, testCase[i].truthValue.signed_integer); + + rmdirs(path); + } + return 0; +}
\ No newline at end of file |