eroman | 02b4fe56 | 2016-03-04 12:15:16 | [diff] [blame] | 1 | // Copyright 2016 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. |
| 4 | |
| 5 | #include "base/at_exit.h" |
Matt Menke | b931f4c | 2017-07-27 23:32:28 | [diff] [blame] | 6 | #include "base/command_line.h" |
eroman | 02b4fe56 | 2016-03-04 12:15:16 | [diff] [blame] | 7 | #include "base/i18n/icu_util.h" |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 8 | #include "base/logging.h" |
Francois Doray | d2162d4 | 2017-07-25 17:51:48 | [diff] [blame] | 9 | #include "base/test/scoped_task_environment.h" |
eroman | 02b4fe56 | 2016-03-04 12:15:16 | [diff] [blame] | 10 | |
| 11 | namespace { |
| 12 | |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 13 | // Set up globals that a number of network tests use. |
eroman | 02b4fe56 | 2016-03-04 12:15:16 | [diff] [blame] | 14 | // |
| 15 | // Note that in general static initializers are not allowed, however this is |
| 16 | // just being used by test code. |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 17 | struct InitGlobals { |
Francois Doray | d2162d4 | 2017-07-25 17:51:48 | [diff] [blame] | 18 | InitGlobals() |
| 19 | : scoped_task_environment( |
| 20 | base::test::ScopedTaskEnvironment::MainThreadType::IO) { |
Matt Menke | b931f4c | 2017-07-27 23:32:28 | [diff] [blame] | 21 | base::CommandLine::Init(0, nullptr); |
| 22 | |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 23 | // Set up ICU. ICU is used internally by GURL, which is used throughout the |
| 24 | // //net code. Initializing ICU is important to prevent fuzztests from |
| 25 | // asserting when handling non-ASCII urls. |
| 26 | CHECK(base::i18n::InitializeICU()); |
mmenke | 0960f75 | 2016-05-02 20:08:34 | [diff] [blame] | 27 | |
mmoroz | a2a76710 | 2017-01-23 18:45:39 | [diff] [blame] | 28 | // Disable noisy logging as per "libFuzzer in Chrome" documentation: |
| 29 | // testing/libfuzzer/getting_started.md#Disable-noisy-error-message-logging. |
| 30 | logging::SetMinLogLevel(logging::LOG_FATAL); |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 31 | } |
| 32 | |
Francois Doray | d2162d4 | 2017-07-25 17:51:48 | [diff] [blame] | 33 | // A number of tests use async code which depends on there being a |
| 34 | // ScopedTaskEnvironment. Setting one up here allows tests to reuse the |
| 35 | // ScopedTaskEnvironment between runs. |
| 36 | base::test::ScopedTaskEnvironment scoped_task_environment; |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 37 | |
eroman | 02b4fe56 | 2016-03-04 12:15:16 | [diff] [blame] | 38 | base::AtExitManager at_exit_manager; |
| 39 | }; |
| 40 | |
mmenke | 9937d6d6 | 2016-04-22 21:59:34 | [diff] [blame] | 41 | InitGlobals* init_globals = new InitGlobals(); |
eroman | 02b4fe56 | 2016-03-04 12:15:16 | [diff] [blame] | 42 | |
| 43 | } // namespace |