summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_operation_unittest.cc
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-06 21:44:35 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-06 21:44:35 +0000
commitc27a5ed3f25971f028dd1baedd73efb59497ceeb (patch)
tree178dbc2db3eec96e696277ffff66effe3281e502 /webkit/fileapi/file_system_operation_unittest.cc
parent5e0eb3c58f459bdf9b42d8666a7fef4f475224c5 (diff)
downloadchromium_src-c27a5ed3f25971f028dd1baedd73efb59497ceeb.zip
chromium_src-c27a5ed3f25971f028dd1baedd73efb59497ceeb.tar.gz
chromium_src-c27a5ed3f25971f028dd1baedd73efb59497ceeb.tar.bz2
Revert 61613 - possible culprit for valgrind error. (Support removeRecursively and new copy/move)
BUG=none TEST=none Review URL: http://codereview.chromium.org/3576017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61713 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_operation_unittest.cc')
-rw-r--r--webkit/fileapi/file_system_operation_unittest.cc258
1 files changed, 51 insertions, 207 deletions
diff --git a/webkit/fileapi/file_system_operation_unittest.cc b/webkit/fileapi/file_system_operation_unittest.cc
index 9b07c03..8a02ade 100644
--- a/webkit/fileapi/file_system_operation_unittest.cc
+++ b/webkit/fileapi/file_system_operation_unittest.cc
@@ -89,7 +89,9 @@ class FileSystemOperationTest : public testing::Test {
}
protected:
- // Common temp base for nondestructive uses.
+ // Common temp base for all non-existing file/dir path test cases.
+ // This is in case a dir on test machine exists. It's better to
+ // create temp and then create non-existing file paths under it.
ScopedTempDir base_;
int request_id_;
@@ -110,14 +112,17 @@ TEST_F(FileSystemOperationTest, TestMoveFailureSrcDoesntExist) {
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
-TEST_F(FileSystemOperationTest, TestMoveFailureContainsPath) {
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- FilePath dest_dir_path;
- ASSERT_TRUE(file_util::CreateTemporaryDirInDir(src_dir.path(),
- FILE_PATH_LITERAL("child_dir"),
- &dest_dir_path));
- operation()->Move(src_dir.path(), dest_dir_path);
+// crbug.com/57940
+#if defined(OS_WINDOWS)
+#define MAYBE_TestMoveFailureContainsPath FAILS_TestMoveFailureContainsPath
+#else
+#define MAYBE_TestMoveFailureContainsPath TestMoveFailureContainsPath
+#endif
+
+TEST_F(FileSystemOperationTest, MAYBE_TestMoveFailureContainsPath) {
+ ScopedTempDir dir_under_base;
+ dir_under_base.CreateUniqueTempDirUnderPath(base_.path());
+ operation()->Move(base_.path(), dir_under_base.path());
MessageLoop::current()->RunAllPending();
EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION,
mock_dispatcher_->status());
@@ -126,51 +131,14 @@ TEST_F(FileSystemOperationTest, TestMoveFailureContainsPath) {
TEST_F(FileSystemOperationTest, TestMoveFailureSrcDirExistsDestFile) {
// Src exists and is dir. Dest is a file.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
ScopedTempDir dest_dir;
ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
FilePath dest_file;
file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file);
- operation()->Move(src_dir.path(), dest_file);
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY,
- mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
-}
-
-TEST_F(FileSystemOperationTest, TestMoveFailureSrcFileExistsDestNonEmptyDir) {
- // Src exists and is a directory. Dest is a non-empty directory.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
- FilePath child_file;
- file_util::CreateTemporaryFileInDir(dest_dir.path(), &child_file);
-
- operation()->Move(src_dir.path(), dest_dir.path());
+ operation()->Move(base_.path(), dest_file);
MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
-}
-
-TEST_F(FileSystemOperationTest, TestMoveFailureSrcFileExistsDestDir) {
- // Src exists and is a file. Dest is a directory.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- FilePath src_file;
- file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
-
- operation()->Move(src_file, dest_dir.path());
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE,
- mock_dispatcher_->status());
+ EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
@@ -180,7 +148,7 @@ TEST_F(FileSystemOperationTest, TestMoveFailureDestParentDoesntExist) {
ASSERT_TRUE(src_dir.CreateUniqueTempDir());
FilePath nonexisting_file = base_.path().Append(
FILE_PATH_LITERAL("NonexistingDir")).Append(
- FILE_PATH_LITERAL("NonexistingFile"));
+ FILE_PATH_LITERAL("NonexistingFile"));;
operation()->Move(src_dir.path(), nonexisting_file);
MessageLoop::current()->RunAllPending();
@@ -223,57 +191,6 @@ TEST_F(FileSystemOperationTest, TestMoveSuccessSrcFileAndNew) {
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
-TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirAndOverwrite) {
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
-
- operation()->Move(src_dir.path(), dest_dir.path());
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
- EXPECT_FALSE(file_util::DirectoryExists(src_dir.path()));
-
- // Make sure we've overwritten but not moved the source under the |dest_dir|.
- EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path()));
- EXPECT_FALSE(file_util::DirectoryExists(
- dest_dir.path().Append(src_dir.path().BaseName())));
-}
-
-TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirAndNew) {
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
- ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- FilePath dest_dir_path(dir.path().Append(FILE_PATH_LITERAL("NewDirectory")));
-
- operation()->Move(src_dir.path(), dest_dir_path);
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
- EXPECT_FALSE(file_util::DirectoryExists(src_dir.path()));
- EXPECT_TRUE(file_util::DirectoryExists(dest_dir_path));
-}
-
-TEST_F(FileSystemOperationTest, TestMoveSuccessSrcDirRecursive) {
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- FilePath child_file;
- file_util::CreateTemporaryFileInDir(src_dir.path(), &child_file);
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
-
- operation()->Move(src_dir.path(), dest_dir.path());
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
- EXPECT_TRUE(FileExists(dest_dir.path().Append(child_file.BaseName())));
-}
-
TEST_F(FileSystemOperationTest, TestCopyFailureSrcDoesntExist) {
FilePath src(base_.path().Append(FILE_PATH_LITERAL("a")));
FilePath dest(base_.path().Append(FILE_PATH_LITERAL("b")));
@@ -283,70 +200,35 @@ TEST_F(FileSystemOperationTest, TestCopyFailureSrcDoesntExist) {
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
-TEST_F(FileSystemOperationTest, TestCopyFailureContainsPath) {
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- FilePath dest_dir_path;
- ASSERT_TRUE(file_util::CreateTemporaryDirInDir(src_dir.path(),
- FILE_PATH_LITERAL("child_dir"),
- &dest_dir_path));
- operation()->Copy(src_dir.path(), dest_dir_path);
+// crbug.com/57940
+#if defined(OS_WINDOWS)
+#define MAYBE_TestCopyFailureContainsPath FAILS_TestCopyFailureContainsPath
+#else
+#define MAYBE_TestCopyFailureContainsPath TestCopyFailureContainsPath
+#endif
+
+TEST_F(FileSystemOperationTest, MAYBE_TestCopyFailureContainsPath) {
+ FilePath file_under_base = base_.path().Append(FILE_PATH_LITERAL("b"));
+ operation()->Copy(base_.path(), file_under_base);
MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION,
- mock_dispatcher_->status());
+ EXPECT_EQ(base::PLATFORM_FILE_ERROR_FAILED, mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
TEST_F(FileSystemOperationTest, TestCopyFailureSrcDirExistsDestFile) {
// Src exists and is dir. Dest is a file.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
+ ScopedTempDir dir;
+ ASSERT_TRUE(dir.CreateUniqueTempDir());
FilePath dest_file;
- file_util::CreateTemporaryFileInDir(dest_dir.path(), &dest_file);
+ file_util::CreateTemporaryFileInDir(dir.path(), &dest_file);
- operation()->Copy(src_dir.path(), dest_file);
+ operation()->Copy(base_.path(), dest_file);
MessageLoop::current()->RunAllPending();
EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY,
mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
-TEST_F(FileSystemOperationTest, TestCopyFailureSrcFileExistsDestNonEmptyDir) {
- // Src exists and is a directory. Dest is a non-empty directory.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
- FilePath child_file;
- file_util::CreateTemporaryFileInDir(dest_dir.path(), &child_file);
-
- operation()->Copy(src_dir.path(), dest_dir.path());
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
-}
-
-TEST_F(FileSystemOperationTest, TestCopyFailureSrcFileExistsDestDir) {
- // Src exists and is a file. Dest is a directory.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- FilePath src_file;
- file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
-
- ScopedTempDir dest_dir;
- ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
-
- operation()->Copy(src_file, dest_dir.path());
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_FILE,
- mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
-}
-
TEST_F(FileSystemOperationTest, TestCopyFailureDestParentDoesntExist) {
// Dest. parent path does not exist.
ScopedTempDir dir;
@@ -399,7 +281,7 @@ TEST_F(FileSystemOperationTest, TestCopySuccessSrcFileAndNew) {
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
-TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndOverwrite) {
+TEST_F(FileSystemOperationTest, TestCopySuccessSrcDir) {
ScopedTempDir src_dir;
ASSERT_TRUE(src_dir.CreateUniqueTempDir());
@@ -410,42 +292,24 @@ TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndOverwrite) {
MessageLoop::current()->RunAllPending();
EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
-
- // Make sure we've overwritten but not copied the source under the |dest_dir|.
- EXPECT_TRUE(file_util::DirectoryExists(dest_dir.path()));
- EXPECT_FALSE(file_util::DirectoryExists(
- dest_dir.path().Append(src_dir.path().BaseName())));
}
-TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirAndNew) {
+TEST_F(FileSystemOperationTest, TestCopyDestParentExistsSuccess) {
ScopedTempDir src_dir;
ASSERT_TRUE(src_dir.CreateUniqueTempDir());
-
- ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- FilePath dest_dir(dir.path().Append(FILE_PATH_LITERAL("NewDirectory")));
-
- operation()->Copy(src_dir.path(), dest_dir);
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
- EXPECT_TRUE(file_util::DirectoryExists(dest_dir));
-}
-
-TEST_F(FileSystemOperationTest, TestCopySuccessSrcDirRecursive) {
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- FilePath child_file;
- file_util::CreateTemporaryFileInDir(src_dir.path(), &child_file);
+ FilePath src_file;
+ file_util::CreateTemporaryFileInDir(src_dir.path(), &src_file);
ScopedTempDir dest_dir;
ASSERT_TRUE(dest_dir.CreateUniqueTempDir());
- operation()->Copy(src_dir.path(), dest_dir.path());
+ operation()->Copy(src_file, dest_dir.path());
MessageLoop::current()->RunAllPending();
EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
- EXPECT_TRUE(FileExists(dest_dir.path().Append(child_file.BaseName())));
+
+ FilePath src_filename(src_file.BaseName());
+ EXPECT_TRUE(FileExists(dest_dir.path().Append(src_filename)));
}
TEST_F(FileSystemOperationTest, TestCreateFileFailure) {
@@ -503,6 +367,7 @@ TEST_F(FileSystemOperationTest,
// Dest. parent path does not exist.
FilePath nonexisting(base_.path().Append(
FILE_PATH_LITERAL("DirDoesntExist")));
+ file_util::EnsureEndsWithSeparator(&nonexisting);
FilePath nonexisting_file = nonexisting.Append(
FILE_PATH_LITERAL("FileDoesntExist"));
operation()->CreateDirectory(nonexisting_file, false, false);
@@ -513,9 +378,7 @@ TEST_F(FileSystemOperationTest,
TEST_F(FileSystemOperationTest, TestCreateDirFailureDirExists) {
// Exclusive and dir existing at path.
- ScopedTempDir src_dir;
- ASSERT_TRUE(src_dir.CreateUniqueTempDir());
- operation()->CreateDirectory(src_dir.path(), true, false);
+ operation()->CreateDirectory(base_.path(), true, false);
MessageLoop::current()->RunAllPending();
EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
@@ -543,8 +406,7 @@ TEST_F(FileSystemOperationTest, TestCreateDirSuccess) {
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
// Dir doesn't exist.
- FilePath nonexisting_dir_path(base_.path().Append(
- FILE_PATH_LITERAL("nonexistingdir")));
+ FilePath nonexisting_dir_path(FILE_PATH_LITERAL("nonexistingdir"));
operation()->CreateDirectory(nonexisting_dir_path, false, false);
MessageLoop::current()->RunAllPending();
EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
@@ -554,7 +416,9 @@ TEST_F(FileSystemOperationTest, TestCreateDirSuccess) {
TEST_F(FileSystemOperationTest, TestCreateDirSuccessExclusive) {
// Dir doesn't exist.
- FilePath nonexisting_dir_path(base_.path().Append(
+ ScopedTempDir dir;
+ ASSERT_TRUE(dir.CreateUniqueTempDir());
+ FilePath nonexisting_dir_path(dir.path().Append(
FILE_PATH_LITERAL("nonexistingdir")));
operation()->CreateDirectory(nonexisting_dir_path, true, false);
@@ -670,13 +534,12 @@ TEST_F(FileSystemOperationTest, TestRemoveFailure) {
FILE_PATH_LITERAL("NonExistingDir")));
file_util::EnsureEndsWithSeparator(&nonexisting);
- operation()->Remove(nonexisting, false /* recursive */);
+ operation()->Remove(nonexisting);
MessageLoop::current()->RunAllPending();
EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
- // It's an error to try to remove a non-empty directory if recursive flag
- // is false.
+ // By spec recursive is always false. Non-empty dir should fail.
// parent_dir
// | |
// child_dir child_file
@@ -689,9 +552,9 @@ TEST_F(FileSystemOperationTest, TestRemoveFailure) {
ASSERT_TRUE(file_util::CreateTemporaryDirInDir(
parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir));
- operation()->Remove(parent_dir.path(), false /* recursive */);
+ operation()->Remove(parent_dir.path());
MessageLoop::current()->RunAllPending();
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY,
+ EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION,
mock_dispatcher_->status());
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
@@ -701,30 +564,11 @@ TEST_F(FileSystemOperationTest, TestRemoveSuccess) {
ASSERT_TRUE(empty_dir.CreateUniqueTempDir());
EXPECT_TRUE(file_util::DirectoryExists(empty_dir.path()));
- operation()->Remove(empty_dir.path(), false /* recursive */);
+ operation()->Remove(empty_dir.path());
MessageLoop::current()->RunAllPending();
EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
EXPECT_FALSE(file_util::DirectoryExists(empty_dir.path()));
EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
-
- // Removing a non-empty directory with recursive flag == true should be ok.
- // parent_dir
- // | |
- // child_dir child_file
- // Verify deleting parent_dir.
- ScopedTempDir parent_dir;
- ASSERT_TRUE(parent_dir.CreateUniqueTempDir());
- FilePath child_file;
- file_util::CreateTemporaryFileInDir(parent_dir.path(), &child_file);
- FilePath child_dir;
- ASSERT_TRUE(file_util::CreateTemporaryDirInDir(
- parent_dir.path(), FILE_PATH_LITERAL("child_dir"), &child_dir));
-
- operation()->Remove(parent_dir.path(), true /* recursive */);
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(kFileOperationSucceeded, mock_dispatcher_->status());
- EXPECT_FALSE(file_util::DirectoryExists(parent_dir.path()));
- EXPECT_EQ(request_id_, mock_dispatcher_->request_id());
}
TEST_F(FileSystemOperationTest, TestTruncate) {