The C++ and Java implementations are done by two different people different companies.
With different time constraints and availability.
The spec is still not final (although it is close), and the implementations are
still quite a bit behind.
Sharing these test files slows down development, by forcing any C++ and Java changes
to happen in the same time.
There are other components that share test files that are not shared yet,
even if they are more stable. So I don't know why we would force this on MF2 only.
This is temporary, and the data files will be de-duplicated again at a later time,
when the two implementations are more stable.
That de-duplication will include other shared files, and in a slightly different structure
(we have a doc and a discution on this topic).
Documented in docs/processes/release/tasks/updating-measure-unit.md,
updating the data for measurement units requires one to uncomment some code
in a unit test, run it, copy from stdout an paste in some other files.
That code is left enabled, spamming the stdandard output every time tests run.
Matching PR #883 in the message-format-wg repo.
Also move spec tests for unsupported statements and expressions into new files
to serve as syntax error tests.
ICU4C: Escape curly braces when serializing and normalizing
ICU4C: Escape '|' in patterns
ICU4C: When normalizing input, escape optionally-escaped characters in patterns
ICU4C/ICU4J: Allow trailing whitespace after a match
ICU4C: Fix parser to iterate over code points, not code units
Add tests with old reserved syntax as syntax-error tests
This also updates the spec tests from the current version of the MFWG
repository and removes some duplicate tests.
Spec tests now reflect the message-format-wg repo as of
5612f3b050
It also updates both the ICU4C and ICU4J parsers to follow the
current test schema in the conformance repository.
This includes adding code to both parsers to allow `src` to be
either a single string or an array of strings (per
https://github.com/unicode-org/conformance/pull/255 ),
and eliminating `srcs` in tests.
It also includes other changes to make updated spec tests pass:
ICU4C: Allow trailing whitespace for complex messages, due to spec change
ICU4C: Parse number literals correctly in Number::format
ICU4J: Allow trailing whitespace after complex body, per spec change
ICU4C: Fix bug that was assuming an .input variable can't have a reserved annotation
ICU4C: Fix bug where unsupported '.i' was parsed as an '.input'
ICU4C/ICU4J: Handle markup with space after the initial left curly brace
ICU4C: Check for duplicate variant errors
ICU4C/ICU4J: Handle leading whitespace in complex messages
ICU4J: Treat whitespace after .input keyword as optional
ICU4J: Don't format unannotated number literals as numbers