Chromium Code Reviews| Index: webkit/fileapi/obfuscated_file_system_file_util_unittest.cc |
| diff --git a/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc b/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc |
| index 6e61b9af2a578e369c309abb5957cd51c57e7871..8890dda3f98c3f6562797674a2b653fc7c820954 100644 |
| --- a/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc |
| +++ b/webkit/fileapi/obfuscated_file_system_file_util_unittest.cc |
| @@ -999,3 +999,77 @@ TEST_F(ObfuscatedFileSystemFileUtilTest, TestOriginEnumerator) { |
| inserter(diff, diff.begin())); |
| EXPECT_TRUE(diff.empty()); |
| } |
| + |
| +TEST_F(ObfuscatedFileSystemFileUtilTest, TestInconsistency) { |
| + const FilePath kPath1 = FilePath().AppendASCII("hoge"); |
| + const FilePath kPath2 = FilePath().AppendASCII("fuga"); |
| + |
| + scoped_ptr<FileSystemOperationContext> context; |
| + base::PlatformFile file; |
| + base::PlatformFileInfo file_info; |
| + FilePath data_path; |
| + bool created = false; |
| + |
| + // Create a non-empty file. |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->EnsureFileExists(context.get(), kPath1, &created)); |
| + EXPECT_TRUE(created); |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->Truncate(context.get(), kPath1, 10)); |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->GetFileInfo( |
| + context.get(), kPath1, &file_info, &data_path)); |
| + EXPECT_EQ(10, file_info.size); |
| + |
| + // Destroy database to make inconsistency between database and filesystem. |
| + ofsfu()->DestroyDirectoryDatabase(origin_url(), type()); |
| + |
| + // Try to get file info of broken file. |
| + context.reset(NewContext()); |
| + EXPECT_FALSE(ofsfu()->PathExists(context.get(), kPath1)); |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->EnsureFileExists(context.get(), kPath1, &created)); |
| + EXPECT_TRUE(created); |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->GetFileInfo( |
| + context.get(), kPath1, &file_info, &data_path)); |
| + EXPECT_EQ(0, file_info.size); |
| + |
| + // Make another broken file to |kPath2|. |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->EnsureFileExists(context.get(), kPath2, &created)); |
| + EXPECT_TRUE(created); |
| + |
| + // Destroy again. |
| + ofsfu()->DestroyDirectoryDatabase(origin_url(), type()); |
| + |
| + // Repair broken |kPath1|. |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->Touch(context.get(), kPath1, base::Time::Now(), |
| + base::Time::Now())); |
| + |
| + // Copy from sound |kPath1| to broken |kPath2|. |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->CopyOrMoveFile(context.get(), kPath1, kPath2, |
| + true /* copy */)); |
| + |
| + ofsfu()->DestroyDirectoryDatabase(origin_url(), type()); |
| + context.reset(NewContext()); |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, |
| + ofsfu()->CreateOrOpen( |
| + context.get(), kPath1, |
| + base::PLATFORM_FILE_READ | base::PLATFORM_FILE_CREATE, |
|
ericu
2011/08/10 17:28:01
I see that you changed this from WRITE to READ; do
tzik
2011/08/16 08:25:33
READ | CREATE_ALWAYS was fail-case in previous pat
|
| + &file, &created)); |
| + EXPECT_TRUE(created); |
| + EXPECT_TRUE(base::GetPlatformFileInfo(file, &file_info)); |
| + EXPECT_EQ(0, file_info.size); |
| + EXPECT_TRUE(base::ClosePlatformFile(file)); |
| +} |