// 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. // Test main for the runtests-utils test on POSIX systems (e.g., Linux and // MacOS). #include "runtests-utils-test-globals.h" #include #include #include #include #include #include namespace runtests { // Pointer to root of unique subdirectory of TMPDIR or /tmp. static const fbl::String* TmpDirRoot = nullptr; const char kScriptShebang[32] = "#!/bin/sh\n\n"; const RunTestFn PlatformRunTest = &PosixRunTest; const char* TestFsRoot() { if (TmpDirRoot == nullptr) { char test_fs_template[256]; sprintf(test_fs_template, "%s/XXXXXX", getenv("TMPDIR") ? getenv("TMPDIR") : "/tmp"); TmpDirRoot = new fbl::String(mkdtemp(test_fs_template)); } return TmpDirRoot->c_str(); } } // namespace runtests int main(int argc, char** argv) { printf("\nRoot directory of the filesystem used for testing: %s\n", runtests::TestFsRoot()); auto auto_test_fs_clean_up = fbl::MakeAutoCall([&] { // Since all subdirectories created will be scoped, at the end of the // test TestFsRoot() should be empty. remove(runtests::TestFsRoot()); delete runtests::TmpDirRoot; }); return unittest_run_all_tests(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE; }