// Copyright 2022 The Chromium Authors
// 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_for_testing.h declares
// `AllowCheckIsTestForTesting`, but is only allowed to be included in test
// code. We therefore have to also mark the symbol as exported here.
BASE_EXPORT void AllowCheckIsTestForTesting() {
  // This CHECK ensures that `AllowCheckIsTestForTesting` is called
  // just once. Since it is called in `base::TestSuite`, this should effectivly
  // prevent calls to `AllowCheckIsTestForTesting` 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)
      << "AllowCheckIsTestForTesting must not be called more than once";

  g_this_is_a_test = true;
}

}  // namespace base::test
