aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/tests/posix/realpath.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mlibc/tests/posix/realpath.c')
-rw-r--r--lib/mlibc/tests/posix/realpath.c133
1 files changed, 0 insertions, 133 deletions
diff --git a/lib/mlibc/tests/posix/realpath.c b/lib/mlibc/tests/posix/realpath.c
deleted file mode 100644
index e44de81..0000000
--- a/lib/mlibc/tests/posix/realpath.c
+++ /dev/null
@@ -1,133 +0,0 @@
-#include <unistd.h>
-#include <sys/stat.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-
-#ifdef USE_HOST_LIBC
-#define TEST_BASE "/tmp/mlibc-realpath-host-libc"
-#else
-#define TEST_BASE "/tmp/mlibc-realpath"
-#endif
-
-void prepare() {
- assert(!mkdir(TEST_BASE "/", S_IRWXU));
- assert(!mkdir(TEST_BASE "/dir1", S_IRWXU));
- assert(!mkdir(TEST_BASE "/dir2", S_IRWXU));
- assert(!symlink(TEST_BASE "/dir2/", TEST_BASE "/dir1/abs-link"));
- assert(!chdir(TEST_BASE "/dir1"));
- assert(!symlink("../dir2/", TEST_BASE "/dir1/rel-link"));
-}
-
-void cleanup(int do_assert) {
- if (do_assert) {
- assert(!unlink(TEST_BASE "/dir1/rel-link"));
- assert(!unlink(TEST_BASE "/dir1/abs-link"));
- assert(!rmdir(TEST_BASE "/dir2"));
- assert(!rmdir(TEST_BASE "/dir1"));
- assert(!rmdir(TEST_BASE "/"));
- } else {
- unlink(TEST_BASE "/dir1/rel-link");
- unlink(TEST_BASE "/dir1/abs-link");
- rmdir(TEST_BASE "/dir2");
- rmdir(TEST_BASE "/dir1");
- rmdir(TEST_BASE "/");
- }
-}
-
-void signal_handler(int sig, siginfo_t *info, void *ctx) {
- (void)sig;
- (void)info;
- (void)ctx;
-
- cleanup(0);
-
- struct sigaction sa;
- sigemptyset(&sa.sa_mask);
- sa.sa_handler = SIG_DFL;
- sa.sa_flags = 0;
-
- sigaction(SIGABRT, &sa, NULL);
- abort();
-}
-
-int main() {
- char *path;
-
- struct sigaction sa;
- sigemptyset(&sa.sa_mask);
- sa.sa_sigaction = signal_handler;
- sa.sa_flags = SA_SIGINFO;
- sigaction(SIGABRT, &sa, NULL);
-
- prepare();
-
- path = realpath(TEST_BASE "/dir1/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir1"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/../dir2", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/abs-link/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/rel-link/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/abs-link/../", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE ""));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/rel-link/../", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE ""));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/abs-link/../dir1/abs-link/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/rel-link/../dir1/rel-link/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/abs-link/../dir1/rel-link/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath(TEST_BASE "/dir1/rel-link/../dir1/abs-link/", NULL);
- assert(path);
- assert(!strcmp(path, TEST_BASE "/dir2"));
- free(path);
-
- path = realpath("/tmp", NULL);
- assert(path);
- assert(!strcmp(path, "/tmp"));
- free(path);
-
- path = realpath("/", NULL);
- assert(path);
- assert(!strcmp(path, "/"));
- free(path);
-
- path = realpath("//", NULL);
- assert(path);
- assert(!strcmp(path, "/"));
- free(path);
-
- cleanup(1);
-}