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

Unified Diff: subprocess_unittest.cc

Issue 4690006: AU: Execute postinst asynchronously so that the D-Bus service is not blocked. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git@master
Patch Set: address review comments Created 10 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « subprocess.cc ('k') | utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: subprocess_unittest.cc
diff --git a/subprocess_unittest.cc b/subprocess_unittest.cc
index 679f85c12a4b3420b18ad34831477ef8dd77197e..314e0ae28dba1119cc77e0ec694a82e7febb1806 100644
--- a/subprocess_unittest.cc
+++ b/subprocess_unittest.cc
@@ -27,18 +27,35 @@ class SubprocessTest : public ::testing::Test {
namespace {
const int kLocalHttpPort = 8088;
-void Callback(int return_code, void *p) {
+void Callback(int return_code, const string& output, void *p) {
EXPECT_EQ(256, return_code);
GMainLoop* loop = reinterpret_cast<GMainLoop*>(p);
g_main_loop_quit(loop);
}
+void CallbackEcho(int return_code, const string& output, void *p) {
+ EXPECT_EQ(0, return_code);
+ EXPECT_NE(string::npos, output.find("this is stdout"));
+ EXPECT_NE(string::npos, output.find("this is stderr"));
+ GMainLoop* loop = reinterpret_cast<GMainLoop*>(p);
+ g_main_loop_quit(loop);
+}
+
gboolean LaunchFalseInMainLoop(gpointer data) {
vector<string> cmd;
cmd.push_back("/bin/false");
Subprocess::Get().Exec(cmd, Callback, data);
return FALSE;
}
+
+gboolean LaunchEchoInMainLoop(gpointer data) {
+ vector<string> cmd;
+ cmd.push_back("/bin/sh");
+ cmd.push_back("-c");
+ cmd.push_back("echo this is stdout; echo this is stderr > /dev/stderr");
+ Subprocess::Get().Exec(cmd, CallbackEcho, data);
+ return FALSE;
+}
} // namespace {}
TEST(SubprocessTest, SimpleTest) {
@@ -48,8 +65,15 @@ TEST(SubprocessTest, SimpleTest) {
g_main_loop_unref(loop);
}
+TEST(SubprocessTest, EchoTest) {
+ GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
+ g_timeout_add(0, &LaunchEchoInMainLoop, loop);
+ g_main_loop_run(loop);
+ g_main_loop_unref(loop);
+}
+
namespace {
-void CallbackBad(int return_code, void *p) {
+void CallbackBad(int return_code, const string& output, void *p) {
CHECK(false) << "should never be called.";
}
« no previous file with comments | « subprocess.cc ('k') | utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698