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

Side by Side Diff: base/file_util_unittest.cc

Issue 105293002: Move more file_util functions to base namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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
« no previous file with comments | « base/file_util_posix.cc ('k') | base/file_util_win.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 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 427
428 // Get the NT style path to that drive. 428 // Get the NT style path to that drive.
429 wchar_t device_path[MAX_PATH] = {'\0'}; 429 wchar_t device_path[MAX_PATH] = {'\0'};
430 ASSERT_TRUE( 430 ASSERT_TRUE(
431 ::QueryDosDevice(real_drive_letter.c_str(), device_path, MAX_PATH)); 431 ::QueryDosDevice(real_drive_letter.c_str(), device_path, MAX_PATH));
432 FilePath actual_device_path(device_path); 432 FilePath actual_device_path(device_path);
433 FilePath win32_path; 433 FilePath win32_path;
434 434
435 // Run DevicePathToDriveLetterPath() on the NT style path we got from 435 // Run DevicePathToDriveLetterPath() on the NT style path we got from
436 // QueryDosDevice(). Expect the drive letter we started with. 436 // QueryDosDevice(). Expect the drive letter we started with.
437 ASSERT_TRUE(file_util::DevicePathToDriveLetterPath(actual_device_path, 437 ASSERT_TRUE(DevicePathToDriveLetterPath(actual_device_path, &win32_path));
438 &win32_path));
439 ASSERT_EQ(real_drive_letter, win32_path.value()); 438 ASSERT_EQ(real_drive_letter, win32_path.value());
440 439
441 // Add some directories to the path. Expect those extra path componenets 440 // Add some directories to the path. Expect those extra path componenets
442 // to be preserved. 441 // to be preserved.
443 FilePath kRelativePath(FPL("dir1\\dir2\\file.txt")); 442 FilePath kRelativePath(FPL("dir1\\dir2\\file.txt"));
444 ASSERT_TRUE(file_util::DevicePathToDriveLetterPath( 443 ASSERT_TRUE(DevicePathToDriveLetterPath(
445 actual_device_path.Append(kRelativePath), 444 actual_device_path.Append(kRelativePath),
446 &win32_path)); 445 &win32_path));
447 EXPECT_EQ(FilePath(real_drive_letter + L"\\").Append(kRelativePath).value(), 446 EXPECT_EQ(FilePath(real_drive_letter + L"\\").Append(kRelativePath).value(),
448 win32_path.value()); 447 win32_path.value());
449 448
450 // Deform the real path so that it is invalid by removing the last four 449 // Deform the real path so that it is invalid by removing the last four
451 // characters. The way windows names devices that are hard disks 450 // characters. The way windows names devices that are hard disks
452 // (\Device\HardDiskVolume${NUMBER}) guarantees that the string is longer 451 // (\Device\HardDiskVolume${NUMBER}) guarantees that the string is longer
453 // than three characters. The only way the truncated string could be a 452 // than three characters. The only way the truncated string could be a
454 // real drive is if more than 10^3 disks are mounted: 453 // real drive is if more than 10^3 disks are mounted:
455 // \Device\HardDiskVolume10000 would be truncated to \Device\HardDiskVolume1 454 // \Device\HardDiskVolume10000 would be truncated to \Device\HardDiskVolume1
456 // Check that DevicePathToDriveLetterPath fails. 455 // Check that DevicePathToDriveLetterPath fails.
457 int path_length = actual_device_path.value().length(); 456 int path_length = actual_device_path.value().length();
458 int new_length = path_length - 4; 457 int new_length = path_length - 4;
459 ASSERT_LT(0, new_length); 458 ASSERT_LT(0, new_length);
460 FilePath prefix_of_real_device_path( 459 FilePath prefix_of_real_device_path(
461 actual_device_path.value().substr(0, new_length)); 460 actual_device_path.value().substr(0, new_length));
462 ASSERT_FALSE(file_util::DevicePathToDriveLetterPath( 461 ASSERT_FALSE(DevicePathToDriveLetterPath(prefix_of_real_device_path,
463 prefix_of_real_device_path, 462 &win32_path));
464 &win32_path));
465 463
466 ASSERT_FALSE(file_util::DevicePathToDriveLetterPath( 464 ASSERT_FALSE(DevicePathToDriveLetterPath(
467 prefix_of_real_device_path.Append(kRelativePath), 465 prefix_of_real_device_path.Append(kRelativePath),
468 &win32_path)); 466 &win32_path));
469 467
470 // Deform the real path so that it is invalid by adding some characters. For 468 // Deform the real path so that it is invalid by adding some characters. For
471 // example, if C: maps to \Device\HardDiskVolume8, then we simulate a 469 // example, if C: maps to \Device\HardDiskVolume8, then we simulate a
472 // request for the drive letter whose native path is 470 // request for the drive letter whose native path is
473 // \Device\HardDiskVolume812345 . We assume such a device does not exist, 471 // \Device\HardDiskVolume812345 . We assume such a device does not exist,
474 // because drives are numbered in order and mounting 112345 hard disks will 472 // because drives are numbered in order and mounting 112345 hard disks will
475 // never happen. 473 // never happen.
476 const FilePath::StringType kExtraChars = FPL("12345"); 474 const FilePath::StringType kExtraChars = FPL("12345");
477 475
478 FilePath real_device_path_plus_numbers( 476 FilePath real_device_path_plus_numbers(
479 actual_device_path.value() + kExtraChars); 477 actual_device_path.value() + kExtraChars);
480 478
481 ASSERT_FALSE(file_util::DevicePathToDriveLetterPath( 479 ASSERT_FALSE(DevicePathToDriveLetterPath(
482 real_device_path_plus_numbers, 480 real_device_path_plus_numbers,
483 &win32_path)); 481 &win32_path));
484 482
485 ASSERT_FALSE(file_util::DevicePathToDriveLetterPath( 483 ASSERT_FALSE(DevicePathToDriveLetterPath(
486 real_device_path_plus_numbers.Append(kRelativePath), 484 real_device_path_plus_numbers.Append(kRelativePath),
487 &win32_path)); 485 &win32_path));
488 } 486 }
489 487
490 TEST_F(FileUtilTest, GetPlatformFileInfoForDirectory) { 488 TEST_F(FileUtilTest, GetPlatformFileInfoForDirectory) {
491 FilePath empty_dir = temp_dir_.path().Append(FPL("gpfi_test")); 489 FilePath empty_dir = temp_dir_.path().Append(FPL("gpfi_test"));
492 ASSERT_TRUE(base::CreateDirectory(empty_dir)); 490 ASSERT_TRUE(base::CreateDirectory(empty_dir));
493 win::ScopedHandle dir( 491 win::ScopedHandle dir(
494 ::CreateFile(empty_dir.value().c_str(), 492 ::CreateFile(empty_dir.value().c_str(),
495 FILE_ALL_ACCESS, 493 FILE_ALL_ACCESS,
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 // Create a non-existent file path. 687 // Create a non-existent file path.
690 FilePath non_existent = temp_dir_.path().Append(FPL("Test DeleteFile 3.txt")); 688 FilePath non_existent = temp_dir_.path().Append(FPL("Test DeleteFile 3.txt"));
691 EXPECT_FALSE(PathExists(non_existent)); 689 EXPECT_FALSE(PathExists(non_existent));
692 690
693 // Create a symlink to the non-existent file. 691 // Create a symlink to the non-existent file.
694 FilePath file_link = temp_dir_.path().Append("file_link_3"); 692 FilePath file_link = temp_dir_.path().Append("file_link_3");
695 ASSERT_TRUE(CreateSymbolicLink(non_existent, file_link)) 693 ASSERT_TRUE(CreateSymbolicLink(non_existent, file_link))
696 << "Failed to create symlink."; 694 << "Failed to create symlink.";
697 695
698 // Make sure the symbolic link is exist. 696 // Make sure the symbolic link is exist.
699 EXPECT_TRUE(file_util::IsLink(file_link)); 697 EXPECT_TRUE(IsLink(file_link));
700 EXPECT_FALSE(PathExists(file_link)); 698 EXPECT_FALSE(PathExists(file_link));
701 699
702 // Delete the symbolic link. 700 // Delete the symbolic link.
703 EXPECT_TRUE(DeleteFile(file_link, false)); 701 EXPECT_TRUE(DeleteFile(file_link, false));
704 702
705 // Make sure the symbolic link is deleted. 703 // Make sure the symbolic link is deleted.
706 EXPECT_FALSE(file_util::IsLink(file_link)); 704 EXPECT_FALSE(IsLink(file_link));
707 } 705 }
708 706
709 TEST_F(FileUtilTest, ChangeFilePermissionsAndRead) { 707 TEST_F(FileUtilTest, ChangeFilePermissionsAndRead) {
710 // Create a file path. 708 // Create a file path.
711 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt")); 709 FilePath file_name = temp_dir_.path().Append(FPL("Test Readable File.txt"));
712 EXPECT_FALSE(PathExists(file_name)); 710 EXPECT_FALSE(PathExists(file_name));
713 711
714 const std::string kData("hello"); 712 const std::string kData("hello");
715 713
716 int buffer_size = kData.length(); 714 int buffer_size = kData.length();
(...skipping 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1908 &access_time)); 1906 &access_time));
1909 1907
1910 Time modification_time; 1908 Time modification_time;
1911 // Note that this timestamp is divisible by two (seconds) - FAT stores 1909 // Note that this timestamp is divisible by two (seconds) - FAT stores
1912 // modification times with 2s resolution. 1910 // modification times with 2s resolution.
1913 ASSERT_TRUE(Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT", 1911 ASSERT_TRUE(Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT",
1914 &modification_time)); 1912 &modification_time));
1915 1913
1916 ASSERT_TRUE(file_util::TouchFile(foobar, access_time, modification_time)); 1914 ASSERT_TRUE(file_util::TouchFile(foobar, access_time, modification_time));
1917 PlatformFileInfo file_info; 1915 PlatformFileInfo file_info;
1918 ASSERT_TRUE(file_util::GetFileInfo(foobar, &file_info)); 1916 ASSERT_TRUE(GetFileInfo(foobar, &file_info));
1919 EXPECT_EQ(file_info.last_accessed.ToInternalValue(), 1917 EXPECT_EQ(file_info.last_accessed.ToInternalValue(),
1920 access_time.ToInternalValue()); 1918 access_time.ToInternalValue());
1921 EXPECT_EQ(file_info.last_modified.ToInternalValue(), 1919 EXPECT_EQ(file_info.last_modified.ToInternalValue(),
1922 modification_time.ToInternalValue()); 1920 modification_time.ToInternalValue());
1923 } 1921 }
1924 1922
1925 TEST_F(FileUtilTest, IsDirectoryEmpty) { 1923 TEST_F(FileUtilTest, IsDirectoryEmpty) {
1926 FilePath empty_dir = temp_dir_.path().Append(FILE_PATH_LITERAL("EmptyDir")); 1924 FilePath empty_dir = temp_dir_.path().Append(FILE_PATH_LITERAL("EmptyDir"));
1927 1925
1928 ASSERT_FALSE(PathExists(empty_dir)); 1926 ASSERT_FALSE(PathExists(empty_dir));
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
2349 int fd = OpenContentUriForRead(path); 2347 int fd = OpenContentUriForRead(path);
2350 EXPECT_EQ(-1, fd); 2348 EXPECT_EQ(-1, fd);
2351 } 2349 }
2352 #endif 2350 #endif
2353 2351
2354 #endif // defined(OS_POSIX) 2352 #endif // defined(OS_POSIX)
2355 2353
2356 } // namespace 2354 } // namespace
2357 2355
2358 } // namespace base 2356 } // namespace base
OLDNEW
« no previous file with comments | « base/file_util_posix.cc ('k') | base/file_util_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698