diff options
author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2020-04-10 01:59:02 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-10 01:59:02 -0400 |
commit | 71c0eab454352578fa58abaa47984ca6d6a588c3 (patch) | |
tree | b4c548e019aadf603cb9d68e15fccd8119a14253 /tests/test_fs_mkdirs.c | |
parent | 0f0dd17bc5a2c3149684f2a50fbefae09e49be72 (diff) | |
parent | 4257dafd1f3b0bcb6325519287481976c960be49 (diff) | |
download | spmc-71c0eab454352578fa58abaa47984ca6d6a588c3.tar.gz |
Merge pull request #18 from jhunkeler/test-fs_mkdirs
Test fs mkdirs
Diffstat (limited to 'tests/test_fs_mkdirs.c')
-rw-r--r-- | tests/test_fs_mkdirs.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_fs_mkdirs.c b/tests/test_fs_mkdirs.c new file mode 100644 index 0000000..5229769 --- /dev/null +++ b/tests/test_fs_mkdirs.c @@ -0,0 +1,43 @@ +#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); + + present = access(path, X_OK); + myassert(present != 0, testFmt, result, testCase[i].truthValue.signed_integer); + } + return 0; +}
\ No newline at end of file |