Skip to content

[BUG] RemoteConfig unit tests fail in non-English (e.g., Korean) Locales due to Date Parsing #1196

@jungsehui

Description

@jungsehui

[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.

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions