summaryrefslogtreecommitdiff
path: root/test_utils_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test_utils_unittest.cc')
-rw-r--r--test_utils_unittest.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/test_utils_unittest.cc b/test_utils_unittest.cc
new file mode 100644
index 00000000..ad41814d
--- /dev/null
+++ b/test_utils_unittest.cc
@@ -0,0 +1,41 @@
+// Copyright 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "update_engine/test_utils.h"
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+using std::string;
+
+namespace chromeos_update_engine {
+namespace test_utils {
+
+class TestUtilsTest : public ::testing::Test { };
+
+TEST(UtilsTest, RecursiveUnlinkDirTest) {
+ string first_dir_name;
+ ASSERT_TRUE(utils::MakeTempDirectory("RecursiveUnlinkDirTest-a-XXXXXX",
+ &first_dir_name));
+ ASSERT_EQ(0, Chmod(first_dir_name, 0755));
+ string second_dir_name;
+ ASSERT_TRUE(utils::MakeTempDirectory("RecursiveUnlinkDirTest-b-XXXXXX",
+ &second_dir_name));
+ ASSERT_EQ(0, Chmod(second_dir_name, 0755));
+
+ EXPECT_EQ(0, Symlink(string("../") + first_dir_name,
+ second_dir_name + "/link"));
+ EXPECT_EQ(0, System(string("echo hi > ") + second_dir_name + "/file"));
+ EXPECT_EQ(0, Mkdir(second_dir_name + "/dir", 0755));
+ EXPECT_EQ(0, System(string("echo ok > ") + second_dir_name + "/dir/subfile"));
+ EXPECT_TRUE(test_utils::RecursiveUnlinkDir(second_dir_name));
+ EXPECT_TRUE(utils::FileExists(first_dir_name.c_str()));
+ EXPECT_EQ(0, System(string("rm -rf ") + first_dir_name));
+ EXPECT_FALSE(utils::FileExists(second_dir_name.c_str()));
+ EXPECT_TRUE(test_utils::RecursiveUnlinkDir("/something/that/doesnt/exist"));
+}
+
+} // namespace test_utils
+} // namespace chromeos_update_engine