Index: native_client_sdk/src/tests/nacl_io_test/fuse_fs_test.cc |
diff --git a/native_client_sdk/src/tests/nacl_io_test/fuse_fs_test.cc b/native_client_sdk/src/tests/nacl_io_test/fuse_fs_test.cc |
index 962ca811921a7f60dbdc0529f17724f607c4cd51..bf4b51d8a03cb20e94acc992b77ea64a14a536dd 100644 |
--- a/native_client_sdk/src/tests/nacl_io_test/fuse_fs_test.cc |
+++ b/native_client_sdk/src/tests/nacl_io_test/fuse_fs_test.cc |
@@ -36,6 +36,7 @@ struct File { |
typedef std::vector<File> Files; |
Files g_files; |
+mode_t last_create_mode = 0666; |
bool IsValidPath(const char* path) { |
if (path == NULL) |
@@ -74,7 +75,7 @@ int testfs_getattr(const char* path, struct stat* stbuf) { |
if (file == NULL) |
return -ENOENT; |
- stbuf->st_mode = S_IFREG | 0666; |
+ stbuf->st_mode = S_IFREG | last_create_mode; |
stbuf->st_size = file->data.size(); |
return 0; |
} |
@@ -95,7 +96,7 @@ int testfs_readdir(const char* path, |
return 0; |
} |
-int testfs_create(const char* path, mode_t, struct fuse_file_info* fi) { |
+int testfs_create(const char* path, mode_t mode, struct fuse_file_info* fi) { |
if (!IsValidPath(path)) |
return -ENOENT; |
@@ -108,6 +109,7 @@ int testfs_create(const char* path, mode_t, struct fuse_file_info* fi) { |
file = &g_files.back(); |
file->name = &path[1]; // Skip initial / |
} |
+ last_create_mode = mode; |
return 0; |
} |
@@ -232,6 +234,17 @@ TEST_F(FuseFsTest, OpenAndRead) { |
ASSERT_STREQ("World!\n", buffer); |
} |
+TEST_F(FuseFsTest, CreateWithMode) { |
+ ScopedNode node; |
+ struct stat statbuf; |
+ |
+ ASSERT_EQ(0, fs_.OpenWithMode(Path("/hello"), |
+ O_RDWR | O_CREAT, 0723, &node)); |
+ EXPECT_EQ(0, node->GetStat(&statbuf)); |
+ EXPECT_EQ(S_IFREG, statbuf.st_mode & S_IFMT); |
+ EXPECT_EQ(0723, statbuf.st_mode & ~S_IFMT); |
+} |
+ |
TEST_F(FuseFsTest, CreateAndWrite) { |
ScopedNode node; |
ASSERT_EQ(0, fs_.Open(Path("/foobar"), O_RDWR | O_CREAT, &node)); |
@@ -341,14 +354,14 @@ void KernelProxyFuseTest::TearDown() { |
TEST_F(KernelProxyFuseTest, Basic) { |
// Write a file. |
- int fd = ki_open("/hello", O_WRONLY | O_CREAT); |
+ int fd = ki_open("/hello", O_WRONLY | O_CREAT, 0777); |
ASSERT_GT(fd, -1); |
ASSERT_EQ(sizeof(hello_world), |
ki_write(fd, hello_world, sizeof(hello_world))); |
EXPECT_EQ(0, ki_close(fd)); |
// Then read it back in. |
- fd = ki_open("/hello", O_RDONLY); |
+ fd = ki_open("/hello", O_RDONLY, 0); |
ASSERT_GT(fd, -1); |
char buffer[30]; |