OLD | NEW |
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 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 | 463 |
464 StringMap_t map; | 464 StringMap_t map; |
465 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); | 465 ScopedRef<Html5FsForTesting> fs(new Html5FsForTesting(map, &ppapi_)); |
466 | 466 |
467 ScopedNode root; | 467 ScopedNode root; |
468 ASSERT_EQ(0, fs->Open(Path("/"), O_RDONLY, &root)); | 468 ASSERT_EQ(0, fs->Open(Path("/"), O_RDONLY, &root)); |
469 | 469 |
470 ScopedNode node; | 470 ScopedNode node; |
471 ASSERT_EQ(0, fs->Open(Path("/file"), O_RDWR, &node)); | 471 ASSERT_EQ(0, fs->Open(Path("/file"), O_RDWR, &node)); |
472 | 472 |
| 473 struct stat stat; |
| 474 ASSERT_EQ(0, node->GetStat(&stat)); |
| 475 ino_t file1_ino = stat.st_ino; |
| 476 |
473 // Should fail for regular files. | 477 // Should fail for regular files. |
474 const size_t kMaxDirents = 5; | 478 const size_t kMaxDirents = 5; |
475 dirent dirents[kMaxDirents]; | 479 dirent dirents[kMaxDirents]; |
476 int bytes_read = 1; // Set to a non-zero value. | 480 int bytes_read = 1; // Set to a non-zero value. |
477 | 481 |
478 memset(&dirents[0], 0, sizeof(dirents)); | 482 memset(&dirents[0], 0, sizeof(dirents)); |
479 EXPECT_EQ(ENOTDIR, | 483 EXPECT_EQ(ENOTDIR, |
480 node->GetDents(0, &dirents[0], sizeof(dirents), &bytes_read)); | 484 node->GetDents(0, &dirents[0], sizeof(dirents), &bytes_read)); |
481 EXPECT_EQ(0, bytes_read); | 485 EXPECT_EQ(0, bytes_read); |
482 | 486 |
(...skipping 16 matching lines...) Expand all Loading... |
499 dirnames.insert(dirents[i].d_name); | 503 dirnames.insert(dirents[i].d_name); |
500 } | 504 } |
501 | 505 |
502 EXPECT_EQ(1, dirnames.count("file")); | 506 EXPECT_EQ(1, dirnames.count("file")); |
503 EXPECT_EQ(1, dirnames.count(".")); | 507 EXPECT_EQ(1, dirnames.count(".")); |
504 EXPECT_EQ(1, dirnames.count("..")); | 508 EXPECT_EQ(1, dirnames.count("..")); |
505 } | 509 } |
506 | 510 |
507 // Add another file... | 511 // Add another file... |
508 ASSERT_EQ(0, fs->Open(Path("/file2"), O_CREAT, &node)); | 512 ASSERT_EQ(0, fs->Open(Path("/file2"), O_CREAT, &node)); |
| 513 ASSERT_EQ(0, node->GetStat(&stat)); |
| 514 ino_t file2_ino = stat.st_ino; |
| 515 |
| 516 // These files SHOULD not hash to the same value but COULD. |
| 517 EXPECT_NE(file1_ino, file2_ino); |
509 | 518 |
510 // Read the root directory again. | 519 // Read the root directory again. |
511 memset(&dirents[0], 0, sizeof(dirents)); | 520 memset(&dirents[0], 0, sizeof(dirents)); |
512 EXPECT_EQ(0, root->GetDents(0, &dirents[0], sizeof(dirents), &bytes_read)); | 521 EXPECT_EQ(0, root->GetDents(0, &dirents[0], sizeof(dirents), &bytes_read)); |
513 | 522 |
514 { | 523 { |
515 size_t num_dirents = bytes_read / sizeof(dirent); | 524 size_t num_dirents = bytes_read / sizeof(dirent); |
516 EXPECT_EQ(4, num_dirents); | 525 EXPECT_EQ(4, num_dirents); |
517 EXPECT_EQ(sizeof(dirent) * num_dirents, bytes_read); | 526 EXPECT_EQ(sizeof(dirent) * num_dirents, bytes_read); |
518 | 527 |
519 std::multiset<std::string> dirnames; | 528 std::multiset<std::string> dirnames; |
520 for (size_t i = 0; i < num_dirents; ++i) { | 529 for (size_t i = 0; i < num_dirents; ++i) { |
521 EXPECT_EQ(sizeof(dirent), dirents[i].d_off); | 530 EXPECT_EQ(sizeof(dirent), dirents[i].d_off); |
522 EXPECT_EQ(sizeof(dirent), dirents[i].d_reclen); | 531 EXPECT_EQ(sizeof(dirent), dirents[i].d_reclen); |
523 dirnames.insert(dirents[i].d_name); | 532 dirnames.insert(dirents[i].d_name); |
| 533 |
| 534 if (!strcmp(dirents[i].d_name, "file")) { |
| 535 EXPECT_EQ(dirents[i].d_ino, file1_ino); |
| 536 } |
| 537 if (!strcmp(dirents[i].d_name, "file2")) { |
| 538 EXPECT_EQ(dirents[i].d_ino, file2_ino); |
| 539 } |
524 } | 540 } |
525 | 541 |
526 EXPECT_EQ(1, dirnames.count("file")); | 542 EXPECT_EQ(1, dirnames.count("file")); |
527 EXPECT_EQ(1, dirnames.count("file2")); | 543 EXPECT_EQ(1, dirnames.count("file2")); |
528 EXPECT_EQ(1, dirnames.count(".")); | 544 EXPECT_EQ(1, dirnames.count(".")); |
529 EXPECT_EQ(1, dirnames.count("..")); | 545 EXPECT_EQ(1, dirnames.count("..")); |
530 } | 546 } |
531 } | 547 } |
OLD | NEW |