1// Copyright 2018 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Test main for runtests-utils test on Fuchsia.
6
7#include "runtests-utils-test-globals.h"
8
9#include <lib/async-loop/cpp/loop.h>
10#include <lib/memfs/memfs.h>
11#include <runtests-utils/fuchsia-run-test.h>
12#include <unittest/unittest.h>
13
14namespace runtests {
15
16// Root directory of memfs installed for duration of test.
17static constexpr char kMemFsRoot[] = "/test-memfs";
18
19const char kScriptShebang[32] = "#!/boot/bin/sh\n\n";
20const RunTestFn PlatformRunTest = &FuchsiaRunTest;
21
22const char* TestFsRoot() {
23    return kMemFsRoot;
24}
25
26} // namespace runtests
27
28int main(int argc, char** argv) {
29    async::Loop loop(&kAsyncLoopConfigNoAttachToThread);
30    if (loop.StartThread() != ZX_OK) {
31        fprintf(stderr, "Error: Cannot initialize local memfs loop\n");
32        return -1;
33    }
34    if (memfs_install_at(loop.dispatcher(), runtests::kMemFsRoot) != ZX_OK) {
35        fprintf(stderr, "Error: Cannot install local memfs\n");
36        return -1;
37    }
38    return unittest_run_all_tests(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE;
39}
40