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 "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 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); | 696 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); |
697 EXPECT_FALSE(PathExists(file_name)); | 697 EXPECT_FALSE(PathExists(file_name)); |
698 | 698 |
699 const std::string kData("hello"); | 699 const std::string kData("hello"); |
700 | 700 |
701 int buffer_size = kData.length(); | 701 int buffer_size = kData.length(); |
702 char* buffer = new char[buffer_size]; | 702 char* buffer = new char[buffer_size]; |
703 | 703 |
704 // Write file. | 704 // Write file. |
705 EXPECT_EQ(static_cast<int>(kData.length()), | 705 EXPECT_EQ(static_cast<int>(kData.length()), |
706 file_util::WriteFile(file_name, kData.data(), kData.length())); | 706 WriteFile(file_name, kData.data(), kData.length())); |
707 EXPECT_TRUE(PathExists(file_name)); | 707 EXPECT_TRUE(PathExists(file_name)); |
708 | 708 |
709 // Make sure the file is readable. | 709 // Make sure the file is readable. |
710 int32 mode = 0; | 710 int32 mode = 0; |
711 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); | 711 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); |
712 EXPECT_TRUE(mode & FILE_PERMISSION_READ_BY_USER); | 712 EXPECT_TRUE(mode & FILE_PERMISSION_READ_BY_USER); |
713 | 713 |
714 // Get rid of the read permission. | 714 // Get rid of the read permission. |
715 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u)); | 715 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u)); |
716 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); | 716 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); |
(...skipping 18 matching lines...) Expand all Loading... |
735 | 735 |
736 TEST_F(FileUtilTest, ChangeFilePermissionsAndWrite) { | 736 TEST_F(FileUtilTest, ChangeFilePermissionsAndWrite) { |
737 // Create a file path. | 737 // Create a file path. |
738 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); | 738 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); |
739 EXPECT_FALSE(PathExists(file_name)); | 739 EXPECT_FALSE(PathExists(file_name)); |
740 | 740 |
741 const std::string kData("hello"); | 741 const std::string kData("hello"); |
742 | 742 |
743 // Write file. | 743 // Write file. |
744 EXPECT_EQ(static_cast<int>(kData.length()), | 744 EXPECT_EQ(static_cast<int>(kData.length()), |
745 file_util::WriteFile(file_name, kData.data(), kData.length())); | 745 WriteFile(file_name, kData.data(), kData.length())); |
746 EXPECT_TRUE(PathExists(file_name)); | 746 EXPECT_TRUE(PathExists(file_name)); |
747 | 747 |
748 // Make sure the file is writable. | 748 // Make sure the file is writable. |
749 int mode = 0; | 749 int mode = 0; |
750 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); | 750 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); |
751 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER); | 751 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER); |
752 EXPECT_TRUE(PathIsWritable(file_name)); | 752 EXPECT_TRUE(PathIsWritable(file_name)); |
753 | 753 |
754 // Get rid of the write permission. | 754 // Get rid of the write permission. |
755 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u)); | 755 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u)); |
756 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); | 756 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); |
757 EXPECT_FALSE(mode & FILE_PERMISSION_WRITE_BY_USER); | 757 EXPECT_FALSE(mode & FILE_PERMISSION_WRITE_BY_USER); |
758 // Make sure the file can't be write. | 758 // Make sure the file can't be write. |
759 EXPECT_EQ(-1, | 759 EXPECT_EQ(-1, WriteFile(file_name, kData.data(), kData.length())); |
760 file_util::WriteFile(file_name, kData.data(), kData.length())); | |
761 EXPECT_FALSE(PathIsWritable(file_name)); | 760 EXPECT_FALSE(PathIsWritable(file_name)); |
762 | 761 |
763 // Give read permission. | 762 // Give read permission. |
764 EXPECT_TRUE(SetPosixFilePermissions(file_name, | 763 EXPECT_TRUE(SetPosixFilePermissions(file_name, |
765 FILE_PERMISSION_WRITE_BY_USER)); | 764 FILE_PERMISSION_WRITE_BY_USER)); |
766 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); | 765 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); |
767 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER); | 766 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER); |
768 // Make sure the file can be write. | 767 // Make sure the file can be write. |
769 EXPECT_EQ(static_cast<int>(kData.length()), | 768 EXPECT_EQ(static_cast<int>(kData.length()), |
770 file_util::WriteFile(file_name, kData.data(), kData.length())); | 769 WriteFile(file_name, kData.data(), kData.length())); |
771 EXPECT_TRUE(PathIsWritable(file_name)); | 770 EXPECT_TRUE(PathIsWritable(file_name)); |
772 | 771 |
773 // Delete the file. | 772 // Delete the file. |
774 EXPECT_TRUE(DeleteFile(file_name, false)); | 773 EXPECT_TRUE(DeleteFile(file_name, false)); |
775 EXPECT_FALSE(PathExists(file_name)); | 774 EXPECT_FALSE(PathExists(file_name)); |
776 } | 775 } |
777 | 776 |
778 TEST_F(FileUtilTest, ChangeDirectoryPermissionsAndEnumerate) { | 777 TEST_F(FileUtilTest, ChangeDirectoryPermissionsAndEnumerate) { |
779 // Create a directory path. | 778 // Create a directory path. |
780 FilePath subdir_path = | 779 FilePath subdir_path = |
781 temp_dir_.path().Append(FPL("PermissionTest1")); | 780 temp_dir_.path().Append(FPL("PermissionTest1")); |
782 CreateDirectory(subdir_path); | 781 CreateDirectory(subdir_path); |
783 ASSERT_TRUE(PathExists(subdir_path)); | 782 ASSERT_TRUE(PathExists(subdir_path)); |
784 | 783 |
785 // Create a dummy file to enumerate. | 784 // Create a dummy file to enumerate. |
786 FilePath file_name = subdir_path.Append(FPL("Test Readable File.txt")); | 785 FilePath file_name = subdir_path.Append(FPL("Test Readable File.txt")); |
787 EXPECT_FALSE(PathExists(file_name)); | 786 EXPECT_FALSE(PathExists(file_name)); |
788 const std::string kData("hello"); | 787 const std::string kData("hello"); |
789 EXPECT_EQ(static_cast<int>(kData.length()), | 788 EXPECT_EQ(static_cast<int>(kData.length()), |
790 file_util::WriteFile(file_name, kData.data(), kData.length())); | 789 WriteFile(file_name, kData.data(), kData.length())); |
791 EXPECT_TRUE(PathExists(file_name)); | 790 EXPECT_TRUE(PathExists(file_name)); |
792 | 791 |
793 // Make sure the directory has the all permissions. | 792 // Make sure the directory has the all permissions. |
794 int mode = 0; | 793 int mode = 0; |
795 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); | 794 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); |
796 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK); | 795 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK); |
797 | 796 |
798 // Get rid of the permissions from the directory. | 797 // Get rid of the permissions from the directory. |
799 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, 0u)); | 798 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, 0u)); |
800 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); | 799 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); |
(...skipping 1142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1943 // Create a fresh, empty copy of this directory. | 1942 // Create a fresh, empty copy of this directory. |
1944 if (PathExists(data_dir)) { | 1943 if (PathExists(data_dir)) { |
1945 ASSERT_TRUE(DeleteFile(data_dir, true)); | 1944 ASSERT_TRUE(DeleteFile(data_dir, true)); |
1946 } | 1945 } |
1947 ASSERT_TRUE(CreateDirectory(data_dir)); | 1946 ASSERT_TRUE(CreateDirectory(data_dir)); |
1948 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt"))); | 1947 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt"))); |
1949 | 1948 |
1950 std::string data("hello"); | 1949 std::string data("hello"); |
1951 EXPECT_EQ(-1, file_util::AppendToFile(foobar, data.c_str(), data.length())); | 1950 EXPECT_EQ(-1, file_util::AppendToFile(foobar, data.c_str(), data.length())); |
1952 EXPECT_EQ(static_cast<int>(data.length()), | 1951 EXPECT_EQ(static_cast<int>(data.length()), |
1953 file_util::WriteFile(foobar, data.c_str(), data.length())); | 1952 WriteFile(foobar, data.c_str(), data.length())); |
1954 EXPECT_EQ(static_cast<int>(data.length()), | 1953 EXPECT_EQ(static_cast<int>(data.length()), |
1955 file_util::AppendToFile(foobar, data.c_str(), data.length())); | 1954 file_util::AppendToFile(foobar, data.c_str(), data.length())); |
1956 | 1955 |
1957 const std::wstring read_content = ReadTextFile(foobar); | 1956 const std::wstring read_content = ReadTextFile(foobar); |
1958 EXPECT_EQ(L"hellohello", read_content); | 1957 EXPECT_EQ(L"hellohello", read_content); |
1959 } | 1958 } |
1960 | 1959 |
1961 TEST_F(FileUtilTest, ReadFileToString) { | 1960 TEST_F(FileUtilTest, ReadFileToString) { |
1962 const char kTestData[] = "0123"; | 1961 const char kTestData[] = "0123"; |
1963 std::string data; | 1962 std::string data; |
1964 | 1963 |
1965 FilePath file_path = | 1964 FilePath file_path = |
1966 temp_dir_.path().Append(FILE_PATH_LITERAL("ReadFileToStringTest")); | 1965 temp_dir_.path().Append(FILE_PATH_LITERAL("ReadFileToStringTest")); |
1967 | 1966 |
1968 ASSERT_EQ(4, file_util::WriteFile(file_path, kTestData, 4)); | 1967 ASSERT_EQ(4, WriteFile(file_path, kTestData, 4)); |
1969 | 1968 |
1970 EXPECT_TRUE(ReadFileToString(file_path, &data)); | 1969 EXPECT_TRUE(ReadFileToString(file_path, &data)); |
1971 EXPECT_EQ(kTestData, data); | 1970 EXPECT_EQ(kTestData, data); |
1972 | 1971 |
1973 data = "temp"; | 1972 data = "temp"; |
1974 EXPECT_FALSE(ReadFileToString(file_path, &data, 0)); | 1973 EXPECT_FALSE(ReadFileToString(file_path, &data, 0)); |
1975 EXPECT_EQ(data.length(), 0u); | 1974 EXPECT_EQ(data.length(), 0u); |
1976 | 1975 |
1977 data = "temp"; | 1976 data = "temp"; |
1978 EXPECT_FALSE(ReadFileToString(file_path, &data, 2)); | 1977 EXPECT_FALSE(ReadFileToString(file_path, &data, 2)); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2010 temp_dir_.path().Append(FILE_PATH_LITERAL("FilePathTest")); | 2009 temp_dir_.path().Append(FILE_PATH_LITERAL("FilePathTest")); |
2011 | 2010 |
2012 // Create a fresh, empty copy of this directory. | 2011 // Create a fresh, empty copy of this directory. |
2013 if (PathExists(data_dir)) { | 2012 if (PathExists(data_dir)) { |
2014 ASSERT_TRUE(DeleteFile(data_dir, true)); | 2013 ASSERT_TRUE(DeleteFile(data_dir, true)); |
2015 } | 2014 } |
2016 ASSERT_TRUE(CreateDirectory(data_dir)); | 2015 ASSERT_TRUE(CreateDirectory(data_dir)); |
2017 | 2016 |
2018 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt"))); | 2017 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt"))); |
2019 std::string data("hello"); | 2018 std::string data("hello"); |
2020 ASSERT_TRUE(file_util::WriteFile(foobar, data.c_str(), data.length())); | 2019 ASSERT_TRUE(WriteFile(foobar, data.c_str(), data.length())); |
2021 | 2020 |
2022 Time access_time; | 2021 Time access_time; |
2023 // This timestamp is divisible by one day (in local timezone), | 2022 // This timestamp is divisible by one day (in local timezone), |
2024 // to make it work on FAT too. | 2023 // to make it work on FAT too. |
2025 ASSERT_TRUE(Time::FromString("Wed, 16 Nov 1994, 00:00:00", | 2024 ASSERT_TRUE(Time::FromString("Wed, 16 Nov 1994, 00:00:00", |
2026 &access_time)); | 2025 &access_time)); |
2027 | 2026 |
2028 Time modification_time; | 2027 Time modification_time; |
2029 // Note that this timestamp is divisible by two (seconds) - FAT stores | 2028 // Note that this timestamp is divisible by two (seconds) - FAT stores |
2030 // modification times with 2s resolution. | 2029 // modification times with 2s resolution. |
(...skipping 13 matching lines...) Expand all Loading... |
2044 FilePath empty_dir = temp_dir_.path().Append(FILE_PATH_LITERAL("EmptyDir")); | 2043 FilePath empty_dir = temp_dir_.path().Append(FILE_PATH_LITERAL("EmptyDir")); |
2045 | 2044 |
2046 ASSERT_FALSE(PathExists(empty_dir)); | 2045 ASSERT_FALSE(PathExists(empty_dir)); |
2047 | 2046 |
2048 ASSERT_TRUE(CreateDirectory(empty_dir)); | 2047 ASSERT_TRUE(CreateDirectory(empty_dir)); |
2049 | 2048 |
2050 EXPECT_TRUE(IsDirectoryEmpty(empty_dir)); | 2049 EXPECT_TRUE(IsDirectoryEmpty(empty_dir)); |
2051 | 2050 |
2052 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); | 2051 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); |
2053 std::string bar("baz"); | 2052 std::string bar("baz"); |
2054 ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length())); | 2053 ASSERT_TRUE(WriteFile(foo, bar.c_str(), bar.length())); |
2055 | 2054 |
2056 EXPECT_FALSE(IsDirectoryEmpty(empty_dir)); | 2055 EXPECT_FALSE(IsDirectoryEmpty(empty_dir)); |
2057 } | 2056 } |
2058 | 2057 |
2059 #if defined(OS_POSIX) | 2058 #if defined(OS_POSIX) |
2060 | 2059 |
2061 // Testing VerifyPathControlledByAdmin() is hard, because there is no | 2060 // Testing VerifyPathControlledByAdmin() is hard, because there is no |
2062 // way a test can make a file owned by root, or change file paths | 2061 // way a test can make a file owned by root, or change file paths |
2063 // at the root of the file system. VerifyPathControlledByAdmin() | 2062 // at the root of the file system. VerifyPathControlledByAdmin() |
2064 // is implemented as a call to VerifyPathControlledByUser, which gives | 2063 // is implemented as a call to VerifyPathControlledByUser, which gives |
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2504 // Trying to close it should crash. This is important for security. | 2503 // Trying to close it should crash. This is important for security. |
2505 EXPECT_DEATH(CloseWithScopedFD(fds[1]), ""); | 2504 EXPECT_DEATH(CloseWithScopedFD(fds[1]), ""); |
2506 #endif | 2505 #endif |
2507 } | 2506 } |
2508 | 2507 |
2509 #endif // defined(OS_POSIX) | 2508 #endif // defined(OS_POSIX) |
2510 | 2509 |
2511 } // namespace | 2510 } // namespace |
2512 | 2511 |
2513 } // namespace base | 2512 } // namespace base |
OLD | NEW |