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

Side by Side Diff: src/platform/update_engine/filesystem_iterator_unittest.cc

Issue 465067: Missed new files in last commit
Patch Set: Created 11 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
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <sys/stat.h>
6 #include <sys/types.h>
7 #include <unistd.h>
8 #include <set>
9 #include <string>
10 #include <vector>
11 #include "base/string_util.h"
12 #include <gtest/gtest.h>
13 #include "update_engine/filesystem_iterator.h"
14 #include "update_engine/test_utils.h"
15 #include "update_engine/utils.h"
16
17 using std::set;
18 using std::string;
19 using std::vector;
20
21 namespace chromeos_update_engine {
22
23 namespace {
24 const char* TestDir() { return "./FilesystemIteratorTest-dir"; }
25 } // namespace {}
26
27 class FilesystemIteratorTest : public ::testing::Test {
28 protected:
29 virtual void SetUp() {
30 LOG(INFO) << "SetUp() mkdir";
31 EXPECT_EQ(0, System(StringPrintf("rm -rf %s", TestDir())));
32 EXPECT_EQ(0, System(StringPrintf("mkdir -p %s", TestDir())));
33 }
34 virtual void TearDown() {
35 LOG(INFO) << "TearDown() rmdir";
36 EXPECT_EQ(0, System(StringPrintf("rm -rf %s", TestDir())));
37 }
38 };
39
40 TEST_F(FilesystemIteratorTest, RunAsRootSuccessTest) {
41 ASSERT_EQ(0, getuid());
42 string first_image("FilesystemIteratorTest.image1");
43 string sub_image("FilesystemIteratorTest.image2");
44
45 ASSERT_EQ(0, System(string("rm -f ") + first_image + " " + sub_image));
46 vector<string> expected_paths_vector;
47 CreateExtImageAtPath(first_image, &expected_paths_vector);
48 CreateExtImageAtPath(sub_image, NULL);
49 ASSERT_EQ(0, System(string("mount -o loop ") + first_image + " " +
50 kMountPath));
51 ASSERT_EQ(0, System(string("mount -o loop ") + sub_image + " " +
52 kMountPath + "/some_dir/mnt"));
53 for (vector<string>::iterator it = expected_paths_vector.begin();
54 it != expected_paths_vector.end(); ++it)
55 *it = kMountPath + *it;
56 set<string> expected_paths(expected_paths_vector.begin(),
57 expected_paths_vector.end());
58 VerifyAllPaths(kMountPath, expected_paths);
59
60 EXPECT_EQ(0, System(string("umount ") + kMountPath + "/some_dir/mnt"));
61 EXPECT_EQ(0, System(string("umount ") + kMountPath));
62 EXPECT_EQ(0, System(string("rm -f ") + first_image + " " + sub_image));
63 }
64
65 TEST_F(FilesystemIteratorTest, NegativeTest) {
66 {
67 FilesystemIterator iter("/non/existent/path", set<string>());
68 EXPECT_TRUE(iter.IsEnd());
69 EXPECT_TRUE(iter.IsErr());
70 }
71
72 {
73 FilesystemIterator iter(TestDir(), set<string>());
74 EXPECT_FALSE(iter.IsEnd());
75 EXPECT_FALSE(iter.IsErr());
76 // Here I'm deleting the exact directory that iterator is point at,
77 // then incrementing (which normally would descend into that directory).
78 EXPECT_EQ(0, rmdir(TestDir()));
79 iter.Increment();
80 EXPECT_TRUE(iter.IsEnd());
81 EXPECT_FALSE(iter.IsErr());
82 }
83 }
84
85 TEST_F(FilesystemIteratorTest, DeleteWhileTraverseTest) {
86 ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest", 0755));
87 ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/a", 0755));
88 ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/a/b", 0755));
89 ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/b", 0755));
90 ASSERT_EQ(0, mkdir("DeleteWhileTraverseTest/c", 0755));
91
92 string expected_paths_arr[] = {
93 "",
94 "/a",
95 "/b",
96 "/c"
97 };
98 set<string> expected_paths(expected_paths_arr,
99 expected_paths_arr +
100 arraysize(expected_paths_arr));
101
102 FilesystemIterator iter("DeleteWhileTraverseTest", set<string>());
103 while (!iter.IsEnd()) {
104 string path = iter.GetPartialPath();
105 EXPECT_TRUE(expected_paths.find(path) != expected_paths.end());
106 if (expected_paths.find(path) != expected_paths.end()) {
107 expected_paths.erase(path);
108 }
109 if (path == "/a") {
110 EXPECT_EQ(0, rmdir("DeleteWhileTraverseTest/a/b"));
111 EXPECT_EQ(0, rmdir("DeleteWhileTraverseTest/a"));
112 }
113 iter.Increment();
114 }
115 EXPECT_FALSE(iter.IsErr());
116 EXPECT_TRUE(expected_paths.empty());
117 EXPECT_EQ(0, system("rm -rf DeleteWhileTraverseTest"));
118 }
119
120 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « src/platform/update_engine/filesystem_iterator.cc ('k') | src/platform/update_engine/generate_delta_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698