| OLD | NEW | 
|    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2012 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 "base/file_util.h" |    5 #include "base/file_util.h" | 
 |    6 #include "base/files/scoped_temp_dir.h" | 
|    6 #include "base/platform_file.h" |    7 #include "base/platform_file.h" | 
|    7 #include "base/scoped_temp_dir.h" |  | 
|    8 #include "base/time.h" |    8 #include "base/time.h" | 
|    9 #include "testing/gtest/include/gtest/gtest.h" |    9 #include "testing/gtest/include/gtest/gtest.h" | 
|   10  |   10  | 
|   11 namespace { |   11 namespace { | 
|   12  |   12  | 
|   13 // Reads from a file the given number of bytes, or until EOF is reached. |   13 // Reads from a file the given number of bytes, or until EOF is reached. | 
|   14 // Returns the number of bytes read. |   14 // Returns the number of bytes read. | 
|   15 int ReadFully(base::PlatformFile file, int64 offset, char* data, int size) { |   15 int ReadFully(base::PlatformFile file, int64 offset, char* data, int size) { | 
|   16   return base::ReadPlatformFile(file, offset, data, size); |   16   return base::ReadPlatformFile(file, offset, data, size); | 
|   17 } |   17 } | 
|   18  |   18  | 
|   19 // Writes the given number of bytes to a file. |   19 // Writes the given number of bytes to a file. | 
|   20 // Returns the number of bytes written. |   20 // Returns the number of bytes written. | 
|   21 int WriteFully(base::PlatformFile file, int64 offset, |   21 int WriteFully(base::PlatformFile file, int64 offset, | 
|   22                const char* data, int size) { |   22                const char* data, int size) { | 
|   23   return base::WritePlatformFile(file, offset, data, size); |   23   return base::WritePlatformFile(file, offset, data, size); | 
|   24 } |   24 } | 
|   25  |   25  | 
|   26 } // namespace |   26 } // namespace | 
|   27  |   27  | 
|   28 TEST(PlatformFile, CreatePlatformFile) { |   28 TEST(PlatformFile, CreatePlatformFile) { | 
|   29   ScopedTempDir temp_dir; |   29   base::ScopedTempDir temp_dir; | 
|   30   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |   30   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 
|   31   FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); |   31   FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); | 
|   32  |   32  | 
|   33   // Open a file that doesn't exist. |   33   // Open a file that doesn't exist. | 
|   34   base::PlatformFileError error_code = base::PLATFORM_FILE_OK; |   34   base::PlatformFileError error_code = base::PLATFORM_FILE_OK; | 
|   35   base::PlatformFile file = base::CreatePlatformFile( |   35   base::PlatformFile file = base::CreatePlatformFile( | 
|   36       file_path, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, |   36       file_path, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ, | 
|   37       NULL, &error_code); |   37       NULL, &error_code); | 
|   38   EXPECT_EQ(base::kInvalidPlatformFileValue, file); |   38   EXPECT_EQ(base::kInvalidPlatformFileValue, file); | 
|   39   EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, error_code); |   39   EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, error_code); | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   88       &created, &error_code); |   88       &created, &error_code); | 
|   89   EXPECT_NE(base::kInvalidPlatformFileValue, file); |   89   EXPECT_NE(base::kInvalidPlatformFileValue, file); | 
|   90   EXPECT_TRUE(created); |   90   EXPECT_TRUE(created); | 
|   91   EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |   91   EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 
|   92  |   92  | 
|   93   EXPECT_TRUE(base::ClosePlatformFile(file)); |   93   EXPECT_TRUE(base::ClosePlatformFile(file)); | 
|   94   EXPECT_FALSE(file_util::PathExists(file_path)); |   94   EXPECT_FALSE(file_util::PathExists(file_path)); | 
|   95 } |   95 } | 
|   96  |   96  | 
|   97 TEST(PlatformFile, DeleteOpenFile) { |   97 TEST(PlatformFile, DeleteOpenFile) { | 
|   98   ScopedTempDir temp_dir; |   98   base::ScopedTempDir temp_dir; | 
|   99   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |   99   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 
|  100   FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); |  100   FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); | 
|  101  |  101  | 
|  102   // Create a file. |  102   // Create a file. | 
|  103   bool created = false; |  103   bool created = false; | 
|  104   base::PlatformFileError error_code = base::PLATFORM_FILE_OK; |  104   base::PlatformFileError error_code = base::PLATFORM_FILE_OK; | 
|  105   base::PlatformFile file = base::CreatePlatformFile( |  105   base::PlatformFile file = base::CreatePlatformFile( | 
|  106       file_path, |  106       file_path, | 
|  107       base::PLATFORM_FILE_OPEN_ALWAYS | |  107       base::PLATFORM_FILE_OPEN_ALWAYS | | 
|  108       base::PLATFORM_FILE_READ | |  108       base::PLATFORM_FILE_READ | | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|  124   EXPECT_FALSE(created); |  124   EXPECT_FALSE(created); | 
|  125   EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); |  125   EXPECT_EQ(base::PLATFORM_FILE_OK, error_code); | 
|  126  |  126  | 
|  127   // Close both handles and check that the file is gone. |  127   // Close both handles and check that the file is gone. | 
|  128   base::ClosePlatformFile(file); |  128   base::ClosePlatformFile(file); | 
|  129   base::ClosePlatformFile(same_file); |  129   base::ClosePlatformFile(same_file); | 
|  130   EXPECT_FALSE(file_util::PathExists(file_path)); |  130   EXPECT_FALSE(file_util::PathExists(file_path)); | 
|  131 } |  131 } | 
|  132  |  132  | 
|  133 TEST(PlatformFile, ReadWritePlatformFile) { |  133 TEST(PlatformFile, ReadWritePlatformFile) { | 
|  134   ScopedTempDir temp_dir; |  134   base::ScopedTempDir temp_dir; | 
|  135   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |  135   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 
|  136   FilePath file_path = temp_dir.path().AppendASCII("read_write_file"); |  136   FilePath file_path = temp_dir.path().AppendASCII("read_write_file"); | 
|  137   base::PlatformFile file = base::CreatePlatformFile( |  137   base::PlatformFile file = base::CreatePlatformFile( | 
|  138       file_path, |  138       file_path, | 
|  139       base::PLATFORM_FILE_CREATE | |  139       base::PLATFORM_FILE_CREATE | | 
|  140       base::PLATFORM_FILE_READ | |  140       base::PLATFORM_FILE_READ | | 
|  141       base::PLATFORM_FILE_WRITE, |  141       base::PLATFORM_FILE_WRITE, | 
|  142       NULL, NULL); |  142       NULL, NULL); | 
|  143   EXPECT_NE(base::kInvalidPlatformFileValue, file); |  143   EXPECT_NE(base::kInvalidPlatformFileValue, file); | 
|  144  |  144  | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  203   for (int i = kTestDataSize; i < kOffsetBeyondEndOfFile; i++) |  203   for (int i = kTestDataSize; i < kOffsetBeyondEndOfFile; i++) | 
|  204     EXPECT_EQ(0, data_read_2[i]); |  204     EXPECT_EQ(0, data_read_2[i]); | 
|  205   for (int i = kOffsetBeyondEndOfFile; i < file_size; i++) |  205   for (int i = kOffsetBeyondEndOfFile; i < file_size; i++) | 
|  206     EXPECT_EQ(data_to_write[i - kOffsetBeyondEndOfFile], data_read_2[i]); |  206     EXPECT_EQ(data_to_write[i - kOffsetBeyondEndOfFile], data_read_2[i]); | 
|  207  |  207  | 
|  208   // Close the file handle to allow the temp directory to be deleted. |  208   // Close the file handle to allow the temp directory to be deleted. | 
|  209   base::ClosePlatformFile(file); |  209   base::ClosePlatformFile(file); | 
|  210 } |  210 } | 
|  211  |  211  | 
|  212 TEST(PlatformFile, TruncatePlatformFile) { |  212 TEST(PlatformFile, TruncatePlatformFile) { | 
|  213   ScopedTempDir temp_dir; |  213   base::ScopedTempDir temp_dir; | 
|  214   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |  214   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 
|  215   FilePath file_path = temp_dir.path().AppendASCII("truncate_file"); |  215   FilePath file_path = temp_dir.path().AppendASCII("truncate_file"); | 
|  216   base::PlatformFile file = base::CreatePlatformFile( |  216   base::PlatformFile file = base::CreatePlatformFile( | 
|  217       file_path, |  217       file_path, | 
|  218       base::PLATFORM_FILE_CREATE | |  218       base::PLATFORM_FILE_CREATE | | 
|  219       base::PLATFORM_FILE_READ | |  219       base::PLATFORM_FILE_READ | | 
|  220       base::PLATFORM_FILE_WRITE, |  220       base::PLATFORM_FILE_WRITE, | 
|  221       NULL, NULL); |  221       NULL, NULL); | 
|  222   EXPECT_NE(base::kInvalidPlatformFileValue, file); |  222   EXPECT_NE(base::kInvalidPlatformFileValue, file); | 
|  223  |  223  | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
|  254   EXPECT_EQ(file_size, bytes_read); |  254   EXPECT_EQ(file_size, bytes_read); | 
|  255   for (int i = 0; i < file_size; i++) |  255   for (int i = 0; i < file_size; i++) | 
|  256     EXPECT_EQ(data_to_write[i], data_read[i]); |  256     EXPECT_EQ(data_to_write[i], data_read[i]); | 
|  257  |  257  | 
|  258   // Close the file handle to allow the temp directory to be deleted. |  258   // Close the file handle to allow the temp directory to be deleted. | 
|  259   base::ClosePlatformFile(file); |  259   base::ClosePlatformFile(file); | 
|  260 } |  260 } | 
|  261  |  261  | 
|  262 // Flakily fails: http://crbug.com/86494 |  262 // Flakily fails: http://crbug.com/86494 | 
|  263 TEST(PlatformFile, DISABLED_TouchGetInfoPlatformFile) { |  263 TEST(PlatformFile, DISABLED_TouchGetInfoPlatformFile) { | 
|  264   ScopedTempDir temp_dir; |  264   base::ScopedTempDir temp_dir; | 
|  265   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |  265   ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 
|  266   base::PlatformFile file = base::CreatePlatformFile( |  266   base::PlatformFile file = base::CreatePlatformFile( | 
|  267       temp_dir.path().AppendASCII("touch_get_info_file"), |  267       temp_dir.path().AppendASCII("touch_get_info_file"), | 
|  268       base::PLATFORM_FILE_CREATE | |  268       base::PLATFORM_FILE_CREATE | | 
|  269       base::PLATFORM_FILE_WRITE | |  269       base::PLATFORM_FILE_WRITE | | 
|  270       base::PLATFORM_FILE_WRITE_ATTRIBUTES, |  270       base::PLATFORM_FILE_WRITE_ATTRIBUTES, | 
|  271       NULL, NULL); |  271       NULL, NULL); | 
|  272   EXPECT_NE(base::kInvalidPlatformFileValue, file); |  272   EXPECT_NE(base::kInvalidPlatformFileValue, file); | 
|  273  |  273  | 
|  274   // Get info for a newly created file. |  274   // Get info for a newly created file. | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  322   EXPECT_EQ(info.last_modified.ToInternalValue(), |  322   EXPECT_EQ(info.last_modified.ToInternalValue(), | 
|  323             new_last_modified.ToInternalValue()); |  323             new_last_modified.ToInternalValue()); | 
|  324 #endif |  324 #endif | 
|  325  |  325  | 
|  326   EXPECT_EQ(info.creation_time.ToInternalValue(), |  326   EXPECT_EQ(info.creation_time.ToInternalValue(), | 
|  327             creation_time.ToInternalValue()); |  327             creation_time.ToInternalValue()); | 
|  328  |  328  | 
|  329   // Close the file handle to allow the temp directory to be deleted. |  329   // Close the file handle to allow the temp directory to be deleted. | 
|  330   base::ClosePlatformFile(file); |  330   base::ClosePlatformFile(file); | 
|  331 } |  331 } | 
| OLD | NEW |