| // 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 |