OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <windows.h> | 8 #include <windows.h> |
9 #include <shellapi.h> | 9 #include <shellapi.h> |
10 #include <shlobj.h> | 10 #include <shlobj.h> |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 | 48 |
49 // the path to temporary directory used to contain the test operations | 49 // the path to temporary directory used to contain the test operations |
50 FilePath test_dir_; | 50 FilePath test_dir_; |
51 }; | 51 }; |
52 | 52 |
53 // Collects all the results from the given file enumerator, and provides an | 53 // Collects all the results from the given file enumerator, and provides an |
54 // interface to query whether a given file is present. | 54 // interface to query whether a given file is present. |
55 class FindResultCollector { | 55 class FindResultCollector { |
56 public: | 56 public: |
57 FindResultCollector(file_util::FileEnumerator& enumerator) { | 57 FindResultCollector(file_util::FileEnumerator& enumerator) { |
58 std::wstring cur_file; | 58 FilePath cur_file; |
59 while (!(cur_file = enumerator.Next()).empty()) { | 59 while (!(cur_file = enumerator.Next()).value().empty()) { |
60 FilePath::StringType path = FilePath::FromWStringHack(cur_file).value(); | 60 FilePath::StringType path = cur_file.value(); |
61 // The file should not be returned twice. | 61 // The file should not be returned twice. |
62 EXPECT_TRUE(files_.end() == files_.find(path)) | 62 EXPECT_TRUE(files_.end() == files_.find(path)) |
63 << "Same file returned twice"; | 63 << "Same file returned twice"; |
64 | 64 |
65 // Save for later. | 65 // Save for later. |
66 files_.insert(path); | 66 files_.insert(path); |
67 } | 67 } |
68 } | 68 } |
69 | 69 |
70 // Returns true if the enumerator found the file. | 70 // Returns true if the enumerator found the file. |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 path = path.Append(FILE_PATH_LITERAL("foo.bar")); | 823 path = path.Append(FILE_PATH_LITERAL("foo.bar")); |
824 path = path.Append(FILE_PATH_LITERAL("foo")); | 824 path = path.Append(FILE_PATH_LITERAL("foo")); |
825 // '/foo.bar/foo' with extension '.baz' | 825 // '/foo.bar/foo' with extension '.baz' |
826 FilePath result_path = path; | 826 FilePath result_path = path; |
827 file_util::ReplaceExtension(&result_path, FILE_PATH_LITERAL(".baz")); | 827 file_util::ReplaceExtension(&result_path, FILE_PATH_LITERAL(".baz")); |
828 EXPECT_EQ(path.ToWStringHack() + L".baz", result_path.ToWStringHack()); | 828 EXPECT_EQ(path.ToWStringHack() + L".baz", result_path.ToWStringHack()); |
829 } | 829 } |
830 | 830 |
831 TEST_F(FileUtilTest, FileEnumeratorTest) { | 831 TEST_F(FileUtilTest, FileEnumeratorTest) { |
832 // Test an empty directory. | 832 // Test an empty directory. |
833 file_util::FileEnumerator f0(test_dir_.ToWStringHack(), true, | 833 file_util::FileEnumerator f0(test_dir_, true, |
834 file_util::FileEnumerator::FILES_AND_DIRECTORIES); | 834 file_util::FileEnumerator::FILES_AND_DIRECTORIES); |
835 EXPECT_EQ(f0.Next(), L""); | 835 EXPECT_EQ(f0.Next().value(), FILE_PATH_LITERAL("")); |
836 EXPECT_EQ(f0.Next(), L""); | 836 EXPECT_EQ(f0.Next().value(), FILE_PATH_LITERAL("")); |
837 | 837 |
838 // create the directories | 838 // create the directories |
839 FilePath dir1 = test_dir_.Append(FILE_PATH_LITERAL("dir1")); | 839 FilePath dir1 = test_dir_.Append(FILE_PATH_LITERAL("dir1")); |
840 EXPECT_TRUE(file_util::CreateDirectory(dir1)); | 840 EXPECT_TRUE(file_util::CreateDirectory(dir1)); |
841 FilePath dir2 = test_dir_.Append(FILE_PATH_LITERAL("dir2")); | 841 FilePath dir2 = test_dir_.Append(FILE_PATH_LITERAL("dir2")); |
842 EXPECT_TRUE(file_util::CreateDirectory(dir2)); | 842 EXPECT_TRUE(file_util::CreateDirectory(dir2)); |
843 FilePath dir2inner = dir2.Append(FILE_PATH_LITERAL("inner")); | 843 FilePath dir2inner = dir2.Append(FILE_PATH_LITERAL("inner")); |
844 EXPECT_TRUE(file_util::CreateDirectory(dir2inner)); | 844 EXPECT_TRUE(file_util::CreateDirectory(dir2inner)); |
845 | 845 |
846 // create the files | 846 // create the files |
847 FilePath dir2file = dir2.Append(FILE_PATH_LITERAL("dir2file.txt")); | 847 FilePath dir2file = dir2.Append(FILE_PATH_LITERAL("dir2file.txt")); |
848 CreateTextFile(dir2file, L""); | 848 CreateTextFile(dir2file, L""); |
849 FilePath dir2innerfile = dir2inner.Append(FILE_PATH_LITERAL("innerfile.txt")); | 849 FilePath dir2innerfile = dir2inner.Append(FILE_PATH_LITERAL("innerfile.txt")); |
850 CreateTextFile(dir2innerfile, L""); | 850 CreateTextFile(dir2innerfile, L""); |
851 FilePath file1 = test_dir_.Append(FILE_PATH_LITERAL("file1.txt")); | 851 FilePath file1 = test_dir_.Append(FILE_PATH_LITERAL("file1.txt")); |
852 CreateTextFile(file1, L""); | 852 CreateTextFile(file1, L""); |
853 FilePath file2_rel = | 853 FilePath file2_rel = |
854 dir2.Append(FilePath::kParentDirectory) | 854 dir2.Append(FilePath::kParentDirectory) |
855 .Append(FILE_PATH_LITERAL("file2.txt")); | 855 .Append(FILE_PATH_LITERAL("file2.txt")); |
856 CreateTextFile(file2_rel, L""); | 856 CreateTextFile(file2_rel, L""); |
857 FilePath file2_abs = test_dir_.Append(FILE_PATH_LITERAL("file2.txt")); | 857 FilePath file2_abs = test_dir_.Append(FILE_PATH_LITERAL("file2.txt")); |
858 | 858 |
859 // Only enumerate files. | 859 // Only enumerate files. |
860 file_util::FileEnumerator f1(test_dir_.ToWStringHack(), true, | 860 file_util::FileEnumerator f1(test_dir_, true, |
861 file_util::FileEnumerator::FILES); | 861 file_util::FileEnumerator::FILES); |
862 FindResultCollector c1(f1); | 862 FindResultCollector c1(f1); |
863 EXPECT_TRUE(c1.HasFile(file1)); | 863 EXPECT_TRUE(c1.HasFile(file1)); |
864 EXPECT_TRUE(c1.HasFile(file2_abs)); | 864 EXPECT_TRUE(c1.HasFile(file2_abs)); |
865 EXPECT_TRUE(c1.HasFile(dir2file)); | 865 EXPECT_TRUE(c1.HasFile(dir2file)); |
866 EXPECT_TRUE(c1.HasFile(dir2innerfile)); | 866 EXPECT_TRUE(c1.HasFile(dir2innerfile)); |
867 EXPECT_EQ(c1.size(), 4); | 867 EXPECT_EQ(c1.size(), 4); |
868 | 868 |
869 // Only enumerate directories. | 869 // Only enumerate directories. |
870 file_util::FileEnumerator f2(test_dir_.ToWStringHack(), true, | 870 file_util::FileEnumerator f2(test_dir_, true, |
871 file_util::FileEnumerator::DIRECTORIES); | 871 file_util::FileEnumerator::DIRECTORIES); |
872 FindResultCollector c2(f2); | 872 FindResultCollector c2(f2); |
873 EXPECT_TRUE(c2.HasFile(dir1)); | 873 EXPECT_TRUE(c2.HasFile(dir1)); |
874 EXPECT_TRUE(c2.HasFile(dir2)); | 874 EXPECT_TRUE(c2.HasFile(dir2)); |
875 EXPECT_TRUE(c2.HasFile(dir2inner)); | 875 EXPECT_TRUE(c2.HasFile(dir2inner)); |
876 EXPECT_EQ(c2.size(), 3); | 876 EXPECT_EQ(c2.size(), 3); |
877 | 877 |
878 // Only enumerate directories non-recursively. | 878 // Only enumerate directories non-recursively. |
879 file_util::FileEnumerator f2_non_recursive( | 879 file_util::FileEnumerator f2_non_recursive( |
880 test_dir_.ToWStringHack(), false, file_util::FileEnumerator::DIRECTORIES); | 880 test_dir_, false, file_util::FileEnumerator::DIRECTORIES); |
881 FindResultCollector c2_non_recursive(f2_non_recursive); | 881 FindResultCollector c2_non_recursive(f2_non_recursive); |
882 EXPECT_TRUE(c2_non_recursive.HasFile(dir1)); | 882 EXPECT_TRUE(c2_non_recursive.HasFile(dir1)); |
883 EXPECT_TRUE(c2_non_recursive.HasFile(dir2)); | 883 EXPECT_TRUE(c2_non_recursive.HasFile(dir2)); |
884 EXPECT_EQ(c2_non_recursive.size(), 2); | 884 EXPECT_EQ(c2_non_recursive.size(), 2); |
885 | 885 |
886 // Enumerate files and directories. | 886 // Enumerate files and directories. |
887 file_util::FileEnumerator f3(test_dir_.ToWStringHack(), true, | 887 file_util::FileEnumerator f3(test_dir_, true, |
888 file_util::FileEnumerator::FILES_AND_DIRECTORIES); | 888 file_util::FileEnumerator::FILES_AND_DIRECTORIES); |
889 FindResultCollector c3(f3); | 889 FindResultCollector c3(f3); |
890 EXPECT_TRUE(c3.HasFile(dir1)); | 890 EXPECT_TRUE(c3.HasFile(dir1)); |
891 EXPECT_TRUE(c3.HasFile(dir2)); | 891 EXPECT_TRUE(c3.HasFile(dir2)); |
892 EXPECT_TRUE(c3.HasFile(file1)); | 892 EXPECT_TRUE(c3.HasFile(file1)); |
893 EXPECT_TRUE(c3.HasFile(file2_abs)); | 893 EXPECT_TRUE(c3.HasFile(file2_abs)); |
894 EXPECT_TRUE(c3.HasFile(dir2file)); | 894 EXPECT_TRUE(c3.HasFile(dir2file)); |
895 EXPECT_TRUE(c3.HasFile(dir2inner)); | 895 EXPECT_TRUE(c3.HasFile(dir2inner)); |
896 EXPECT_TRUE(c3.HasFile(dir2innerfile)); | 896 EXPECT_TRUE(c3.HasFile(dir2innerfile)); |
897 EXPECT_EQ(c3.size(), 7); | 897 EXPECT_EQ(c3.size(), 7); |
898 | 898 |
899 // Non-recursive operation. | 899 // Non-recursive operation. |
900 file_util::FileEnumerator f4(test_dir_.ToWStringHack(), false, | 900 file_util::FileEnumerator f4(test_dir_, false, |
901 file_util::FileEnumerator::FILES_AND_DIRECTORIES); | 901 file_util::FileEnumerator::FILES_AND_DIRECTORIES); |
902 FindResultCollector c4(f4); | 902 FindResultCollector c4(f4); |
903 EXPECT_TRUE(c4.HasFile(dir2)); | 903 EXPECT_TRUE(c4.HasFile(dir2)); |
904 EXPECT_TRUE(c4.HasFile(dir2)); | 904 EXPECT_TRUE(c4.HasFile(dir2)); |
905 EXPECT_TRUE(c4.HasFile(file1)); | 905 EXPECT_TRUE(c4.HasFile(file1)); |
906 EXPECT_TRUE(c4.HasFile(file2_abs)); | 906 EXPECT_TRUE(c4.HasFile(file2_abs)); |
907 EXPECT_EQ(c4.size(), 4); | 907 EXPECT_EQ(c4.size(), 4); |
908 | 908 |
909 // Enumerate with a pattern. | 909 // Enumerate with a pattern. |
910 file_util::FileEnumerator f5(test_dir_.ToWStringHack(), true, | 910 file_util::FileEnumerator f5(test_dir_, true, |
911 file_util::FileEnumerator::FILES_AND_DIRECTORIES, L"dir*"); | 911 file_util::FileEnumerator::FILES_AND_DIRECTORIES, |
| 912 FILE_PATH_LITERAL("dir*")); |
912 FindResultCollector c5(f5); | 913 FindResultCollector c5(f5); |
913 EXPECT_TRUE(c5.HasFile(dir1)); | 914 EXPECT_TRUE(c5.HasFile(dir1)); |
914 EXPECT_TRUE(c5.HasFile(dir2)); | 915 EXPECT_TRUE(c5.HasFile(dir2)); |
915 EXPECT_TRUE(c5.HasFile(dir2file)); | 916 EXPECT_TRUE(c5.HasFile(dir2file)); |
916 EXPECT_TRUE(c5.HasFile(dir2inner)); | 917 EXPECT_TRUE(c5.HasFile(dir2inner)); |
917 EXPECT_TRUE(c5.HasFile(dir2innerfile)); | 918 EXPECT_TRUE(c5.HasFile(dir2innerfile)); |
918 EXPECT_EQ(c5.size(), 5); | 919 EXPECT_EQ(c5.size(), 5); |
919 | 920 |
920 // Make sure the destructor closes the find handle while in the middle of a | 921 // Make sure the destructor closes the find handle while in the middle of a |
921 // query to allow TearDown to delete the directory. | 922 // query to allow TearDown to delete the directory. |
922 file_util::FileEnumerator f6(test_dir_.ToWStringHack(), true, | 923 file_util::FileEnumerator f6(test_dir_, true, |
923 file_util::FileEnumerator::FILES_AND_DIRECTORIES); | 924 file_util::FileEnumerator::FILES_AND_DIRECTORIES); |
924 EXPECT_FALSE(f6.Next().empty()); // Should have found something | 925 EXPECT_FALSE(f6.Next().value().empty()); // Should have found something |
925 // (we don't care what). | 926 // (we don't care what). |
926 } | 927 } |
927 | 928 |
928 | 929 |
929 void PathComponents(const std::wstring& path, | 930 void PathComponents(const std::wstring& path, |
930 std::vector<std::wstring>* components) { | 931 std::vector<std::wstring>* components) { |
931 DCHECK(components != NULL); | 932 DCHECK(components != NULL); |
932 if (components == NULL) | 933 if (components == NULL) |
933 return; | 934 return; |
934 std::wstring::size_type start = 0; | 935 std::wstring::size_type start = 0; |
935 std::wstring::size_type end = path.find('/', start); | 936 std::wstring::size_type end = path.find('/', start); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 for (size_t j = 0; j < comps.size(); ++j) { | 972 for (size_t j = 0; j < comps.size(); ++j) { |
972 result.append(comps[j]); | 973 result.append(comps[j]); |
973 if (j < comps.size() - 1) | 974 if (j < comps.size() - 1) |
974 result.append(FILE_PATH_LITERAL("|"), 1); | 975 result.append(FILE_PATH_LITERAL("|"), 1); |
975 } | 976 } |
976 EXPECT_EQ(kPathComponents[i].result, result); | 977 EXPECT_EQ(kPathComponents[i].result, result); |
977 } | 978 } |
978 } | 979 } |
979 | 980 |
980 } // namespace | 981 } // namespace |
OLD | NEW |