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

Side by Side Diff: content/browser/download/base_file_unittest.cc

Issue 10702130: Add test for failing rename in BaseFileTest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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
« no previous file with comments | « content/browser/download/base_file.cc ('k') | no next file » | 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 "content/browser/download/base_file.h" 5 #include "content/browser/download/base_file.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/scoped_temp_dir.h" 10 #include "base/scoped_temp_dir.h"
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 EXPECT_TRUE(base_file_->in_progress()); 458 EXPECT_TRUE(base_file_->in_progress());
459 EXPECT_EQ(net::OK, base_file_->Rename(new_path)); 459 EXPECT_EQ(net::OK, base_file_->Rename(new_path));
460 EXPECT_FALSE(file_util::PathExists(initial_path)); 460 EXPECT_FALSE(file_util::PathExists(initial_path));
461 EXPECT_TRUE(file_util::PathExists(new_path)); 461 EXPECT_TRUE(file_util::PathExists(new_path));
462 462
463 ASSERT_EQ(net::OK, AppendDataToFile(kTestData2)); 463 ASSERT_EQ(net::OK, AppendDataToFile(kTestData2));
464 464
465 base_file_->Finish(); 465 base_file_->Finish();
466 } 466 }
467 467
468 // Test that a failed rename reports the correct error.
469 TEST_F(BaseFileTest, RenameWithError) {
470 ASSERT_EQ(net::OK, base_file_->Initialize());
471
472 // TestDir is a subdirectory in |temp_dir_| that we will make read-only so
473 // that the rename will fail.
474 FilePath test_dir(temp_dir_.path().AppendASCII("TestDir"));
475 ASSERT_TRUE(file_util::CreateDirectory(test_dir));
476
477 FilePath new_path(test_dir.AppendASCII("TestFile"));
478 EXPECT_FALSE(file_util::PathExists(new_path));
479
480 {
481 file_util::PermissionRestorer restore_permissions_for(test_dir);
482 ASSERT_TRUE(file_util::MakeFileUnwritable(test_dir));
483 EXPECT_EQ(net::ERR_ACCESS_DENIED, base_file_->Rename(new_path));
Randy Smith (Not in Mondays) 2012/07/11 17:13:17 I'm concerned about this test, for the reasons you
484 }
485
486 base_file_->Finish();
487 }
488
468 // Write data to the file multiple times. 489 // Write data to the file multiple times.
469 TEST_F(BaseFileTest, MultipleWritesWithError) { 490 TEST_F(BaseFileTest, MultipleWritesWithError) {
470 ASSERT_TRUE(OpenMockFileStream()); 491 ASSERT_TRUE(OpenMockFileStream());
471 base_file_.reset(new BaseFile(mock_file_stream_->get_path(), 492 base_file_.reset(new BaseFile(mock_file_stream_->get_path(),
472 GURL(), 493 GURL(),
473 GURL(), 494 GURL(),
474 0, 495 0,
475 false, 496 false,
476 "", 497 "",
477 mock_file_stream_, 498 mock_file_stream_,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 base_file_->Finish(); 554 base_file_->Finish();
534 base_file_->Detach(); 555 base_file_->Detach();
535 expect_file_survives_ = true; 556 expect_file_survives_ = true;
536 } 557 }
537 558
538 // Create a read-only file and attempt to write to it. 559 // Create a read-only file and attempt to write to it.
539 TEST_F(BaseFileTest, ReadonlyBaseFile) { 560 TEST_F(BaseFileTest, ReadonlyBaseFile) {
540 // Create a new file. 561 // Create a new file.
541 FilePath readonly_file_name = CreateTestFile(); 562 FilePath readonly_file_name = CreateTestFile();
542 563
564 // Restore permissions to the file when we are done with this test.
565 file_util::PermissionRestorer restore_permissions(readonly_file_name);
566
543 // Make it read-only. 567 // Make it read-only.
544 EXPECT_TRUE(file_util::MakeFileUnwritable(readonly_file_name)); 568 EXPECT_TRUE(file_util::MakeFileUnwritable(readonly_file_name));
545 569
546 // Try to overwrite it. 570 // Try to overwrite it.
547 base_file_.reset(new BaseFile(readonly_file_name, 571 base_file_.reset(new BaseFile(readonly_file_name,
548 GURL(), 572 GURL(),
549 GURL(), 573 GURL(),
550 0, 574 0,
551 false, 575 false,
552 "", 576 "",
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 base_file_->Finish(); 634 base_file_->Finish();
611 } 635 }
612 636
613 // Test that calculating speed after no delay - should not divide by 0. 637 // Test that calculating speed after no delay - should not divide by 0.
614 TEST_F(BaseFileTest, SpeedAfterNoElapsedTime) { 638 TEST_F(BaseFileTest, SpeedAfterNoElapsedTime) {
615 ASSERT_EQ(net::OK, base_file_->Initialize()); 639 ASSERT_EQ(net::OK, base_file_->Initialize());
616 ASSERT_EQ(net::OK, AppendDataToFile(kTestData1)); 640 ASSERT_EQ(net::OK, AppendDataToFile(kTestData1));
617 ASSERT_EQ(0, CurrentSpeedAtTime(StartTick())); 641 ASSERT_EQ(0, CurrentSpeedAtTime(StartTick()));
618 base_file_->Finish(); 642 base_file_->Finish();
619 } 643 }
OLDNEW
« no previous file with comments | « content/browser/download/base_file.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698