Move realpath.c to upstream-freebsd.
This is actually a slightly newer upstream version than the one I originally pulled. Hopefully now it's in upstream-freebsd it will be easier to track upstream, though I still need to sit down and write the necessary scripts at some point. Bug: 5110679 Change-Id: I87e563f0f95aa8e68b45578e2a8f448bbf827a33
This commit is contained in:
@@ -17,6 +17,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <libgen.h>
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -70,3 +72,40 @@ TEST(stdlib, posix_memalign) {
|
||||
// Can't align to a non-power of 2.
|
||||
ASSERT_EQ(EINVAL, posix_memalign(&p, 81, 128));
|
||||
}
|
||||
|
||||
TEST(stdlib, realpath__NULL_filename) {
|
||||
errno = 0;
|
||||
char* p = realpath(NULL, NULL);
|
||||
ASSERT_TRUE(p == NULL);
|
||||
ASSERT_EQ(EINVAL, errno);
|
||||
}
|
||||
|
||||
TEST(stdlib, realpath__empty_filename) {
|
||||
errno = 0;
|
||||
char* p = realpath("", NULL);
|
||||
ASSERT_TRUE(p == NULL);
|
||||
ASSERT_EQ(ENOENT, errno);
|
||||
}
|
||||
|
||||
TEST(stdlib, realpath__ENOENT) {
|
||||
errno = 0;
|
||||
char* p = realpath("/this/directory/path/almost/certainly/does/not/exist", NULL);
|
||||
ASSERT_TRUE(p == NULL);
|
||||
ASSERT_EQ(ENOENT, errno);
|
||||
}
|
||||
|
||||
TEST(stdlib, realpath) {
|
||||
// Get the name of this executable.
|
||||
char executable_path[PATH_MAX];
|
||||
int rc = readlink("/proc/self/exe", executable_path, sizeof(executable_path));
|
||||
ASSERT_NE(rc, -1);
|
||||
executable_path[rc] = '\0';
|
||||
|
||||
char buf[PATH_MAX + 1];
|
||||
char* p = realpath("/proc/self/exe", buf);
|
||||
ASSERT_STREQ(executable_path, p);
|
||||
|
||||
p = realpath("/proc/self/exe", NULL);
|
||||
ASSERT_STREQ(executable_path, p);
|
||||
free(p);
|
||||
}
|
||||
|
Reference in New Issue
Block a user