Chromium Code Reviews| 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..ced9e29f1f34e8df45609a32fa2c19ac902c1ce9 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,42 @@ TEST_F(KernelProxyTest, WorkingDirectory) { |
| EXPECT_STREQ("/foo", text); |
| } |
| +TEST_F(KernelProxyTest, FDPathMapping) { |
| + char text[1024]; |
| + |
| + int fd1, fd2, fd3, fd4; |
| + |
| + 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); |
|
binji
2014/01/07 21:40:29
can you add tests for using fchdir on a fd that wa
|
| +} |
| + |
| TEST_F(KernelProxyTest, MemMountIO) { |
| char text[1024]; |
| int fd1, fd2, fd3; |