Chromium Code Reviews| Index: webrtc/test/testsupport/fileutils_unittest.cc |
| diff --git a/webrtc/test/testsupport/fileutils_unittest.cc b/webrtc/test/testsupport/fileutils_unittest.cc |
| index 132436f0040974dd151bceb43105f720bb9154d5..c489386017218a493b46d3abc3e56632be9cd6af 100644 |
| --- a/webrtc/test/testsupport/fileutils_unittest.cc |
| +++ b/webrtc/test/testsupport/fileutils_unittest.cc |
| @@ -12,9 +12,13 @@ |
| #include <stdio.h> |
| +#include <fstream> |
| +#include <iostream> |
| #include <list> |
| #include <string> |
| +#include "webrtc/base/checks.h" |
| +#include "webrtc/base/pathutils.h" |
| #include "webrtc/test/gtest.h" |
| #ifdef WIN32 |
| @@ -24,11 +28,41 @@ static const char* kPathDelimiter = "\\"; |
| static const char* kPathDelimiter = "/"; |
| #endif |
| -static const std::string kResourcesDir = "resources"; |
| -static const std::string kTestName = "fileutils_unittest"; |
| -static const std::string kExtension = "tmp"; |
| +static const char kTestName[] = "fileutils_unittest"; |
| +static const char kExtension[] = "tmp"; |
| namespace webrtc { |
| +namespace test { |
| + |
| +namespace { |
| + |
| +// Remove files and directories in a directory non-recursively and writes the |
| +// number of deleted items in |num_deleted_entries|. |
| +void CleanDir(const std::string& dir, size_t* num_deleted_entries) { |
|
kwiberg-webrtc
2017/05/29 12:11:36
Return the number of deleted entries instead?
AleBzk
2017/05/29 13:04:48
Nope. I can't use FAIL() otherwise, right?
kwiberg-webrtc
2017/05/30 08:28:12
Yes, FAIL() and ASSERT_*() can only be used in fun
AleBzk
2017/05/30 11:09:16
Done.
|
| + RTC_DCHECK(num_deleted_entries); |
| + *num_deleted_entries = 0; |
| + std::vector<std::string> dir_content; |
| + EXPECT_TRUE(ReadDirectory(dir, &dir_content)); |
| + for (const auto& entry : dir_content) { |
| + if (DirExists(entry)) { |
| + EXPECT_TRUE(RemoveDir(entry)); |
| + (*num_deleted_entries)++; |
| + } else if (FileExists(entry)) { |
| + EXPECT_TRUE(RemoveFile(entry)); |
| + (*num_deleted_entries)++; |
| + } else { |
| + FAIL(); |
| + } |
| + } |
| +} |
| + |
| +void WriteStringInFile(const std::string& what, const std::string& file_path) { |
| + std::ofstream out(file_path); |
| + out << what; |
| + out.close(); |
| +} |
| + |
| +} // namespace |
| // Test fixture to restore the working directory between each test, since some |
| // of them change it with chdir during execution (not restored by the |
| @@ -170,4 +204,35 @@ TEST_F(FileUtilsTest, DirExists) { |
| remove(temp_filename.c_str()); |
| } |
| +TEST_F(FileUtilsTest, WriteReadDeleteFilesAndDirs) { |
| + size_t num_deleted_entries; |
| + |
| + // Create an empty temporary directory for this test. |
| + const std::string temp_directory = |
| + OutputPath() + "TempFileUtilsTestReadDirectory" + kPathDelimiter; |
| + CreateDir(temp_directory); |
| + CleanDir(temp_directory, &num_deleted_entries); |
| + EXPECT_TRUE(DirExists(temp_directory)); |
| + |
| + // Add a file. |
| + const std::string temp_filename = temp_directory + "TempFilenameTest"; |
| + WriteStringInFile("test\n", temp_filename); |
| + EXPECT_TRUE(FileExists(temp_filename)); |
| + |
| + // Add an empty directory. |
| + const std::string temp_subdir = temp_directory + "subdir" + kPathDelimiter; |
| + EXPECT_TRUE(CreateDir(temp_subdir)); |
| + EXPECT_TRUE(DirExists(temp_subdir)); |
| + |
| + // Checks. |
| + std::vector<std::string> output; |
| + EXPECT_TRUE(ReadDirectory(temp_directory, &output)); |
| + EXPECT_EQ(2u, output.size()); |
| + CleanDir(temp_directory, &num_deleted_entries); |
| + EXPECT_EQ(2u, num_deleted_entries); |
| + EXPECT_TRUE(RemoveDir(temp_directory)); |
| + EXPECT_FALSE(DirExists(temp_directory)); |
| +} |
| + |
| +} // namespace test |
| } // namespace webrtc |