| Index: native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| diff --git a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| index 44c158d65e41dcb85e4e22cd800eb5a7f51245df..55b7ee640aaacc9477889e7d78793473b191011e 100644
|
| --- a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| +++ b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| @@ -282,6 +282,62 @@ TEST_F(KernelProxyTest, WorkingDirectory) {
|
| EXPECT_STREQ("/foo", text);
|
| }
|
|
|
| +TEST_F(KernelProxyTest, FDPathMapping) {
|
| + char text[1024];
|
| +
|
| + int fd1, fd2, fd3, fd4, fd5;
|
| +
|
| + EXPECT_EQ(0, ki_mkdir("/foo", S_IREAD | S_IWRITE));
|
| + EXPECT_EQ(0, ki_mkdir("/foo/bar", S_IREAD | S_IWRITE));
|
| + EXPECT_EQ(0, ki_mkdir("/example", S_IREAD | S_IWRITE));
|
| + ki_chdir("/foo");
|
| +
|
| + fd1 = ki_open("/example", O_RDONLY);
|
| + EXPECT_NE(-1, fd1);
|
| + EXPECT_EQ(ki_fchdir(fd1), 0);
|
| + EXPECT_EQ(text, ki_getcwd(text, sizeof(text)));
|
| + EXPECT_STREQ("/example", text);
|
| +
|
| + EXPECT_EQ(0, ki_chdir("/foo"));
|
| + fd2 = ki_open("../example", O_RDONLY);
|
| + EXPECT_NE(-1, fd2);
|
| + EXPECT_EQ(0, ki_fchdir(fd2));
|
| + EXPECT_EQ(text, ki_getcwd(text, sizeof(text)));
|
| + EXPECT_STREQ("/example", text);
|
| +
|
| + EXPECT_EQ(0, ki_chdir("/foo"));
|
| + fd3 = ki_open("../test", O_CREAT | O_RDWR);
|
| + EXPECT_NE(-1, fd3);
|
| + EXPECT_EQ(-1, ki_fchdir(fd3));
|
| + EXPECT_EQ(ENOTDIR, errno);
|
| +
|
| + EXPECT_EQ(0, ki_chdir("/foo"));
|
| + fd4 = ki_open("bar", O_RDONLY);
|
| + EXPECT_EQ(0, ki_fchdir(fd4));
|
| + EXPECT_EQ(text, ki_getcwd(text, sizeof(text)));
|
| + EXPECT_STREQ("/foo/bar", text);
|
| + EXPECT_EQ(0, ki_chdir("/example"));
|
| + EXPECT_EQ(0, ki_fchdir(fd4));
|
| + EXPECT_EQ(text, ki_getcwd(text, sizeof(text)));
|
| + EXPECT_STREQ("/foo/bar", text);
|
| +
|
| + EXPECT_EQ(0, ki_chdir("/example"));
|
| + fd5 = ki_dup(fd4);
|
| + ASSERT_GT(fd5, -1);
|
| + ASSERT_NE(fd4, fd5);
|
| + EXPECT_EQ(0, ki_fchdir(fd5));
|
| + EXPECT_EQ(text, ki_getcwd(text, sizeof(text)));
|
| + EXPECT_STREQ("/foo/bar", text);
|
| +
|
| + fd5 = 123;
|
| +
|
| + EXPECT_EQ(0, ki_chdir("/example"));
|
| + EXPECT_EQ(fd5, ki_dup2(fd4, fd5));
|
| + EXPECT_EQ(0, ki_fchdir(fd5));
|
| + EXPECT_EQ(text, ki_getcwd(text, sizeof(text)));
|
| + EXPECT_STREQ("/foo/bar", text);
|
| +}
|
| +
|
| TEST_F(KernelProxyTest, MemMountIO) {
|
| char text[1024];
|
| int fd1, fd2, fd3;
|
|
|