Index: native_client_sdk/src/tests/nacl_io_test/http_fs_test.cc |
diff --git a/native_client_sdk/src/tests/nacl_io_test/http_fs_test.cc b/native_client_sdk/src/tests/nacl_io_test/http_fs_test.cc |
index 307fb61fcb49744f57ae60d305630581ba30c3bb..a0d4bf56709a80b6b428912a73cbf317091ec56a 100644 |
--- a/native_client_sdk/src/tests/nacl_io_test/http_fs_test.cc |
+++ b/native_client_sdk/src/tests/nacl_io_test/http_fs_test.cc |
@@ -178,8 +178,7 @@ TEST_P(HttpFsTest, GetStat) { |
struct stat statbuf; |
EXPECT_EQ(0, node->GetStat(&statbuf)); |
- EXPECT_EQ(S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, |
- statbuf.st_mode); |
+ EXPECT_EQ(S_IFREG | S_IRUSR | S_IRGRP | S_IROTH, statbuf.st_mode); |
EXPECT_EQ(strlen(contents), statbuf.st_size); |
// These are not currently set. |
EXPECT_EQ(0, statbuf.st_atime); |
@@ -253,8 +252,7 @@ TEST_P(HttpFsLargeFileTest, GetStat) { |
struct stat statbuf; |
EXPECT_EQ(0, node->GetStat(&statbuf)); |
- EXPECT_EQ(S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, |
- statbuf.st_mode); |
+ EXPECT_EQ(S_IFREG | S_IRUSR | S_IRGRP | S_IROTH, statbuf.st_mode); |
EXPECT_EQ(size, statbuf.st_size); |
// These are not currently set. |
EXPECT_EQ(0, statbuf.st_atime); |
@@ -270,6 +268,21 @@ INSTANTIATE_TEST_CASE_P(Default, |
::testing::Values((uint32_t)kStringMapParamCacheNone, |
(uint32_t)kStringMapParamCacheStat)); |
+TEST(HttpFsDirTest, Root) { |
+ StringMap_t args; |
+ HttpFsForTesting fs(args, NULL); |
+ |
+ // Check root node is directory |
+ ScopedNode node; |
+ ASSERT_EQ(0, fs.Open(Path("/"), O_RDONLY, &node)); |
+ ASSERT_TRUE(node->IsaDir()); |
+ |
+ // We have to r+w access to the root node |
+ ASSERT_EQ(0, fs.Access(Path("/"), R_OK)); |
+ ASSERT_EQ(0, fs.Access(Path("/"), X_OK)); |
+ ASSERT_EQ(EACCES, fs.Access(Path("/"), W_OK)); |
+} |
+ |
TEST(HttpFsDirTest, Mkdir) { |
StringMap_t args; |
HttpFsForTesting fs(args, NULL); |
@@ -369,24 +382,30 @@ TEST(HttpFsDirTest, ParseManifest) { |
} |
TEST(HttpFsBlobUrlTest, Basic) { |
- const char* kUrl = |
- "blob:http%3A//example.com/6b87a5a6-713e-46a4-9f0c-78066406455d"; |
+ const char* kUrl = "blob:http%3A//example.com/6b87a5a6-713e"; |
+ const char* kContent = "hello"; |
FakePepperInterfaceURLLoader ppapi; |
- ASSERT_TRUE(ppapi.server_template()->SetBlobEntity(kUrl, "", NULL)); |
+ ASSERT_TRUE(ppapi.server_template()->SetBlobEntity(kUrl, kContent, NULL)); |
StringMap_t args; |
args["SOURCE"] = kUrl; |
HttpFsForTesting fs(args, &ppapi); |
- // We have to read from the mount root to read a Blob URL. |
+ // Check access to root folder |
ASSERT_EQ(0, fs.Access(Path("/"), R_OK)); |
ASSERT_EQ(EACCES, fs.Access(Path("/"), W_OK)); |
ASSERT_EQ(EACCES, fs.Access(Path("/"), X_OK)); |
// Any other path will fail. |
ScopedNode foo; |
- ASSERT_EQ(ENOENT, fs.Access(Path(""), R_OK)); |
- ASSERT_EQ(ENOENT, fs.Access(Path("."), R_OK)); |
- ASSERT_EQ(ENOENT, fs.Access(Path("blah"), R_OK)); |
+ ASSERT_EQ(ENOENT, fs.Access(Path("/blah"), R_OK)); |
+ |
+ // Verify file size |
+ ScopedNode node; |
+ struct stat statbuf; |
+ ASSERT_EQ(0, fs.Open(Path("/"), O_RDONLY, &node)); |
+ ASSERT_EQ(0, node->GetStat(&statbuf)); |
+ ASSERT_EQ(0, node->GetStat(&statbuf)); |
+ ASSERT_EQ(strlen(kContent), statbuf.st_size); |
} |