Building icu4c on Windows - TestMessageFormat2 fails with U_FILE_ACCESS_ERROR

117 views
Skip to first unread message

Andy Jenkins

unread,
Jul 4, 2026, 12:08:54 PMJul 4
to icu-support
Dear ICU team,

This appears to be a bug where the test source assumes that testdata/message2 will be in a different location.

I have tried and failed to raise a bug report on Jira, it won't let me - so please see below


Steps to reproduce:

1. Download source distribution (icu4c-78.3-sources.zip) and extract

2. Follow build steps at https://unicode-org.github.io/icu/userguide/icu4c/build.html#how-to-build-and-install-on-windows, namely  
a) add icu/bin64 to path
b) build with msbuild or in Visual Studio

3. Run tests - either intltest in Visual Studio or icu/source/allinone/icucheck.bat

Expected outcome:

All tests pass

Actual outcome:

In intltest, TestMessageFormat2::dataDrivenTests fails - output snippet:

"        dataDrivenTests {
         jsonTests destructor: expected success but got error: U_FILE_ACCESS_ERROR - (Are you missing data?)
         } ERRORS (1) in dataDrivenTests
      } ERRORS (1) in TestMessageFormat2 (7ms)
   } ERRORS (1) in format((18.0s))
"

I believe this happens because in the source distribution, the test data location is icu/testdata/message2 whereas on git/CI it would be testdata/message2 (in the same folder as icu4c), and as a result it is not found by IntlTest::getSharedTestData. Moving icu/testdata up a level (to the containing folder of icu) causes the test in question to pass, as does modifying IntlTest::getSharedTestData so that TOP is #defined with one fewer "../" in it.


Kind regards,
Andrew Jenkins

Mihai Niță Ⓤ

unread,
Jul 6, 2026, 2:10:26 PMJul 6
to Andy Jenkins, icu-support

My question there (unanswered) was: why build from that `icu4c-78.3-sources.zip` file and not from the "Source code (zip)" generated by GitHub?
And I was considering a proposal to remove those artifacts.

That change was done 2 years ago (2024-06-20), and nobody complained.
Making that work again means not just including testdata/, but also vendor/.
And we would need a way to test (in CI?) that this does not break again in the future.
All that is extra work, and it would be nice to know why do we have to do all that.

The creator of ICU-23266 didn't answer, but since you have the same problem, maybe you can answer?

Thank you very much,
Mihai


--
You received this message because you are subscribed to the Google Groups "icu-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to icu-support...@unicode.org.
To view this discussion visit https://groups.google.com/a/unicode.org/d/msgid/icu-support/7c1727df-11da-4c9a-9e51-6f8700fec570n%40unicode.org.

--
You received this message because you are subscribed to the Google Groups "ICU - Team" group.
To unsubscribe from this group and stop receiving emails from it, send an email to icu-team+u...@unicode.org.
To view this discussion visit https://groups.google.com/a/unicode.org/d/msgid/icu-team/7c1727df-11da-4c9a-9e51-6f8700fec570n%40unicode.org.

Steven R. Loomis

unread,
Jul 6, 2026, 2:37:39 PMJul 6
to Mihai Niță Ⓤ, Andy Jenkins, icu-support
for what it’s worth,

sources.zip has a prebuilt icu/source/data/in/icudt78l.dat file which removes the need to recompile all of the data files.  This is not just a build speedup but has also meant a lower burden on tool generation. For example, if someone is using an alternate build system, that build system doesn’t have to have genrb, makeconv, genbrk etc. working.

-s

--
Steven R. Loomis
Code Hive Tx, LLC





--
You received this message because you are subscribed to the Google Groups "ICU - Team" group.
To unsubscribe from this group and stop receiving emails from it, send an email to icu-team+u...@unicode.org.

Tim Chevalier

unread,
Jul 6, 2026, 7:01:05 PMJul 6
to Andy Jenkins, icu-support
On 2026-07-04 09:08, Andy Jenkins wrote:
> Dear ICU team,
>
> This appears to be a bug where the test source assumes that
> testdata/message2 will be in a different location.

Hi Andy --

Thanks for the report. You are right, this is a bug. I filed
https://unicode-org.atlassian.net/browse/ICU-23451 and will submit a
fix.

Cheers,
Tim
> --
> You received this message because you are subscribed to the Google
> Groups "icu-support" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to icu-support...@unicode.org.
> To view this discussion visit
> https://groups.google.com/a/unicode.org/d/msgid/icu-support/7c1727df-11da-4c9a-9e51-6f8700fec570n%40unicode.org
> [1].
>
>
> Links:
> ------
> [1] https://groups.google.com/a/unicode.org/d/msgid/icu-support/7c1727df-11da-4c9a-9e51-6f8700fec570n%40unicode.org?utm_medium=email&utm_source=footer

Mihai Niță Ⓤ

unread,
Jul 6, 2026, 8:56:29 PMJul 6
to Steven R. Loomis, Andy Jenkins, icu-support
Thank you Steven for clarifying some of the history.

I in general not opposed to do extra work (as a person or as a project) if that work is useful.
But in two years since testdata/ was created we only had two complaints, both about testing on Windows.

Instead of guessing what people need, or what they do what they do, I just asked.

This is not a case of alternate build system, it was explicitly about "msbuild or in Visual Studio"
And we still publish a prebuilt icudt78l.dat

Mihai

Mihai Niță Ⓤ

unread,
Jul 6, 2026, 8:58:29 PMJul 6
to Steven R. Loomis, Andy Jenkins, icu-support
- I in general not opposed to do extra work ...
+ I in general I'm not opposed to do some extra work ...

M

Andrew Jenkins

unread,
Jul 7, 2026, 6:02:29 AMJul 7
to Mihai Niță Ⓤ, Steven R. Loomis, icu-support
Hi Mihai,

In answer to "why build from icu4c-VERSION-sources.zip and not the git 'Source code.zip'" - first, because I only wanted icu4c and not icu4j, and second because it seemed to be the file most like the source one "icu-XXXX.zip" described in the icu4c build instructions at https://unicode-org.github.io/icu/userguide/icu4c/build.html#how-to-build-and-install-on-windows

I only needed icu as a prerequisite for something else, and I thought (as it turns out, mistakenly) I needed to use an older MSVC so I went for the source rather than binary release.

Essentially there was a release file which had exactly what I wanted in it, and nothing to indicate I should have used anything else.

Kind regards,
Andrew

7 Jul 2026 01:58:28 Mihai Niță Ⓤ <mihai...@unicode.org>:

Mihai Niță Ⓤ

unread,
Jul 7, 2026, 1:31:47 PMJul 7
to Andrew Jenkins, Steven R. Loomis, icu-support
Thank you very much Andrew!
This might help us make a more informed decision.

So at least in your case it is bad documentation.
Absolutely not your fault, but ours :-)

Also, not needing icu4j means that the current icu4c sources zip file is a bit smaller.
But if that was a concern 20+ years ago, downloading a few useless megabytes these days is not as bad.
Will put that in balance.

Thank you very much!
Mihai

Reply all
Reply to author
Forward
0 new messages