| // Copyright 2018 The Fuchsia 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 "src/lib/process/process_builder.h" | |
| #include <lib/component/incoming/cpp/protocol.h> | |
| #include <gtest/gtest.h> | |
| namespace process { | |
| namespace { | |
| constexpr char kShell[] = "/pkg/bin/sh"; | |
| TEST(ProcessBuilder, Control) { | |
| fidl::ClientEnd<fuchsia_io::Directory> svc_dir = *component::OpenServiceRoot(); | |
| ProcessBuilder builder(svc_dir); | |
| ASSERT_EQ(ZX_OK, builder.LoadPath(kShell)); | |
| ASSERT_EQ(ZX_OK, builder.AddArgs({kShell})); | |
| ASSERT_EQ(ZX_OK, builder.CloneAll()); | |
| ASSERT_EQ(ZX_OK, builder.Prepare(nullptr)); | |
| EXPECT_TRUE(builder.data().process().is_valid()); | |
| EXPECT_TRUE(builder.data().root_vmar().is_valid()); | |
| EXPECT_GT(builder.data().stack(), 0u); | |
| EXPECT_GT(builder.data().entry(), 0u); | |
| EXPECT_GT(builder.data().vdso_base(), 0u); | |
| EXPECT_GT(builder.data().base(), 0u); | |
| zx::process process; | |
| ASSERT_EQ(ZX_OK, builder.Start(&process)); | |
| process.kill(); | |
| } | |
| } // namespace | |
| } // namespace process |