blob: d2d6c0c5e9d8ca8cd63a9076cd53fd6493e9b831 [file] [log] [blame]
// 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