mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-06 14:05:32 +00:00
This change moves all test strings out of test/intltest/messageformat2test.cpp and into JSON files, which are parsed/run by code in a new file, test/intltest/messageformat2test_read_json.cpp . It also removes the file test/intltest/messageformat2test_fromjson.cpp , which contained tests that are now stored in JSON files. To enable this, a new vendored library is added: nlohmann/json . This library is introduced as a dependency for the MF2 tests. The required part of the library is a single header file, which is added under icu4c/source/tools/toolutil/. Also adds a wrapper file for the vendored JSON header file that defines macros that disable exceptions. Co-authored-by: Steven R. Loomis <srl295@gmail.com>
38 lines
1.3 KiB
C
38 lines
1.3 KiB
C
// © 2024 and later: Unicode, Inc. and others.
|
|
// License & terms of use: http://www.unicode.org/copyright.html
|
|
#ifndef __UJSON_H__
|
|
#define __UJSON_H__
|
|
|
|
/*
|
|
Without this code, the output if the JSON library code
|
|
throws an exception would look like:
|
|
terminate called after throwing an instance of 'nlohmann::json_abi_v3_11_3::detail::parse_error'
|
|
what(): [json.exception.parse_error.101] parse error at line 1, column 1: attempting to parse an empty input; check that your input string or stream contains the expected JSON
|
|
Aborted (core dumped)
|
|
|
|
(for example, if one of the JSON tests files contains an error or a file doesn't exist.)
|
|
|
|
With this code, the output is:
|
|
|
|
JSON exception thrown; modify tools/ctestfw//ujson.h to get diagnostics.
|
|
Exiting immediately.
|
|
|
|
The entire #if block can be commented out in order to temporarily enable exceptions
|
|
and get a better parse error message (temporarily, while debugging).
|
|
*/
|
|
|
|
// Disable exceptions in JSON parser
|
|
|
|
#if _HAS_EXCEPTIONS == 0
|
|
#define JSON_TRY_USER if(true)
|
|
#define JSON_CATCH_USER(exception) if(false)
|
|
#define JSON_THROW_USER(exception) { \
|
|
printf("JSON exception thrown; modify tools/toolutil/ujson.h to get diagnostics.\n\
|
|
Exiting immediately.\n"); \
|
|
exit(1); \
|
|
}
|
|
#endif
|
|
|
|
#include "json-json.hpp"
|
|
|
|
#endif /* __UJSON_H__ */
|