// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_CORE_TEST_MOJO_TEST_BASE_H_ #define MOJO_CORE_TEST_MOJO_TEST_BASE_H_ #include <memory> #include <string> #include <string_view> #include <utility> #include "base/functional/bind.h" #include "base/functional/callback.h" #include "build/blink_buildflags.h" #include "build/build_config.h" #include "mojo/core/test/multiprocess_test_helper.h" #include "mojo/public/c/system/trap.h" #include "mojo/public/c/system/types.h" #include "mojo/public/cpp/system/message_pipe.h" #include "testing/gtest/include/gtest/gtest.h" namespace mojo { namespace core { namespace test { class MojoTestBase : public testing::Test { … }; // Use this to declare the child process's "main()" function for tests using // MojoTestBase and MultiprocessTestHelper. It returns an |int|, which will // will be the process's exit code (but see the comment about // WaitForChildShutdown()). // // The function is defined as a subclass of |test_base| to facilitate shared // code between test clients and to allow clients to spawn children // themselves. // // |pipe_name| will be bound to the MojoHandle of a message pipe connected // to the test process (see RunTestClient* above.) This pipe handle is // automatically closed on test client teardown. #if BUILDFLAG(USE_BLINK) #define DEFINE_TEST_CLIENT_WITH_PIPE(client_name, test_base, pipe_name) … // This is a version of DEFINE_TEST_CLIENT_WITH_PIPE which can be used with // gtest ASSERT/EXPECT macros. #define DEFINE_TEST_CLIENT_TEST_WITH_PIPE(client_name, test_base, pipe_name) … #else // BUILDFLAG(USE_BLINK) #define DEFINE_TEST_CLIENT_WITH_PIPE … #define DEFINE_TEST_CLIENT_TEST_WITH_PIPE … #endif // BUILDFLAG(USE_BLINK) } // namespace test } // namespace core } // namespace mojo #endif // MOJO_CORE_TEST_MOJO_TEST_BASE_H_