diff --git a/src/androidTest/java/de/dennisguse/opentracks/TimezoneRule.java b/src/androidTest/java/de/dennisguse/opentracks/TimezoneRule.java new file mode 100644 index 000000000..bff7b0e73 --- /dev/null +++ b/src/androidTest/java/de/dennisguse/opentracks/TimezoneRule.java @@ -0,0 +1,36 @@ +package de.dennisguse.opentracks; + +import androidx.annotation.NonNull; + +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + +import java.util.TimeZone; + +public class TimezoneRule implements TestRule { + + private final TimeZone mTimeZone; + private TimeZone mDeviceTimeZone; + + + public TimezoneRule(@NonNull TimeZone timeZone) { + mTimeZone = timeZone; + } + + @Override + public Statement apply(Statement base, Description description) { + return new Statement() { + @Override + public void evaluate() throws Throwable { + try { + mDeviceTimeZone = TimeZone.getDefault(); + TimeZone.setDefault(mTimeZone); + base.evaluate(); + } finally { + TimeZone.setDefault(mDeviceTimeZone); + } + } + }; + } +} diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java index 3c369c958..15828d1e0 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java @@ -38,11 +38,13 @@ import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.List; +import java.util.TimeZone; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.TimezoneRule; import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.data.models.Cadence; @@ -78,6 +80,10 @@ public class ExportImportTest { @Rule public GrantPermissionRule mRuntimePermissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION); + //For csv_export_only() as we the timezone is hardcoded in the expectation. + @Rule + public TimezoneRule timezoneRule = new TimezoneRule(TimeZone.getTimeZone("Europe/Berlin")); + @BeforeClass public static void preSetUp() { // Prepare looper for Android's message queue