Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Side by Side Diff: base/files/file_util_unittest.cc

Issue 1001833005: Update from https://crrev.com/320343 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Supress Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/files/file_path_watcher_browsertest.cc ('k') | base/guid_posix.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "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 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 190 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
191 } 191 }
192 192
193 ScopedTempDir temp_dir_; 193 ScopedTempDir temp_dir_;
194 }; 194 };
195 195
196 // Collects all the results from the given file enumerator, and provides an 196 // Collects all the results from the given file enumerator, and provides an
197 // interface to query whether a given file is present. 197 // interface to query whether a given file is present.
198 class FindResultCollector { 198 class FindResultCollector {
199 public: 199 public:
200 explicit FindResultCollector(FileEnumerator& enumerator) { 200 explicit FindResultCollector(FileEnumerator* enumerator) {
201 FilePath cur_file; 201 FilePath cur_file;
202 while (!(cur_file = enumerator.Next()).value().empty()) { 202 while (!(cur_file = enumerator->Next()).value().empty()) {
203 FilePath::StringType path = cur_file.value(); 203 FilePath::StringType path = cur_file.value();
204 // The file should not be returned twice. 204 // The file should not be returned twice.
205 EXPECT_TRUE(files_.end() == files_.find(path)) 205 EXPECT_TRUE(files_.end() == files_.find(path))
206 << "Same file returned twice"; 206 << "Same file returned twice";
207 207
208 // Save for later. 208 // Save for later.
209 files_.insert(path); 209 files_.insert(path);
210 } 210 }
211 } 211 }
212 212
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK); 817 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK);
818 818
819 // Get rid of the permissions from the directory. 819 // Get rid of the permissions from the directory.
820 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, 0u)); 820 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, 0u));
821 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); 821 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode));
822 EXPECT_FALSE(mode & FILE_PERMISSION_USER_MASK); 822 EXPECT_FALSE(mode & FILE_PERMISSION_USER_MASK);
823 823
824 // Make sure the file in the directory can't be enumerated. 824 // Make sure the file in the directory can't be enumerated.
825 FileEnumerator f1(subdir_path, true, FileEnumerator::FILES); 825 FileEnumerator f1(subdir_path, true, FileEnumerator::FILES);
826 EXPECT_TRUE(PathExists(subdir_path)); 826 EXPECT_TRUE(PathExists(subdir_path));
827 FindResultCollector c1(f1); 827 FindResultCollector c1(&f1);
828 EXPECT_EQ(0, c1.size()); 828 EXPECT_EQ(0, c1.size());
829 EXPECT_FALSE(GetPosixFilePermissions(file_name, &mode)); 829 EXPECT_FALSE(GetPosixFilePermissions(file_name, &mode));
830 830
831 // Give the permissions to the directory. 831 // Give the permissions to the directory.
832 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, FILE_PERMISSION_USER_MASK)); 832 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, FILE_PERMISSION_USER_MASK));
833 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); 833 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode));
834 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK); 834 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK);
835 835
836 // Make sure the file in the directory can be enumerated. 836 // Make sure the file in the directory can be enumerated.
837 FileEnumerator f2(subdir_path, true, FileEnumerator::FILES); 837 FileEnumerator f2(subdir_path, true, FileEnumerator::FILES);
838 FindResultCollector c2(f2); 838 FindResultCollector c2(&f2);
839 EXPECT_TRUE(c2.HasFile(file_name)); 839 EXPECT_TRUE(c2.HasFile(file_name));
840 EXPECT_EQ(1, c2.size()); 840 EXPECT_EQ(1, c2.size());
841 841
842 // Delete the file. 842 // Delete the file.
843 EXPECT_TRUE(DeleteFile(subdir_path, true)); 843 EXPECT_TRUE(DeleteFile(subdir_path, true));
844 EXPECT_FALSE(PathExists(subdir_path)); 844 EXPECT_FALSE(PathExists(subdir_path));
845 } 845 }
846 846
847 #endif // defined(OS_POSIX) 847 #endif // defined(OS_POSIX)
848 848
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
1864 CreateTextFile(dir2innerfile, std::wstring()); 1864 CreateTextFile(dir2innerfile, std::wstring());
1865 FilePath file1 = temp_dir_.path().Append(FPL("file1.txt")); 1865 FilePath file1 = temp_dir_.path().Append(FPL("file1.txt"));
1866 CreateTextFile(file1, std::wstring()); 1866 CreateTextFile(file1, std::wstring());
1867 FilePath file2_rel = dir2.Append(FilePath::kParentDirectory) 1867 FilePath file2_rel = dir2.Append(FilePath::kParentDirectory)
1868 .Append(FPL("file2.txt")); 1868 .Append(FPL("file2.txt"));
1869 CreateTextFile(file2_rel, std::wstring()); 1869 CreateTextFile(file2_rel, std::wstring());
1870 FilePath file2_abs = temp_dir_.path().Append(FPL("file2.txt")); 1870 FilePath file2_abs = temp_dir_.path().Append(FPL("file2.txt"));
1871 1871
1872 // Only enumerate files. 1872 // Only enumerate files.
1873 FileEnumerator f1(temp_dir_.path(), true, FileEnumerator::FILES); 1873 FileEnumerator f1(temp_dir_.path(), true, FileEnumerator::FILES);
1874 FindResultCollector c1(f1); 1874 FindResultCollector c1(&f1);
1875 EXPECT_TRUE(c1.HasFile(file1)); 1875 EXPECT_TRUE(c1.HasFile(file1));
1876 EXPECT_TRUE(c1.HasFile(file2_abs)); 1876 EXPECT_TRUE(c1.HasFile(file2_abs));
1877 EXPECT_TRUE(c1.HasFile(dir2file)); 1877 EXPECT_TRUE(c1.HasFile(dir2file));
1878 EXPECT_TRUE(c1.HasFile(dir2innerfile)); 1878 EXPECT_TRUE(c1.HasFile(dir2innerfile));
1879 EXPECT_EQ(4, c1.size()); 1879 EXPECT_EQ(4, c1.size());
1880 1880
1881 // Only enumerate directories. 1881 // Only enumerate directories.
1882 FileEnumerator f2(temp_dir_.path(), true, FileEnumerator::DIRECTORIES); 1882 FileEnumerator f2(temp_dir_.path(), true, FileEnumerator::DIRECTORIES);
1883 FindResultCollector c2(f2); 1883 FindResultCollector c2(&f2);
1884 EXPECT_TRUE(c2.HasFile(dir1)); 1884 EXPECT_TRUE(c2.HasFile(dir1));
1885 EXPECT_TRUE(c2.HasFile(dir2)); 1885 EXPECT_TRUE(c2.HasFile(dir2));
1886 EXPECT_TRUE(c2.HasFile(dir2inner)); 1886 EXPECT_TRUE(c2.HasFile(dir2inner));
1887 EXPECT_EQ(3, c2.size()); 1887 EXPECT_EQ(3, c2.size());
1888 1888
1889 // Only enumerate directories non-recursively. 1889 // Only enumerate directories non-recursively.
1890 FileEnumerator f2_non_recursive( 1890 FileEnumerator f2_non_recursive(
1891 temp_dir_.path(), false, FileEnumerator::DIRECTORIES); 1891 temp_dir_.path(), false, FileEnumerator::DIRECTORIES);
1892 FindResultCollector c2_non_recursive(f2_non_recursive); 1892 FindResultCollector c2_non_recursive(&f2_non_recursive);
1893 EXPECT_TRUE(c2_non_recursive.HasFile(dir1)); 1893 EXPECT_TRUE(c2_non_recursive.HasFile(dir1));
1894 EXPECT_TRUE(c2_non_recursive.HasFile(dir2)); 1894 EXPECT_TRUE(c2_non_recursive.HasFile(dir2));
1895 EXPECT_EQ(2, c2_non_recursive.size()); 1895 EXPECT_EQ(2, c2_non_recursive.size());
1896 1896
1897 // Only enumerate directories, non-recursively, including "..". 1897 // Only enumerate directories, non-recursively, including "..".
1898 FileEnumerator f2_dotdot(temp_dir_.path(), false, 1898 FileEnumerator f2_dotdot(temp_dir_.path(), false,
1899 FileEnumerator::DIRECTORIES | 1899 FileEnumerator::DIRECTORIES |
1900 FileEnumerator::INCLUDE_DOT_DOT); 1900 FileEnumerator::INCLUDE_DOT_DOT);
1901 FindResultCollector c2_dotdot(f2_dotdot); 1901 FindResultCollector c2_dotdot(&f2_dotdot);
1902 EXPECT_TRUE(c2_dotdot.HasFile(dir1)); 1902 EXPECT_TRUE(c2_dotdot.HasFile(dir1));
1903 EXPECT_TRUE(c2_dotdot.HasFile(dir2)); 1903 EXPECT_TRUE(c2_dotdot.HasFile(dir2));
1904 EXPECT_TRUE(c2_dotdot.HasFile(temp_dir_.path().Append(FPL("..")))); 1904 EXPECT_TRUE(c2_dotdot.HasFile(temp_dir_.path().Append(FPL(".."))));
1905 EXPECT_EQ(3, c2_dotdot.size()); 1905 EXPECT_EQ(3, c2_dotdot.size());
1906 1906
1907 // Enumerate files and directories. 1907 // Enumerate files and directories.
1908 FileEnumerator f3(temp_dir_.path(), true, FILES_AND_DIRECTORIES); 1908 FileEnumerator f3(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
1909 FindResultCollector c3(f3); 1909 FindResultCollector c3(&f3);
1910 EXPECT_TRUE(c3.HasFile(dir1)); 1910 EXPECT_TRUE(c3.HasFile(dir1));
1911 EXPECT_TRUE(c3.HasFile(dir2)); 1911 EXPECT_TRUE(c3.HasFile(dir2));
1912 EXPECT_TRUE(c3.HasFile(file1)); 1912 EXPECT_TRUE(c3.HasFile(file1));
1913 EXPECT_TRUE(c3.HasFile(file2_abs)); 1913 EXPECT_TRUE(c3.HasFile(file2_abs));
1914 EXPECT_TRUE(c3.HasFile(dir2file)); 1914 EXPECT_TRUE(c3.HasFile(dir2file));
1915 EXPECT_TRUE(c3.HasFile(dir2inner)); 1915 EXPECT_TRUE(c3.HasFile(dir2inner));
1916 EXPECT_TRUE(c3.HasFile(dir2innerfile)); 1916 EXPECT_TRUE(c3.HasFile(dir2innerfile));
1917 EXPECT_EQ(7, c3.size()); 1917 EXPECT_EQ(7, c3.size());
1918 1918
1919 // Non-recursive operation. 1919 // Non-recursive operation.
1920 FileEnumerator f4(temp_dir_.path(), false, FILES_AND_DIRECTORIES); 1920 FileEnumerator f4(temp_dir_.path(), false, FILES_AND_DIRECTORIES);
1921 FindResultCollector c4(f4); 1921 FindResultCollector c4(&f4);
1922 EXPECT_TRUE(c4.HasFile(dir2)); 1922 EXPECT_TRUE(c4.HasFile(dir2));
1923 EXPECT_TRUE(c4.HasFile(dir2)); 1923 EXPECT_TRUE(c4.HasFile(dir2));
1924 EXPECT_TRUE(c4.HasFile(file1)); 1924 EXPECT_TRUE(c4.HasFile(file1));
1925 EXPECT_TRUE(c4.HasFile(file2_abs)); 1925 EXPECT_TRUE(c4.HasFile(file2_abs));
1926 EXPECT_EQ(4, c4.size()); 1926 EXPECT_EQ(4, c4.size());
1927 1927
1928 // Enumerate with a pattern. 1928 // Enumerate with a pattern.
1929 FileEnumerator f5(temp_dir_.path(), true, FILES_AND_DIRECTORIES, FPL("dir*")); 1929 FileEnumerator f5(temp_dir_.path(), true, FILES_AND_DIRECTORIES, FPL("dir*"));
1930 FindResultCollector c5(f5); 1930 FindResultCollector c5(&f5);
1931 EXPECT_TRUE(c5.HasFile(dir1)); 1931 EXPECT_TRUE(c5.HasFile(dir1));
1932 EXPECT_TRUE(c5.HasFile(dir2)); 1932 EXPECT_TRUE(c5.HasFile(dir2));
1933 EXPECT_TRUE(c5.HasFile(dir2file)); 1933 EXPECT_TRUE(c5.HasFile(dir2file));
1934 EXPECT_TRUE(c5.HasFile(dir2inner)); 1934 EXPECT_TRUE(c5.HasFile(dir2inner));
1935 EXPECT_TRUE(c5.HasFile(dir2innerfile)); 1935 EXPECT_TRUE(c5.HasFile(dir2innerfile));
1936 EXPECT_EQ(5, c5.size()); 1936 EXPECT_EQ(5, c5.size());
1937 1937
1938 #if defined(OS_WIN) 1938 #if defined(OS_WIN)
1939 { 1939 {
1940 // Make dir1 point to dir2. 1940 // Make dir1 point to dir2.
1941 ReparsePoint reparse_point(dir1, dir2); 1941 ReparsePoint reparse_point(dir1, dir2);
1942 EXPECT_TRUE(reparse_point.IsValid()); 1942 EXPECT_TRUE(reparse_point.IsValid());
1943 1943
1944 if ((win::GetVersion() >= win::VERSION_VISTA)) { 1944 if ((win::GetVersion() >= win::VERSION_VISTA)) {
1945 // There can be a delay for the enumeration code to see the change on 1945 // There can be a delay for the enumeration code to see the change on
1946 // the file system so skip this test for XP. 1946 // the file system so skip this test for XP.
1947 // Enumerate the reparse point. 1947 // Enumerate the reparse point.
1948 FileEnumerator f6(dir1, true, FILES_AND_DIRECTORIES); 1948 FileEnumerator f6(dir1, true, FILES_AND_DIRECTORIES);
1949 FindResultCollector c6(f6); 1949 FindResultCollector c6(&f6);
1950 FilePath inner2 = dir1.Append(FPL("inner")); 1950 FilePath inner2 = dir1.Append(FPL("inner"));
1951 EXPECT_TRUE(c6.HasFile(inner2)); 1951 EXPECT_TRUE(c6.HasFile(inner2));
1952 EXPECT_TRUE(c6.HasFile(inner2.Append(FPL("innerfile.txt")))); 1952 EXPECT_TRUE(c6.HasFile(inner2.Append(FPL("innerfile.txt"))));
1953 EXPECT_TRUE(c6.HasFile(dir1.Append(FPL("dir2file.txt")))); 1953 EXPECT_TRUE(c6.HasFile(dir1.Append(FPL("dir2file.txt"))));
1954 EXPECT_EQ(3, c6.size()); 1954 EXPECT_EQ(3, c6.size());
1955 } 1955 }
1956 1956
1957 // No changes for non recursive operation. 1957 // No changes for non recursive operation.
1958 FileEnumerator f7(temp_dir_.path(), false, FILES_AND_DIRECTORIES); 1958 FileEnumerator f7(temp_dir_.path(), false, FILES_AND_DIRECTORIES);
1959 FindResultCollector c7(f7); 1959 FindResultCollector c7(&f7);
1960 EXPECT_TRUE(c7.HasFile(dir2)); 1960 EXPECT_TRUE(c7.HasFile(dir2));
1961 EXPECT_TRUE(c7.HasFile(dir2)); 1961 EXPECT_TRUE(c7.HasFile(dir2));
1962 EXPECT_TRUE(c7.HasFile(file1)); 1962 EXPECT_TRUE(c7.HasFile(file1));
1963 EXPECT_TRUE(c7.HasFile(file2_abs)); 1963 EXPECT_TRUE(c7.HasFile(file2_abs));
1964 EXPECT_EQ(4, c7.size()); 1964 EXPECT_EQ(4, c7.size());
1965 1965
1966 // Should not enumerate inside dir1 when using recursion. 1966 // Should not enumerate inside dir1 when using recursion.
1967 FileEnumerator f8(temp_dir_.path(), true, FILES_AND_DIRECTORIES); 1967 FileEnumerator f8(temp_dir_.path(), true, FILES_AND_DIRECTORIES);
1968 FindResultCollector c8(f8); 1968 FindResultCollector c8(&f8);
1969 EXPECT_TRUE(c8.HasFile(dir1)); 1969 EXPECT_TRUE(c8.HasFile(dir1));
1970 EXPECT_TRUE(c8.HasFile(dir2)); 1970 EXPECT_TRUE(c8.HasFile(dir2));
1971 EXPECT_TRUE(c8.HasFile(file1)); 1971 EXPECT_TRUE(c8.HasFile(file1));
1972 EXPECT_TRUE(c8.HasFile(file2_abs)); 1972 EXPECT_TRUE(c8.HasFile(file2_abs));
1973 EXPECT_TRUE(c8.HasFile(dir2file)); 1973 EXPECT_TRUE(c8.HasFile(dir2file));
1974 EXPECT_TRUE(c8.HasFile(dir2inner)); 1974 EXPECT_TRUE(c8.HasFile(dir2inner));
1975 EXPECT_TRUE(c8.HasFile(dir2innerfile)); 1975 EXPECT_TRUE(c8.HasFile(dir2innerfile));
1976 EXPECT_EQ(7, c8.size()); 1976 EXPECT_EQ(7, c8.size());
1977 } 1977 }
1978 #endif 1978 #endif
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
2611 // Trying to close it should crash. This is important for security. 2611 // Trying to close it should crash. This is important for security.
2612 EXPECT_DEATH(CloseWithScopedFD(fds[1]), ""); 2612 EXPECT_DEATH(CloseWithScopedFD(fds[1]), "");
2613 #endif 2613 #endif
2614 } 2614 }
2615 2615
2616 #endif // defined(OS_POSIX) 2616 #endif // defined(OS_POSIX)
2617 2617
2618 } // namespace 2618 } // namespace
2619 2619
2620 } // namespace base 2620 } // namespace base
OLDNEW
« no previous file with comments | « base/files/file_path_watcher_browsertest.cc ('k') | base/guid_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698