-
Notifications
You must be signed in to change notification settings - Fork 306
Description
[REQUIRED] Step 2: Describe your environment
- Operating System version: macOS (Apple Silicon, ko_KR locale)
- Firebase SDK version: 9.7.0 (Current development branch)
- Library version: N/A
- Firebase Product: Remote Config
[REQUIRED] Step 3: Describe the problem
Steps to reproduce:
The unit tests for Remote Config fail when the system's default locale is set to a non-English language (e.g., Korean). This is due to RemoteConfigUtil using SimpleDateFormat without an explicit Locale.ENGLISH, causing parsing errors or string comparison mismatches against English date formats.
Error Output:
org.junit.ComparisonFailure: expected:<...NODE","updateTime":"[Tue, 08 Dec] 2020 15:49:51 UTC",...>
but was:<...NODE","updateTime":"[화, 08 12월] 2020 15:49:51 UTC",...>
Caused by: java.text.ParseException: Unparseable date: "Tue, 08 Dec 2020 15:49:51 UTC"
at java.base/java.text.DateFormat.parse(DateFormat.java:427)
at com.google.firebase.remoteconfig.RemoteConfigUtil.convertFromUtcDateFormat(RemoteConfigUtil.java:91)
Relevant Code:
The issue occurs in RemoteConfigUtil.java. There are 4 methods using SimpleDateFormat without an explicit Locale. To ensure consistent behavior across different system locales, all instances of SimpleDateFormat should be instantiated with Locale.ENGLISH.
Affected Methods:
convertToUtcZuluFormat(long millis)convertToUtcDateFormat(long millis)convertFromUtcZuluFormat(String dateString)convertFromUtcDateFormat(String dateString)
Current implementation:
SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN);Recommended fix:
SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN, Locale.ENGLISH);I've already identified the fix and verified it locally by setting the locale to Korean. I'd like to submit a Pull Request to resolve this issue.