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

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions