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

Side by Side Diff: chromeos/process_test.cc

Issue 6865041: libchromeos: Support setting uid/gid of child processes in process.h (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/common.git@master
Patch Set: improve comments Created 9 years, 8 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 | « chromeos/process_mock.h ('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) 2011 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium OS 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 <chromeos/process.h> 5 #include <chromeos/process.h>
6 #include <chromeos/process_mock.h> 6 #include <chromeos/process_mock.h>
7 #include <chromeos/test_helpers.h> 7 #include <chromeos/test_helpers.h>
8 8
9 #include <base/file_util.h> 9 #include <base/file_util.h>
10 #include <gtest/gtest.h> 10 #include <gtest/gtest.h>
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 TEST_F(ProcessTest, NonZeroReturnValue) { 85 TEST_F(ProcessTest, NonZeroReturnValue) {
86 process_.AddArg(kBinFalse); 86 process_.AddArg(kBinFalse);
87 EXPECT_EQ(1, process_.Run()); 87 EXPECT_EQ(1, process_.Run());
88 ExpectFileEquals("", output_file_.c_str()); 88 ExpectFileEquals("", output_file_.c_str());
89 EXPECT_EQ("", GetLog()); 89 EXPECT_EQ("", GetLog());
90 } 90 }
91 91
92 TEST_F(ProcessTest, BadOutputFile) { 92 TEST_F(ProcessTest, BadOutputFile) {
93 process_.AddArg(kBinEcho); 93 process_.AddArg(kBinEcho);
94 process_.RedirectOutput("/bad/path"); 94 process_.RedirectOutput("/bad/path");
95 EXPECT_EQ(127, process_.Run()); 95 EXPECT_EQ(Process::kErrorExitStatus, process_.Run());
96 } 96 }
97 97
98 TEST_F(ProcessTest, ExistingOutputFile) { 98 TEST_F(ProcessTest, ExistingOutputFile) {
99 process_.AddArg(kBinEcho); 99 process_.AddArg(kBinEcho);
100 process_.AddArg("hello world"); 100 process_.AddArg("hello world");
101 EXPECT_FALSE(file_util::PathExists(FilePath(output_file_))); 101 EXPECT_FALSE(file_util::PathExists(FilePath(output_file_)));
102 EXPECT_EQ(0, process_.Run()); 102 EXPECT_EQ(0, process_.Run());
103 EXPECT_TRUE(file_util::PathExists(FilePath(output_file_))); 103 EXPECT_TRUE(file_util::PathExists(FilePath(output_file_)));
104 EXPECT_EQ(127, process_.Run()); 104 EXPECT_EQ(Process::kErrorExitStatus, process_.Run());
105 } 105 }
106 106
107 TEST_F(ProcessTest, BadExecutable) { 107 TEST_F(ProcessTest, BadExecutable) {
108 process_.AddArg("false"); 108 process_.AddArg("false");
109 EXPECT_EQ(127, process_.Run()); 109 EXPECT_EQ(Process::kErrorExitStatus, process_.Run());
110 } 110 }
111 111
112 void ProcessTest::CheckStderrCaptured() { 112 void ProcessTest::CheckStderrCaptured() {
113 std::string contents; 113 std::string contents;
114 process_.AddArg(kBinCp); 114 process_.AddArg(kBinCp);
115 EXPECT_EQ(1, process_.Run()); 115 EXPECT_EQ(1, process_.Run());
116 EXPECT_TRUE(file_util::ReadFileToString(FilePath(output_file_), 116 EXPECT_TRUE(file_util::ReadFileToString(FilePath(output_file_),
117 &contents)); 117 &contents));
118 EXPECT_NE(std::string::npos, contents.find("missing file operand")); 118 EXPECT_NE(std::string::npos, contents.find("missing file operand"));
119 EXPECT_EQ("", GetLog()); 119 EXPECT_EQ("", GetLog());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 EXPECT_TRUE(process_.Start()); 189 EXPECT_TRUE(process_.Start());
190 int write_fd = process_.GetPipe(STDIN_FILENO); 190 int write_fd = process_.GetPipe(STDIN_FILENO);
191 EXPECT_EQ(-1, process_.GetPipe(STDERR_FILENO)); 191 EXPECT_EQ(-1, process_.GetPipe(STDERR_FILENO));
192 EXPECT_TRUE(file_util::WriteFile(GetFdPath(write_fd), kMessage, 192 EXPECT_TRUE(file_util::WriteFile(GetFdPath(write_fd), kMessage,
193 strlen(kMessage))); 193 strlen(kMessage)));
194 close(write_fd); 194 close(write_fd);
195 EXPECT_EQ(0, process_.Wait()); 195 EXPECT_EQ(0, process_.Wait());
196 ExpectFileEquals(kMessage, output_file_.c_str()); 196 ExpectFileEquals(kMessage, output_file_.c_str());
197 } 197 }
198 198
199 TEST_F(ProcessTest, WithSameUid) {
200 gid_t uid = geteuid();
201 process_.AddArg(kBinEcho);
202 process_.SetUid(uid);
203 EXPECT_EQ(0, process_.Run());
204 }
205
206 TEST_F(ProcessTest, WithSameGid) {
207 gid_t gid = getegid();
208 process_.AddArg(kBinEcho);
209 process_.SetGid(gid);
210 EXPECT_EQ(0, process_.Run());
211 }
212
213 TEST_F(ProcessTest, WithIllegalUid) {
214 ASSERT_NE(0, geteuid());
215 process_.AddArg(kBinEcho);
216 process_.SetUid(0);
217 EXPECT_EQ(Process::kErrorExitStatus, process_.Run());
218 std::string contents;
219 EXPECT_TRUE(file_util::ReadFileToString(FilePath(output_file_),
220 &contents));
221 EXPECT_NE(std::string::npos,
222 contents.find("Unable to set UID to 0: 1\n"));
223 }
224
225 TEST_F(ProcessTest, WithIllegalGid) {
226 ASSERT_NE(0, getegid());
227 process_.AddArg(kBinEcho);
228 process_.SetGid(0);
229 EXPECT_EQ(Process::kErrorExitStatus, process_.Run());
230 std::string contents;
231 EXPECT_TRUE(file_util::ReadFileToString(FilePath(output_file_),
232 &contents));
233 EXPECT_NE(std::string::npos,
234 contents.find("Unable to set GID to 0: 1\n"));
235 }
236
199 TEST_F(ProcessTest, NoParams) { 237 TEST_F(ProcessTest, NoParams) {
200 EXPECT_EQ(127, process_.Run()); 238 EXPECT_EQ(Process::kErrorExitStatus, process_.Run());
201 } 239 }
202 240
203 TEST_F(ProcessTest, SegFaultHandling) { 241 TEST_F(ProcessTest, SegFaultHandling) {
204 process_.AddArg(kBinBash); 242 process_.AddArg(kBinBash);
205 process_.AddArg("-c"); 243 process_.AddArg("-c");
206 process_.AddArg("kill -SEGV $$"); 244 process_.AddArg("kill -SEGV $$");
207 EXPECT_EQ(-1, process_.Run()); 245 EXPECT_EQ(-1, process_.Run());
208 EXPECT_TRUE(FindLog("did not exit normally: 11")); 246 EXPECT_TRUE(FindLog("did not exit normally: 11"));
209 } 247 }
210 248
(...skipping 25 matching lines...) Expand all
236 EXPECT_TRUE(process_.Kill(SIGTERM, 1)); 274 EXPECT_TRUE(process_.Kill(SIGTERM, 1));
237 EXPECT_EQ(0, process_.pid()); 275 EXPECT_EQ(0, process_.pid());
238 } 276 }
239 277
240 TEST_F(ProcessTest, Reset) { 278 TEST_F(ProcessTest, Reset) {
241 process_.AddArg(kBinFalse); 279 process_.AddArg(kBinFalse);
242 process_.Reset(0); 280 process_.Reset(0);
243 process_.AddArg(kBinEcho); 281 process_.AddArg(kBinEcho);
244 EXPECT_EQ(0, process_.Run()); 282 EXPECT_EQ(0, process_.Run());
245 } 283 }
OLDNEW
« no previous file with comments | « chromeos/process_mock.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698