12345678910111213141516171819202122232425262728293031323334353637383940 |
- // Copyright 2022 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "base/check_is_test.h"
- #include "base/check.h"
- #include "base/logging.h"
- namespace {
- bool g_this_is_a_test = false;
- }
- namespace base::internal {
- void check_is_test_impl() {
- CHECK(g_this_is_a_test);
- }
- } // namespace base::internal
- namespace base::test {
- // base/test/allow_check_is_test_to_be_called.h declares
- // `AllowCheckIsTestToBeCalled`, but is only allowed to be included in test
- // code.
- // We therefore have to also mark the symbol as exported here.
- BASE_EXPORT void AllowCheckIsTestToBeCalled() {
- LOG(WARNING) << "Allowing special test code paths";
- // This CHECK ensures that `AllowCheckIsTestToBeCalled` is called just once.
- // Since it is called in `base::TestSuite`, this should effectivly prevent
- // calls to AllowCheckIsTestToBeCalled in production code (assuming that code
- // has unit test coverage).
- //
- // This is just in case someone ignores the fact that this function in the
- // `base::test` namespace and ends on "ForTesting".
- CHECK(!g_this_is_a_test)
- << "AllowCheckIsTestToBeCalled must not be called more than once";
- g_this_is_a_test = true;
- }
- } // namespace base::test
|