Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1303)

Unified Diff: native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc

Issue 99203014: [NaCl SDK] Map active fds to absolute paths. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Conform to style guide Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « native_client_sdk/src/tests/nacl_io_test/kernel_object_test.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « native_client_sdk/src/tests/nacl_io_test/kernel_object_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698