AU/unittest: FilesystemIteratorTest uses uniquely named temp files/directories
This should allow tests to be run in parallel. Also, unified directory
creation/removal logic across tests.
BUG=chromium:236465
TEST=Uniquely named test image files/directories used
Change-Id: Ide4035f206beeb8294cba42d762243ba502b23f7
Reviewed-on: https://gerrit.chromium.org/gerrit/60647
Commit-Queue: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/filesystem_iterator_unittest.cc b/filesystem_iterator_unittest.cc
index aed16e5..fddde01 100644
--- a/filesystem_iterator_unittest.cc
+++ b/filesystem_iterator_unittest.cc
@@ -21,29 +21,36 @@
namespace chromeos_update_engine {
-namespace {
-const char* TestDir() { return "./FilesystemIteratorTest-dir"; }
-} // namespace {}
-
class FilesystemIteratorTest : public ::testing::Test {
protected:
virtual void SetUp() {
- LOG(INFO) << "SetUp() mkdir";
- EXPECT_EQ(0, System(StringPrintf("rm -rf %s", TestDir())));
- EXPECT_EQ(0, System(StringPrintf("mkdir -p %s", TestDir())));
+ ASSERT_TRUE(utils::MakeTempDirectory("FilesystemIteratorTest-XXXXXX",
+ &test_dir_));
+ LOG(INFO) << "SetUp() mkdir " << test_dir_;
}
+
virtual void TearDown() {
- LOG(INFO) << "TearDown() rmdir";
+ LOG(INFO) << "TearDown() rmdir " << test_dir_;
EXPECT_EQ(0, System(StringPrintf("rm -rf %s", TestDir())));
}
+
+ const char* TestDir() {
+ return test_dir_.c_str();
+ }
+
+ private:
+ string test_dir_;
};
TEST_F(FilesystemIteratorTest, RunAsRootSuccessTest) {
ASSERT_EQ(0, getuid());
- string first_image("FilesystemIteratorTest.image1");
- string sub_image("FilesystemIteratorTest.image2");
+ string first_image;
+ ASSERT_TRUE(utils::MakeTempFile("FilesystemIteratorTest.image1-XXXXXX",
+ &first_image, NULL));
+ string sub_image;
+ ASSERT_TRUE(utils::MakeTempFile("FilesystemIteratorTest.image2-XXXXXX",
+ &sub_image, NULL));
- ASSERT_EQ(0, System(string("rm -f ") + first_image + " " + sub_image));
vector<string> expected_paths_vector;
CreateExtImageAtPath(first_image, &expected_paths_vector);
CreateExtImageAtPath(sub_image, NULL);
@@ -84,11 +91,14 @@
}
TEST_F(FilesystemIteratorTest, DeleteWhileTraverseTest) {
- ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest", 0755));
- ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/a", 0755));
- ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/a/b", 0755));
- ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/b", 0755));
- ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/c", 0755));
+ const string dir_name = TestDir();
+ ASSERT_EQ(0, chmod(dir_name.c_str(), 0755));
+ const string sub_dir_name(dir_name + "/a");
+ ASSERT_EQ(0, mkdir(sub_dir_name.c_str(), 0755));
+ const string sub_sub_dir_name(sub_dir_name + "/b");
+ ASSERT_EQ(0, mkdir(sub_sub_dir_name.c_str(), 0755));
+ ASSERT_EQ(0, mkdir((dir_name + "/b").c_str(), 0755));
+ ASSERT_EQ(0, mkdir((dir_name + "/c").c_str(), 0755));
string expected_paths_arr[] = {
"",
@@ -100,7 +110,7 @@
expected_paths_arr +
arraysize(expected_paths_arr));
- FilesystemIterator iter("DeleteWhileTraverseTest", set<string>());
+ FilesystemIterator iter(dir_name, set<string>());
while (!iter.IsEnd()) {
string path = iter.GetPartialPath();
EXPECT_TRUE(expected_paths.find(path) != expected_paths.end());
@@ -108,14 +118,13 @@
expected_paths.erase(path);
}
if (path == "/a") {
- EXPECT_EQ(0, rmdir("DeleteWhileTraverseTest/a/b"));
- EXPECT_EQ(0, rmdir("DeleteWhileTraverseTest/a"));
+ EXPECT_EQ(0, rmdir(sub_sub_dir_name.c_str()));
+ EXPECT_EQ(0, rmdir(sub_dir_name.c_str()));
}
iter.Increment();
}
EXPECT_FALSE(iter.IsErr());
EXPECT_TRUE(expected_paths.empty());
- EXPECT_EQ(0, system("rm -rf DeleteWhileTraverseTest"));
}
} // namespace chromeos_update_engine