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

Side by Side Diff: native_client_sdk/src/tests/nacl_io_test/html5_fs_test.cc

Issue 547053002: [NaCl SDK] nacl_io: Remove Node::Access method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@http_fs_root
Patch Set: Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <errno.h> 5 #include <errno.h>
6 #include <fcntl.h> 6 #include <fcntl.h>
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 30 matching lines...) Expand all
41 class Html5FsForTesting : public Html5Fs { 41 class Html5FsForTesting : public Html5Fs {
42 public: 42 public:
43 Html5FsForTesting(StringMap_t& string_map, PepperInterface* ppapi, 43 Html5FsForTesting(StringMap_t& string_map, PepperInterface* ppapi,
44 int expected_error = 0) { 44 int expected_error = 0) {
45 FsInitArgs args; 45 FsInitArgs args;
46 args.string_map = string_map; 46 args.string_map = string_map;
47 args.ppapi = ppapi; 47 args.ppapi = ppapi;
48 Error error = Init(args); 48 Error error = Init(args);
49 EXPECT_EQ(expected_error, error); 49 EXPECT_EQ(expected_error, error);
50 } 50 }
51
52 bool Exists(const char* filename) {
53 ScopedNode node;
54 if (Open(Path(filename), O_RDONLY, &node))
55 return false;
56
57 struct stat buf;
58 return node->GetStat(&buf) == 0;
59 }
51 }; 60 };
52 61
53 class Html5FsTest : public ::testing::Test { 62 class Html5FsTest : public ::testing::Test {
54 public: 63 public:
55 Html5FsTest(); 64 Html5FsTest();
56 65
57 protected: 66 protected:
58 FakePepperInterfaceHtml5Fs ppapi_html5_; 67 FakePepperInterfaceHtml5Fs ppapi_html5_;
59 PepperInterfaceMock ppapi_mock_; 68 PepperInterfaceMock ppapi_mock_;
60 PepperInterfaceDelegate ppapi_; 69 PepperInterfaceDelegate ppapi_;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 ASSERT_EQ(int32_t(PP_OK), ppapi_html5_.GetFileSystemInterface()->Open( 145 ASSERT_EQ(int32_t(PP_OK), ppapi_html5_.GetFileSystemInterface()->Open(
137 filesystem, 0, PP_BlockUntilComplete())); 146 filesystem, 0, PP_BlockUntilComplete()));
138 147
139 StringMap_t map; 148 StringMap_t map;
140 char buffer[30]; 149 char buffer[30];
141 snprintf(buffer, 30, "%d", filesystem); 150 snprintf(buffer, 30, "%d", filesystem);
142 map["filesystem_resource"] = buffer; 151 map["filesystem_resource"] = buffer;
143 ScopedRef<Html5FsForTesting> fs( 152 ScopedRef<Html5FsForTesting> fs(
144 new Html5FsForTesting(map, &ppapi_)); 153 new Html5FsForTesting(map, &ppapi_));
145 154
146 ASSERT_EQ(0, fs->Access(Path("/foo"), R_OK | W_OK | X_OK)); 155 ASSERT_TRUE(fs->Exists("/foo"));
147 156
148 ppapi_html5_.GetCoreInterface()->ReleaseResource(filesystem); 157 ppapi_html5_.GetCoreInterface()->ReleaseResource(filesystem);
149 } 158 }
150 } 159 }
151 160
152 TEST_F(Html5FsTest, MountSubtree) { 161 TEST_F(Html5FsTest, MountSubtree) {
153 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/foo/bar", 162 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/foo/bar",
154 NULL)); 163 NULL));
155 StringMap_t map; 164 StringMap_t map;
156 map["SOURCE"] = "/foo"; 165 map["SOURCE"] = "/foo";
157 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 166 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
158 167
159 ASSERT_EQ(0, fs->Access(Path("/bar"), R_OK | W_OK | X_OK)); 168 ASSERT_TRUE(fs->Exists("/bar"));
160 ASSERT_EQ(ENOENT, fs->Access(Path("/foo/bar"), F_OK)); 169 ASSERT_FALSE(fs->Exists("/foo/bar"));
161 }
162
163 TEST_F(Html5FsTest, Access) {
164 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/foo", NULL));
165
166 StringMap_t map;
167 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
168
169 ASSERT_EQ(0, fs->Access(Path("/foo"), R_OK | W_OK | X_OK));
170 ASSERT_EQ(ENOENT, fs->Access(Path("/bar"), F_OK));
171 } 170 }
172 171
173 TEST_F(Html5FsTest, Mkdir) { 172 TEST_F(Html5FsTest, Mkdir) {
174 StringMap_t map; 173 StringMap_t map;
175 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 174 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
176 175
177 // mkdir at the root should return EEXIST, not EACCES. 176 // mkdir at the root should return EEXIST, not EACCES.
178 EXPECT_EQ(EEXIST, fs->Mkdir(Path("/"), 0644)); 177 EXPECT_EQ(EEXIST, fs->Mkdir(Path("/"), 0644));
179 178
180 Path path("/foo"); 179 Path path("/foo");
181 ASSERT_EQ(ENOENT, fs->Access(path, F_OK)); 180 ASSERT_FALSE(fs->Exists("/foo"));
182 ASSERT_EQ(0, fs->Mkdir(path, 0644)); 181 ASSERT_EQ(0, fs->Mkdir(path, 0644));
183 182
184 struct stat stat; 183 struct stat stat;
185 ScopedNode node; 184 ScopedNode node;
186 ASSERT_EQ(0, fs->Open(path, O_RDONLY, &node)); 185 ASSERT_EQ(0, fs->Open(path, O_RDONLY, &node));
187 EXPECT_EQ(0, node->GetStat(&stat)); 186 EXPECT_EQ(0, node->GetStat(&stat));
188 EXPECT_EQ(S_IFDIR, stat.st_mode & S_IFDIR); 187 EXPECT_EQ(S_IFDIR, stat.st_mode & S_IFDIR);
189 } 188 }
190 189
191 TEST_F(Html5FsTest, Remove) { 190 TEST_F(Html5FsTest, Remove) {
192 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/foo", NULL)); 191 const char* kPath = "/foo";
192 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile(kPath, NULL));
193 193
194 StringMap_t map; 194 StringMap_t map;
195 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 195 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
196 196
197 Path path("/foo"); 197 Path path(kPath);
198 ASSERT_EQ(0, fs->Access(path, F_OK)); 198 ASSERT_TRUE(fs->Exists(kPath));
199 ASSERT_EQ(0, fs->Remove(path)); 199 ASSERT_EQ(0, fs->Remove(path));
200 EXPECT_EQ(ENOENT, fs->Access(path, F_OK)); 200 EXPECT_FALSE(fs->Exists(kPath));
201 } 201 }
202 202
203 TEST_F(Html5FsTest, Unlink) { 203 TEST_F(Html5FsTest, Unlink) {
204 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/file", NULL)); 204 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/file", NULL));
205 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddDirectory("/dir", NULL)); 205 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddDirectory("/dir", NULL));
206 206
207 StringMap_t map; 207 StringMap_t map;
208 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 208 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
209 209
210 ASSERT_TRUE(fs->Exists("/dir"));
211 ASSERT_TRUE(fs->Exists("/file"));
212 ASSERT_EQ(0, fs->Unlink(Path("/file")));
210 ASSERT_EQ(EISDIR, fs->Unlink(Path("/dir"))); 213 ASSERT_EQ(EISDIR, fs->Unlink(Path("/dir")));
211 EXPECT_EQ(0, fs->Unlink(Path("/file"))); 214 EXPECT_FALSE(fs->Exists("/file"));
212 EXPECT_EQ(ENOENT, fs->Access(Path("/file"), F_OK)); 215 EXPECT_TRUE(fs->Exists("/dir"));
213 EXPECT_EQ(0, fs->Access(Path("/dir"), F_OK));
214 } 216 }
215 217
216 TEST_F(Html5FsTest, Rmdir) { 218 TEST_F(Html5FsTest, Rmdir) {
217 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/file", NULL)); 219 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/file", NULL));
218 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddDirectory("/dir", NULL)); 220 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddDirectory("/dir", NULL));
219 221
220 StringMap_t map; 222 StringMap_t map;
221 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 223 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
222 224
223 ASSERT_EQ(ENOTDIR, fs->Rmdir(Path("/file"))); 225 ASSERT_EQ(ENOTDIR, fs->Rmdir(Path("/file")));
224 EXPECT_EQ(0, fs->Rmdir(Path("/dir"))); 226 EXPECT_EQ(0, fs->Rmdir(Path("/dir")));
225 EXPECT_EQ(ENOENT, fs->Access(Path("/dir"), F_OK)); 227 EXPECT_FALSE(fs->Exists("/dir"));
226 EXPECT_EQ(0, fs->Access(Path("/file"), F_OK)); 228 EXPECT_TRUE(fs->Exists("/file"));
227 } 229 }
228 230
229 TEST_F(Html5FsTest, Rename) { 231 TEST_F(Html5FsTest, Rename) {
230 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/foo", NULL)); 232 EXPECT_TRUE(ppapi_html5_.filesystem_template()->AddEmptyFile("/foo", NULL));
231 233
232 StringMap_t map; 234 StringMap_t map;
233 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 235 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
234 236
235 Path path("/foo"); 237 ASSERT_TRUE(fs->Exists("/foo"));
236 Path newpath("/bar"); 238 ASSERT_EQ(0, fs->Rename(Path("/foo"), Path("/bar")));
237 ASSERT_EQ(0, fs->Access(path, F_OK)); 239 EXPECT_FALSE(fs->Exists("/foo"));
238 ASSERT_EQ(0, fs->Rename(path, newpath)); 240 EXPECT_TRUE(fs->Exists("/bar"));
239 EXPECT_EQ(ENOENT, fs->Access(path, F_OK));
240 EXPECT_EQ(0, fs->Access(newpath, F_OK));
241 } 241 }
242 242
243 TEST_F(Html5FsTest, OpenForCreate) { 243 TEST_F(Html5FsTest, OpenForCreate) {
244 StringMap_t map; 244 StringMap_t map;
245 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); 245 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_));
246 246
247 EXPECT_FALSE(fs->Exists("/foo"));
248
247 Path path("/foo"); 249 Path path("/foo");
248 EXPECT_EQ(ENOENT, fs->Access(path, F_OK));
249
250 ScopedNode node; 250 ScopedNode node;
251 ASSERT_EQ(0, fs->Open(path, O_CREAT | O_RDWR, &node)); 251 ASSERT_EQ(0, fs->Open(path, O_CREAT | O_RDWR, &node));
252 252
253 // Write some data. 253 // Write some data.
254 char contents[] = "contents"; 254 char contents[] = "contents";
255 int bytes_written = 0; 255 int bytes_written = 0;
256 EXPECT_EQ(0, node->Write(HandleAttr(), &contents[0], strlen(contents), 256 EXPECT_EQ(0, node->Write(HandleAttr(), &contents[0], strlen(contents),
257 &bytes_written)); 257 &bytes_written));
258 EXPECT_EQ(strlen(contents), bytes_written); 258 EXPECT_EQ(strlen(contents), bytes_written);
259 259
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 EXPECT_EQ(sizeof(dirent), dirents[i].d_reclen); 524 EXPECT_EQ(sizeof(dirent), dirents[i].d_reclen);
525 dirnames.insert(dirents[i].d_name); 525 dirnames.insert(dirents[i].d_name);
526 } 526 }
527 527
528 EXPECT_EQ(1, dirnames.count("file")); 528 EXPECT_EQ(1, dirnames.count("file"));
529 EXPECT_EQ(1, dirnames.count("file2")); 529 EXPECT_EQ(1, dirnames.count("file2"));
530 EXPECT_EQ(1, dirnames.count(".")); 530 EXPECT_EQ(1, dirnames.count("."));
531 EXPECT_EQ(1, dirnames.count("..")); 531 EXPECT_EQ(1, dirnames.count(".."));
532 } 532 }
533 } 533 }
OLDNEW
« no previous file with comments | « native_client_sdk/src/tests/nacl_io_test/filesystem_test.cc ('k') | native_client_sdk/src/tests/nacl_io_test/http_fs_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698