1 // Copyright (c) 2012 The Chromium 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.
5 #ifndef CONTENT_PUBLIC_TEST_BROWSER_TEST_H_
6 #define CONTENT_PUBLIC_TEST_BROWSER_TEST_H_
8 // We only want to use InProcessBrowserTest in test targets which properly
9 // isolate each test case by running each test in a separate process.
10 // This way if a test hangs the test launcher can reliably terminate it.
12 // InProcessBrowserTest cannot be run more than once in the same address space
13 // anyway - otherwise the second test crashes.
14 #if defined(HAS_OUT_OF_PROC_TEST_RUNNER)
16 #include "base/compiler_specific.h"
17 #include "testing/gtest/include/gtest/gtest.h"
19 #define IN_PROC_BROWSER_TEST_( \
20 test_case_name, test_name, parent_class, parent_id) \
21 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
22 : public parent_class { \
24 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
27 void RunTestOnMainThread() override; \
30 void TestBody() override {} \
31 static ::testing::TestInfo* const test_info_; \
32 GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_case_name, \
36 ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, \
37 test_name)::test_info_ = \
38 ::testing::internal::MakeAndRegisterTestInfo( \
43 ::testing::internal::CodeLocation(__FILE__, __LINE__), \
45 parent_class::SetUpTestCase, \
46 parent_class::TearDownTestCase, \
47 new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
48 test_case_name, test_name)>); \
49 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
51 #define IN_PROC_BROWSER_TEST_F(test_fixture, test_name)\
52 IN_PROC_BROWSER_TEST_(test_fixture, test_name, test_fixture,\
53 ::testing::internal::GetTypeId<test_fixture>())
55 #define IN_PROC_BROWSER_TEST_P_(test_case_name, test_name) \
56 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
57 : public test_case_name { \
59 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
62 void RunTestOnMainThread() override; \
65 void TestBody() override {} \
66 static int AddToRegistry() { \
67 ::testing::UnitTest::GetInstance() \
68 ->parameterized_test_registry() \
69 .GetTestCasePatternHolder<test_case_name>( \
71 ::testing::internal::CodeLocation(__FILE__, __LINE__)) \
75 new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
76 test_case_name, test_name)>()); \
79 static int gtest_registering_dummy_; \
80 GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_case_name, \
83 int GTEST_TEST_CLASS_NAME_(test_case_name, \
84 test_name)::gtest_registering_dummy_ = \
85 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
86 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
88 // Wrap the real macro with an outer macro to ensure that the parameters are
89 // evaluated (e.g., if |test_name| is prefixed with MAYBE_).
90 #define IN_PROC_BROWSER_TEST_P(test_case_name, test_name) \
91 IN_PROC_BROWSER_TEST_P_(test_case_name, test_name)
93 #endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER)
95 #endif // CONTENT_PUBLIC_TEST_BROWSER_TEST_H_