From 2c60dde82ad2731251373602e5e8898958c395ca Mon Sep 17 00:00:00 2001
From: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
Date: Thu, 20 May 2021 14:17:45 +0200
Subject: [PATCH] Make Error report filename Windows compatible
 (EXPOSUREAPP-7266) (COMMUNITY) (#3235)

* Make snapshot log filename Windows compatible (replace : with _)

* Modify LogSnapshotterTest for changed filename timezone and colon replacement

Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
---
 .../bugreporting/debuglog/internal/LogSnapshotter.kt       | 3 ++-
 .../bugreporting/debuglog/internal/LogSnapshotterTest.kt   | 7 ++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotter.kt
index fee05ee70..cbbd0e13e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotter.kt
@@ -34,7 +34,8 @@ class LogSnapshotter @Inject constructor(
         }
 
         val now = timeStamper.nowUTC.toUserTimeZone()
-        val formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS")
+        // Avoid ":" in filename since it is a reserved character in Microsoft Windows
+        val formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH_mm_ss.SSS")
         val formattedFileName = "CWA Log ${now.toString(formatter)}"
         if (!snapshotDir.exists() && snapshotDir.mkdirs()) {
             Timber.tag(TAG).v("Created %s", snapshotDir)
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotterTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotterTest.kt
index b4ccfd775..0bba493b4 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotterTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/debuglog/internal/LogSnapshotterTest.kt
@@ -2,12 +2,13 @@ package de.rki.coronawarnapp.bugreporting.debuglog.internal
 
 import android.content.Context
 import de.rki.coronawarnapp.bugreporting.debuglog.DebugLogger
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.toUserTimeZone
 import de.rki.coronawarnapp.util.TimeStamper
 import io.kotest.matchers.shouldBe
 import io.mockk.MockKAnnotations
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
-import org.joda.time.Instant
+import org.joda.time.DateTime
 import org.junit.jupiter.api.AfterEach
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
@@ -26,7 +27,7 @@ class LogSnapshotterTest : BaseIOTest() {
     private val runningLogFake = File(testDir, "running.log")
 
     private val snapshotDir = File(cacheDir, "debuglog_snapshots")
-    private val expectedSnapshot = File(snapshotDir, "CWA Log 1970-01-01 00:00:00.000.zip")
+    private val expectedSnapshot = File(snapshotDir, "CWA Log 1970-01-01 00_00_00.000.zip")
 
     @BeforeEach
     fun setup() {
@@ -38,7 +39,7 @@ class LogSnapshotterTest : BaseIOTest() {
         testDir.exists() shouldBe true
 
         every { debugLogger.runningLog } returns runningLogFake
-        every { timeStamper.nowUTC } returns Instant.EPOCH
+        every { timeStamper.nowUTC.toUserTimeZone() } returns DateTime.parse("1970-01-01T00:00:00.000Z")
 
         runningLogFake.parentFile!!.mkdirs()
         runningLogFake.writeText("1 Doge = 1 Doge")
-- 
GitLab