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

Side by Side Diff: base/file_util_unittest.cc

Issue 184563006: Move WriteFile and WriteFileDescriptor from file_util to base namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
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 679 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); 690 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt"));
691 EXPECT_FALSE(PathExists(file_name)); 691 EXPECT_FALSE(PathExists(file_name));
692 692
693 const std::string kData("hello"); 693 const std::string kData("hello");
694 694
695 int buffer_size = kData.length(); 695 int buffer_size = kData.length();
696 char* buffer = new char[buffer_size]; 696 char* buffer = new char[buffer_size];
697 697
698 // Write file. 698 // Write file.
699 EXPECT_EQ(static_cast<int>(kData.length()), 699 EXPECT_EQ(static_cast<int>(kData.length()),
700 file_util::WriteFile(file_name, kData.data(), kData.length())); 700 WriteFile(file_name, kData.data(), kData.length()));
701 EXPECT_TRUE(PathExists(file_name)); 701 EXPECT_TRUE(PathExists(file_name));
702 702
703 // Make sure the file is readable. 703 // Make sure the file is readable.
704 int32 mode = 0; 704 int32 mode = 0;
705 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); 705 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode));
706 EXPECT_TRUE(mode & FILE_PERMISSION_READ_BY_USER); 706 EXPECT_TRUE(mode & FILE_PERMISSION_READ_BY_USER);
707 707
708 // Get rid of the read permission. 708 // Get rid of the read permission.
709 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u)); 709 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u));
710 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); 710 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode));
(...skipping 18 matching lines...) Expand all
729 729
730 TEST_F(FileUtilTest, ChangeFilePermissionsAndWrite) { 730 TEST_F(FileUtilTest, ChangeFilePermissionsAndWrite) {
731 // Create a file path. 731 // Create a file path.
732 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); 732 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt"));
733 EXPECT_FALSE(PathExists(file_name)); 733 EXPECT_FALSE(PathExists(file_name));
734 734
735 const std::string kData("hello"); 735 const std::string kData("hello");
736 736
737 // Write file. 737 // Write file.
738 EXPECT_EQ(static_cast<int>(kData.length()), 738 EXPECT_EQ(static_cast<int>(kData.length()),
739 file_util::WriteFile(file_name, kData.data(), kData.length())); 739 WriteFile(file_name, kData.data(), kData.length()));
740 EXPECT_TRUE(PathExists(file_name)); 740 EXPECT_TRUE(PathExists(file_name));
741 741
742 // Make sure the file is writable. 742 // Make sure the file is writable.
743 int mode = 0; 743 int mode = 0;
744 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); 744 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode));
745 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER); 745 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER);
746 EXPECT_TRUE(PathIsWritable(file_name)); 746 EXPECT_TRUE(PathIsWritable(file_name));
747 747
748 // Get rid of the write permission. 748 // Get rid of the write permission.
749 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u)); 749 EXPECT_TRUE(SetPosixFilePermissions(file_name, 0u));
750 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); 750 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode));
751 EXPECT_FALSE(mode & FILE_PERMISSION_WRITE_BY_USER); 751 EXPECT_FALSE(mode & FILE_PERMISSION_WRITE_BY_USER);
752 // Make sure the file can't be write. 752 // Make sure the file can't be write.
753 EXPECT_EQ(-1, 753 EXPECT_EQ(-1, WriteFile(file_name, kData.data(), kData.length()));
754 file_util::WriteFile(file_name, kData.data(), kData.length()));
755 EXPECT_FALSE(PathIsWritable(file_name)); 754 EXPECT_FALSE(PathIsWritable(file_name));
756 755
757 // Give read permission. 756 // Give read permission.
758 EXPECT_TRUE(SetPosixFilePermissions(file_name, 757 EXPECT_TRUE(SetPosixFilePermissions(file_name,
759 FILE_PERMISSION_WRITE_BY_USER)); 758 FILE_PERMISSION_WRITE_BY_USER));
760 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode)); 759 EXPECT_TRUE(GetPosixFilePermissions(file_name, &mode));
761 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER); 760 EXPECT_TRUE(mode & FILE_PERMISSION_WRITE_BY_USER);
762 // Make sure the file can be write. 761 // Make sure the file can be write.
763 EXPECT_EQ(static_cast<int>(kData.length()), 762 EXPECT_EQ(static_cast<int>(kData.length()),
764 file_util::WriteFile(file_name, kData.data(), kData.length())); 763 WriteFile(file_name, kData.data(), kData.length()));
765 EXPECT_TRUE(PathIsWritable(file_name)); 764 EXPECT_TRUE(PathIsWritable(file_name));
766 765
767 // Delete the file. 766 // Delete the file.
768 EXPECT_TRUE(DeleteFile(file_name, false)); 767 EXPECT_TRUE(DeleteFile(file_name, false));
769 EXPECT_FALSE(PathExists(file_name)); 768 EXPECT_FALSE(PathExists(file_name));
770 } 769 }
771 770
772 TEST_F(FileUtilTest, ChangeDirectoryPermissionsAndEnumerate) { 771 TEST_F(FileUtilTest, ChangeDirectoryPermissionsAndEnumerate) {
773 // Create a directory path. 772 // Create a directory path.
774 FilePath subdir_path = 773 FilePath subdir_path =
775 temp_dir_.path().Append(FPL("PermissionTest1")); 774 temp_dir_.path().Append(FPL("PermissionTest1"));
776 CreateDirectory(subdir_path); 775 CreateDirectory(subdir_path);
777 ASSERT_TRUE(PathExists(subdir_path)); 776 ASSERT_TRUE(PathExists(subdir_path));
778 777
779 // Create a dummy file to enumerate. 778 // Create a dummy file to enumerate.
780 FilePath file_name = subdir_path.Append(FPL("Test Readable File.txt")); 779 FilePath file_name = subdir_path.Append(FPL("Test Readable File.txt"));
781 EXPECT_FALSE(PathExists(file_name)); 780 EXPECT_FALSE(PathExists(file_name));
782 const std::string kData("hello"); 781 const std::string kData("hello");
783 EXPECT_EQ(static_cast<int>(kData.length()), 782 EXPECT_EQ(static_cast<int>(kData.length()),
784 file_util::WriteFile(file_name, kData.data(), kData.length())); 783 WriteFile(file_name, kData.data(), kData.length()));
785 EXPECT_TRUE(PathExists(file_name)); 784 EXPECT_TRUE(PathExists(file_name));
786 785
787 // Make sure the directory has the all permissions. 786 // Make sure the directory has the all permissions.
788 int mode = 0; 787 int mode = 0;
789 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); 788 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode));
790 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK); 789 EXPECT_EQ(FILE_PERMISSION_USER_MASK, mode & FILE_PERMISSION_USER_MASK);
791 790
792 // Get rid of the permissions from the directory. 791 // Get rid of the permissions from the directory.
793 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, 0u)); 792 EXPECT_TRUE(SetPosixFilePermissions(subdir_path, 0u));
794 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode)); 793 EXPECT_TRUE(GetPosixFilePermissions(subdir_path, &mode));
(...skipping 1142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1937 // Create a fresh, empty copy of this directory. 1936 // Create a fresh, empty copy of this directory.
1938 if (PathExists(data_dir)) { 1937 if (PathExists(data_dir)) {
1939 ASSERT_TRUE(DeleteFile(data_dir, true)); 1938 ASSERT_TRUE(DeleteFile(data_dir, true));
1940 } 1939 }
1941 ASSERT_TRUE(CreateDirectory(data_dir)); 1940 ASSERT_TRUE(CreateDirectory(data_dir));
1942 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt"))); 1941 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt")));
1943 1942
1944 std::string data("hello"); 1943 std::string data("hello");
1945 EXPECT_EQ(-1, file_util::AppendToFile(foobar, data.c_str(), data.length())); 1944 EXPECT_EQ(-1, file_util::AppendToFile(foobar, data.c_str(), data.length()));
1946 EXPECT_EQ(static_cast<int>(data.length()), 1945 EXPECT_EQ(static_cast<int>(data.length()),
1947 file_util::WriteFile(foobar, data.c_str(), data.length())); 1946 WriteFile(foobar, data.c_str(), data.length()));
1948 EXPECT_EQ(static_cast<int>(data.length()), 1947 EXPECT_EQ(static_cast<int>(data.length()),
1949 file_util::AppendToFile(foobar, data.c_str(), data.length())); 1948 file_util::AppendToFile(foobar, data.c_str(), data.length()));
1950 1949
1951 const std::wstring read_content = ReadTextFile(foobar); 1950 const std::wstring read_content = ReadTextFile(foobar);
1952 EXPECT_EQ(L"hellohello", read_content); 1951 EXPECT_EQ(L"hellohello", read_content);
1953 } 1952 }
1954 1953
1955 TEST_F(FileUtilTest, ReadFileToString) { 1954 TEST_F(FileUtilTest, ReadFileToString) {
1956 const char kTestData[] = "0123"; 1955 const char kTestData[] = "0123";
1957 std::string data; 1956 std::string data;
1958 1957
1959 FilePath file_path = 1958 FilePath file_path =
1960 temp_dir_.path().Append(FILE_PATH_LITERAL("ReadFileToStringTest")); 1959 temp_dir_.path().Append(FILE_PATH_LITERAL("ReadFileToStringTest"));
1961 1960
1962 ASSERT_EQ(4, file_util::WriteFile(file_path, kTestData, 4)); 1961 ASSERT_EQ(4, WriteFile(file_path, kTestData, 4));
1963 1962
1964 EXPECT_TRUE(ReadFileToString(file_path, &data)); 1963 EXPECT_TRUE(ReadFileToString(file_path, &data));
1965 EXPECT_EQ(kTestData, data); 1964 EXPECT_EQ(kTestData, data);
1966 1965
1967 data = "temp"; 1966 data = "temp";
1968 EXPECT_FALSE(ReadFileToString(file_path, &data, 0)); 1967 EXPECT_FALSE(ReadFileToString(file_path, &data, 0));
1969 EXPECT_EQ(data.length(), 0u); 1968 EXPECT_EQ(data.length(), 0u);
1970 1969
1971 data = "temp"; 1970 data = "temp";
1972 EXPECT_FALSE(ReadFileToString(file_path, &data, 2)); 1971 EXPECT_FALSE(ReadFileToString(file_path, &data, 2));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2004 temp_dir_.path().Append(FILE_PATH_LITERAL("FilePathTest")); 2003 temp_dir_.path().Append(FILE_PATH_LITERAL("FilePathTest"));
2005 2004
2006 // Create a fresh, empty copy of this directory. 2005 // Create a fresh, empty copy of this directory.
2007 if (PathExists(data_dir)) { 2006 if (PathExists(data_dir)) {
2008 ASSERT_TRUE(DeleteFile(data_dir, true)); 2007 ASSERT_TRUE(DeleteFile(data_dir, true));
2009 } 2008 }
2010 ASSERT_TRUE(CreateDirectory(data_dir)); 2009 ASSERT_TRUE(CreateDirectory(data_dir));
2011 2010
2012 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt"))); 2011 FilePath foobar(data_dir.Append(FILE_PATH_LITERAL("foobar.txt")));
2013 std::string data("hello"); 2012 std::string data("hello");
2014 ASSERT_TRUE(file_util::WriteFile(foobar, data.c_str(), data.length())); 2013 ASSERT_TRUE(WriteFile(foobar, data.c_str(), data.length()));
2015 2014
2016 Time access_time; 2015 Time access_time;
2017 // This timestamp is divisible by one day (in local timezone), 2016 // This timestamp is divisible by one day (in local timezone),
2018 // to make it work on FAT too. 2017 // to make it work on FAT too.
2019 ASSERT_TRUE(Time::FromString("Wed, 16 Nov 1994, 00:00:00", 2018 ASSERT_TRUE(Time::FromString("Wed, 16 Nov 1994, 00:00:00",
2020 &access_time)); 2019 &access_time));
2021 2020
2022 Time modification_time; 2021 Time modification_time;
2023 // Note that this timestamp is divisible by two (seconds) - FAT stores 2022 // Note that this timestamp is divisible by two (seconds) - FAT stores
2024 // modification times with 2s resolution. 2023 // modification times with 2s resolution.
(...skipping 13 matching lines...) Expand all
2038 FilePath empty_dir = temp_dir_.path().Append(FILE_PATH_LITERAL("EmptyDir")); 2037 FilePath empty_dir = temp_dir_.path().Append(FILE_PATH_LITERAL("EmptyDir"));
2039 2038
2040 ASSERT_FALSE(PathExists(empty_dir)); 2039 ASSERT_FALSE(PathExists(empty_dir));
2041 2040
2042 ASSERT_TRUE(CreateDirectory(empty_dir)); 2041 ASSERT_TRUE(CreateDirectory(empty_dir));
2043 2042
2044 EXPECT_TRUE(IsDirectoryEmpty(empty_dir)); 2043 EXPECT_TRUE(IsDirectoryEmpty(empty_dir));
2045 2044
2046 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt"))); 2045 FilePath foo(empty_dir.Append(FILE_PATH_LITERAL("foo.txt")));
2047 std::string bar("baz"); 2046 std::string bar("baz");
2048 ASSERT_TRUE(file_util::WriteFile(foo, bar.c_str(), bar.length())); 2047 ASSERT_TRUE(WriteFile(foo, bar.c_str(), bar.length()));
2049 2048
2050 EXPECT_FALSE(IsDirectoryEmpty(empty_dir)); 2049 EXPECT_FALSE(IsDirectoryEmpty(empty_dir));
2051 } 2050 }
2052 2051
2053 #if defined(OS_POSIX) 2052 #if defined(OS_POSIX)
2054 2053
2055 // Testing VerifyPathControlledByAdmin() is hard, because there is no 2054 // Testing VerifyPathControlledByAdmin() is hard, because there is no
2056 // way a test can make a file owned by root, or change file paths 2055 // way a test can make a file owned by root, or change file paths
2057 // at the root of the file system. VerifyPathControlledByAdmin() 2056 // at the root of the file system. VerifyPathControlledByAdmin()
2058 // is implemented as a call to VerifyPathControlledByUser, which gives 2057 // is implemented as a call to VerifyPathControlledByUser, which gives
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
2461 int fd = OpenContentUriForRead(path); 2460 int fd = OpenContentUriForRead(path);
2462 EXPECT_EQ(-1, fd); 2461 EXPECT_EQ(-1, fd);
2463 } 2462 }
2464 #endif 2463 #endif
2465 2464
2466 #endif // defined(OS_POSIX) 2465 #endif // defined(OS_POSIX)
2467 2466
2468 } // namespace 2467 } // namespace
2469 2468
2470 } // namespace base 2469 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698