Austin Schuh | e89fa2d | 2019-08-14 20:24:23 -0700 | [diff] [blame] | 1 | |
| 2 | #ifndef FUZZER_TEST_INIT_H_ |
| 3 | #define FUZZER_TEST_INIT_H_ |
| 4 | |
| 5 | #include "fuzzer_assert.h" |
| 6 | #include "test_assert.h" |
| 7 | |
Austin Schuh | e89fa2d | 2019-08-14 20:24:23 -0700 | [diff] [blame] | 8 | // Utility for test run. |
| 9 | struct OneTimeTestInit { |
| 10 | // Declare trap for the Flatbuffers test engine. |
| 11 | // This hook terminate program both in Debug and Release. |
| 12 | static bool TestFailListener(const char *expval, const char *val, |
| 13 | const char *exp, const char *file, int line, |
| 14 | const char *func = 0) { |
| 15 | (void)expval; |
| 16 | (void)val; |
| 17 | (void)exp; |
| 18 | (void)file; |
| 19 | (void)line; |
| 20 | (void)func; |
| 21 | // FLATBUFFERS_ASSERT redefined to be fully independent of the Flatbuffers |
| 22 | // library implementation (see test_assert.h for details). |
| 23 | fuzzer_assert_impl(false); // terminate |
| 24 | return false; |
| 25 | } |
| 26 | |
| 27 | OneTimeTestInit() : has_locale_(false) { |
| 28 | // Fuzzer test should be independent of the test engine implementation. |
| 29 | // This hook will terminate test if TEST_EQ/TEST_ASSERT asserted. |
| 30 | InitTestEngine(OneTimeTestInit::TestFailListener); |
| 31 | |
| 32 | // Read a locale for the test. |
| 33 | if (flatbuffers::ReadEnvironmentVariable("FLATBUFFERS_TEST_LOCALE", |
| 34 | &test_locale_)) { |
| 35 | TEST_OUTPUT_LINE("The environment variable FLATBUFFERS_TEST_LOCALE=%s", |
| 36 | test_locale_.c_str()); |
| 37 | test_locale_ = flatbuffers::RemoveStringQuotes(test_locale_); |
| 38 | has_locale_ = true; |
| 39 | } |
| 40 | } |
| 41 | |
| 42 | static const char *test_locale() { |
| 43 | return one_time_init_.has_locale_ ? nullptr |
| 44 | : one_time_init_.test_locale_.c_str(); |
| 45 | } |
| 46 | |
| 47 | bool has_locale_; |
| 48 | std::string test_locale_; |
| 49 | static OneTimeTestInit one_time_init_; |
| 50 | }; |
| 51 | |
Austin Schuh | 272c613 | 2020-11-14 16:37:52 -0800 | [diff] [blame] | 52 | #endif // !FUZZER_TEST_INIT_H_ |