aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice de Gans-Riberi <fdegans@chromium.org>2018-05-30 18:16:44 -0700
committerFabrice de Gans-Riberi <fdegans@chromium.org>2018-05-30 18:17:35 -0700
commit0a6edf3ca757a742f2adeb4623f625c6118e0fd7 (patch)
treed263bd2b584f956c6eab7bb47362b8f20e0e9f06
parent4e4df226fc197c0dda6e37f5c8c3845ca1e73a49 (diff)
downloadgoogletest-0a6edf3ca757a742f2adeb4623f625c6118e0fd7.tar.gz
googletest-0a6edf3ca757a742f2adeb4623f625c6118e0fd7.tar.bz2
googletest-0a6edf3ca757a742f2adeb4623f625c6118e0fd7.zip
Remvoe launchpad dependency from Fuchsia.
-rw-r--r--googletest/src/gtest-death-test.cc49
1 files changed, 26 insertions, 23 deletions
diff --git a/googletest/src/gtest-death-test.cc b/googletest/src/gtest-death-test.cc
index b3979924..03adccef 100644
--- a/googletest/src/gtest-death-test.cc
+++ b/googletest/src/gtest-death-test.cc
@@ -64,7 +64,8 @@
# if GTEST_OS_FUCHSIA
# include <fdio/io.h>
-# include <launchpad/launchpad.h>
+# include <fdio/spawn.h>
+# include <zircon/processargs.h>
# include <zircon/syscalls.h>
# endif // GTEST_OS_FUCHSIA
@@ -926,29 +927,31 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
args.AddArgument(filter_flag.c_str());
args.AddArgument(internal_flag.c_str());
- // Build the child process launcher.
- zx_status_t status;
- launchpad_t* lp;
- status = launchpad_create(ZX_HANDLE_INVALID, args.Argv()[0], &lp);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
// Build the pipe for communication with the child.
- int read_fd;
- status = launchpad_add_pipe(lp, &read_fd, kFuchsiaReadPipeFd);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
- set_read_fd(read_fd);
-
- // Set the command line arguments.
- status = launchpad_load_from_file(lp, args.Argv()[0]);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
- status = launchpad_set_args(lp, args.size(), args.Argv());
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
- // Clone all the things (environment, stdio, namespace, ...).
- launchpad_clone(lp, LP_CLONE_ALL);
-
- // Launch the child process.
- status = launchpad_go(lp, &child_process_, nullptr);
+ zx_status_t status;
+ zx_handle_t child_pipe_handle;
+ uint32_t type;
+ status = fdio_pipe_half(&child_pipe_handle, &type);
+ GTEST_DEATH_TEST_CHECK_(status >= 0);
+ set_read_fd(status);
+
+ // Set the pipe handle for the child.
+ fdio_spawn_action_t add_handle_action = {
+ .action = FDIO_SPAWN_ACTION_ADD_HANDLE,
+ .h = {
+ .id = PA_HND(type, kFuchsiaReadPipeFd),
+ .handle = child_pipe_handle
+ }
+ };
+
+ // Spawn the child process.
+ char err_msg[255];
+ status = fdio_spawn_etc(ZX_HANDLE_INVALID, FDIO_SPAWN_CLONE_ALL,
+ args.Argv()[0], args.Argv(), nullptr, 1,
+ &add_handle_action, &child_process_, err_msg);
+ if (status != ZX_OK) {
+ GTEST_LOG_(ERROR) << err_msg;
+ }
GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
set_spawned(true);