blob: 743a678bfb4263867e89fc5fadaab3e8bdaf39f5 [file] [log] [blame] [edit]
// 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.
#ifndef RUNTESTS_UTILS_FUCHSIA_RUN_TEST_H_
#define RUNTESTS_UTILS_FUCHSIA_RUN_TEST_H_
#include <stdio.h>
#include <memory>
#include <fbl/string.h>
#include <runtests-utils/runtests-utils.h>
namespace runtests {
struct ComponentInfo {
fbl::String component_url;
fbl::String manifest_path;
};
// If tests are in this path, they can run as a component if corresponding cmx
// file is present.
//
// https://fuchsia.dev/fuchsia-src/concepts/storage/package_metadata#component_manifest
constexpr char kPkgPrefix[] = "/pkgfs/packages/";
// If test is a component, this function will find the appropriate component executor and modify
// launch arguments.
// Returns:
// |true|: if test is not a component, or if test is a component and it can find the correct
// component executor.
// |false|: if setup fails.
bool SetUpForTestComponent(const char* test_path, fbl::String* out_component_executor);
// Invokes a Fuchsia test binary and writes its output to a file.
//
// |argv| is a null-terminated array of argument strings passed to the test
// program.
// |output_dir| is the name of a directory where debug data
// will be written. If nullptr, no debug data will be collected.
// |output_filename| is the name of the file to which the test binary's output
// will be written. May be nullptr, in which case the output will not be
// redirected.
// |test_name| is used to populate Result properly and in log messages.
// |timeout_millis| is a number of milliseconds to wait for the test. If 0,
// will wait indefinitely.
std::unique_ptr<Result> FuchsiaRunTest(const char* argv[], const char* output_dir,
const char* output_filename, const char* test_name,
uint64_t timeout_millis);
} // namespace runtests
#endif // RUNTESTS_UTILS_FUCHSIA_RUN_TEST_H_