Skip to content
This repository was archived by the owner on Jun 9, 2025. It is now read-only.

Commit a51f7e1

Browse files
rfc2822ArnyminerZ
andauthored
Ignore custom VTIMEZONEs that can't be properly handled by ical4j (#96)
* Improve build speed by enabling gradle configuration cache * Added rules for fixing Dublin timezone Signed-off-by: Arnau Mora <[email protected]> * Added rules for fixing Dublin timezone Signed-off-by: Arnau Mora <[email protected]> * Added test for Dublin preprocessing Signed-off-by: Arnau Mora <[email protected]> * Applying rules for properties and components Signed-off-by: Arnau Mora <[email protected]> * Added test for `testTzDublin_external` Signed-off-by: Arnau Mora <[email protected]> * Changed rule replacement method Signed-off-by: Arnau Mora <[email protected]> * Use ValidatingTimeZoneRegistry to ignore time zone updates that can't be handled properly by ical4j * Rollback Signed-off-by: Arnau Mora Gras <[email protected]> * Enable ical4j flag to support timezone definitions with negative DST * Optimize imports * Remove duplicate test --------- Signed-off-by: Arnau Mora <[email protected]> Signed-off-by: Arnau Mora Gras <[email protected]> Co-authored-by: Arnau Mora <[email protected]>
1 parent b6fc772 commit a51f7e1

37 files changed

+311
-83
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ org.gradle.unsafe.configuration-cache=true
77
org.gradle.unsafe.configuration-cache-problems=warn
88

99
# Android
10-
android.useAndroidX=true
10+
android.useAndroidX=true

src/androidTest/java/at/bitfire/ical4android/AndroidCalendarTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,13 @@ import at.bitfire.ical4android.util.MiscUtils.ContentProviderClientHelper.closeC
2020
import at.bitfire.ical4android.util.MiscUtils.UriHelper.asSyncAdapter
2121
import net.fortuna.ical4j.model.property.DtEnd
2222
import net.fortuna.ical4j.model.property.DtStart
23-
import org.junit.*
23+
import org.junit.AfterClass
2424
import org.junit.Assert.assertEquals
2525
import org.junit.Assert.assertNotNull
26+
import org.junit.Before
27+
import org.junit.BeforeClass
28+
import org.junit.ClassRule
29+
import org.junit.Test
2630

2731
class AndroidCalendarTest {
2832

src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ package at.bitfire.ical4android
77
import net.fortuna.ical4j.model.DefaultTimeZoneRegistryFactory
88
import net.fortuna.ical4j.model.TimeZone
99
import net.fortuna.ical4j.model.TimeZoneRegistry
10-
import org.junit.Assert.*
10+
import org.junit.Assert.assertEquals
11+
import org.junit.Assert.assertFalse
12+
import org.junit.Assert.assertNull
1113
import org.junit.Assume
1214
import org.junit.Before
1315
import org.junit.Test
@@ -17,9 +19,9 @@ import java.time.zone.ZoneRulesException
1719
class AndroidCompatTimeZoneRegistryTest {
1820

1921
lateinit var ical4jRegistry: TimeZoneRegistry
20-
lateinit var registry: TimeZoneRegistry
22+
lateinit var registry: AndroidCompatTimeZoneRegistry
2123

22-
val systemKnowsKyiv =
24+
private val systemKnowsKyiv =
2325
try {
2426
ZoneId.of("Europe/Kyiv")
2527
true
@@ -29,7 +31,7 @@ class AndroidCompatTimeZoneRegistryTest {
2931

3032
@Before
3133
fun createRegistry() {
32-
ical4jRegistry = DefaultTimeZoneRegistryFactory.getInstance().createRegistry()
34+
ical4jRegistry = DefaultTimeZoneRegistryFactory().createRegistry()
3335
registry = AndroidCompatTimeZoneRegistry.Factory().createRegistry()
3436
}
3537

src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ import android.content.ContentUris
1010
import android.content.ContentValues
1111
import android.database.DatabaseUtils
1212
import android.net.Uri
13-
import android.provider.CalendarContract.*
13+
import android.provider.CalendarContract.ACCOUNT_TYPE_LOCAL
14+
import android.provider.CalendarContract.AUTHORITY
15+
import android.provider.CalendarContract.Attendees
16+
import android.provider.CalendarContract.Calendars
17+
import android.provider.CalendarContract.Events
18+
import android.provider.CalendarContract.ExtendedProperties
19+
import android.provider.CalendarContract.Reminders
1420
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
1521
import androidx.test.rule.GrantPermissionRule
1622
import at.bitfire.ical4android.impl.TestCalendar
@@ -19,13 +25,36 @@ import at.bitfire.ical4android.util.AndroidTimeUtils
1925
import at.bitfire.ical4android.util.DateUtils
2026
import at.bitfire.ical4android.util.MiscUtils.ContentProviderClientHelper.closeCompat
2127
import at.bitfire.ical4android.util.MiscUtils.UriHelper.asSyncAdapter
22-
import net.fortuna.ical4j.model.*
28+
import net.fortuna.ical4j.model.Date
29+
import net.fortuna.ical4j.model.DateList
30+
import net.fortuna.ical4j.model.DateTime
31+
import net.fortuna.ical4j.model.Parameter
32+
import net.fortuna.ical4j.model.ParameterList
33+
import net.fortuna.ical4j.model.Property
2334
import net.fortuna.ical4j.model.component.VAlarm
24-
import net.fortuna.ical4j.model.parameter.*
35+
import net.fortuna.ical4j.model.parameter.Cn
36+
import net.fortuna.ical4j.model.parameter.CuType
37+
import net.fortuna.ical4j.model.parameter.Email
38+
import net.fortuna.ical4j.model.parameter.Language
39+
import net.fortuna.ical4j.model.parameter.PartStat
40+
import net.fortuna.ical4j.model.parameter.Related
41+
import net.fortuna.ical4j.model.parameter.Role
42+
import net.fortuna.ical4j.model.parameter.Rsvp
43+
import net.fortuna.ical4j.model.parameter.Value
2544
import net.fortuna.ical4j.model.property.*
2645
import net.fortuna.ical4j.util.TimeZones
27-
import org.junit.*
28-
import org.junit.Assert.*
46+
import org.junit.After
47+
import org.junit.AfterClass
48+
import org.junit.Assert.assertEquals
49+
import org.junit.Assert.assertFalse
50+
import org.junit.Assert.assertNotEquals
51+
import org.junit.Assert.assertNotNull
52+
import org.junit.Assert.assertNull
53+
import org.junit.Assert.assertTrue
54+
import org.junit.Before
55+
import org.junit.BeforeClass
56+
import org.junit.ClassRule
57+
import org.junit.Test
2958
import java.net.URI
3059
import java.time.Duration
3160
import java.time.Period

src/androidTest/java/at/bitfire/ical4android/AndroidTaskListTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import org.dmfs.tasks.contract.TaskContract
1515
import org.dmfs.tasks.contract.TaskContract.Properties
1616
import org.dmfs.tasks.contract.TaskContract.Property.Relation
1717
import org.dmfs.tasks.contract.TaskContract.Tasks
18-
import org.junit.Assert.*
18+
import org.junit.Assert.assertEquals
19+
import org.junit.Assert.assertNotNull
20+
import org.junit.Assert.assertTrue
1921
import org.junit.Test
2022

2123
class AndroidTaskListTest(providerName: TaskProvider.ProviderName):

src/androidTest/java/at/bitfire/ical4android/AndroidTaskTest.kt

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,36 @@ import at.bitfire.ical4android.util.DateUtils
1616
import net.fortuna.ical4j.model.Date
1717
import net.fortuna.ical4j.model.DateList
1818
import net.fortuna.ical4j.model.DateTime
19-
import net.fortuna.ical4j.model.parameter.*
19+
import net.fortuna.ical4j.model.parameter.Email
20+
import net.fortuna.ical4j.model.parameter.RelType
2021
import net.fortuna.ical4j.model.parameter.TzId
21-
import net.fortuna.ical4j.model.property.*
22+
import net.fortuna.ical4j.model.parameter.Value
23+
import net.fortuna.ical4j.model.parameter.XParameter
24+
import net.fortuna.ical4j.model.property.Clazz
25+
import net.fortuna.ical4j.model.property.Completed
26+
import net.fortuna.ical4j.model.property.DtStart
27+
import net.fortuna.ical4j.model.property.Due
28+
import net.fortuna.ical4j.model.property.Duration
29+
import net.fortuna.ical4j.model.property.ExDate
30+
import net.fortuna.ical4j.model.property.Geo
31+
import net.fortuna.ical4j.model.property.Organizer
32+
import net.fortuna.ical4j.model.property.RDate
33+
import net.fortuna.ical4j.model.property.RRule
34+
import net.fortuna.ical4j.model.property.RelatedTo
35+
import net.fortuna.ical4j.model.property.Status
36+
import net.fortuna.ical4j.model.property.XProperty
2237
import org.dmfs.tasks.contract.TaskContract
23-
import org.dmfs.tasks.contract.TaskContract.*
38+
import org.dmfs.tasks.contract.TaskContract.Properties
2439
import org.dmfs.tasks.contract.TaskContract.Property.Category
2540
import org.dmfs.tasks.contract.TaskContract.Property.Relation
41+
import org.dmfs.tasks.contract.TaskContract.PropertyColumns
42+
import org.dmfs.tasks.contract.TaskContract.Tasks
2643
import org.junit.After
27-
import org.junit.Assert.*
44+
import org.junit.Assert.assertEquals
45+
import org.junit.Assert.assertFalse
46+
import org.junit.Assert.assertNotNull
47+
import org.junit.Assert.assertNull
48+
import org.junit.Assert.assertTrue
2849
import org.junit.Before
2950
import org.junit.Test
3051
import java.time.ZoneId

src/androidTest/java/at/bitfire/ical4android/AndroidTimeZonesTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.junit.Assert.assertNotNull
1010
import org.junit.Test
1111
import java.time.ZoneId
1212
import java.time.format.TextStyle
13-
import java.util.*
13+
import java.util.Locale
1414

1515
class AndroidTimeZonesTest {
1616

src/androidTest/java/at/bitfire/ical4android/BatchOperationTest.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,16 @@ import at.bitfire.ical4android.util.MiscUtils.ContentProviderClientHelper.closeC
1919
import net.fortuna.ical4j.model.property.Attendee
2020
import net.fortuna.ical4j.model.property.DtEnd
2121
import net.fortuna.ical4j.model.property.DtStart
22-
import org.junit.*
22+
import org.junit.After
23+
import org.junit.AfterClass
2324
import org.junit.Assert.assertEquals
2425
import org.junit.Assert.assertNotNull
26+
import org.junit.Before
27+
import org.junit.BeforeClass
28+
import org.junit.ClassRule
29+
import org.junit.Test
2530
import java.net.URI
26-
import java.util.*
31+
import java.util.Arrays
2732

2833
class BatchOperationTest {
2934

src/androidTest/java/at/bitfire/ical4android/EventTest.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,16 @@ import net.fortuna.ical4j.model.Parameter
1111
import net.fortuna.ical4j.model.TimeZoneRegistryFactory
1212
import net.fortuna.ical4j.model.component.VAlarm
1313
import net.fortuna.ical4j.model.parameter.Email
14-
import net.fortuna.ical4j.model.property.*
15-
import org.junit.Assert.*
14+
import net.fortuna.ical4j.model.property.Attendee
15+
import net.fortuna.ical4j.model.property.DtEnd
16+
import net.fortuna.ical4j.model.property.DtStart
17+
import net.fortuna.ical4j.model.property.Organizer
18+
import net.fortuna.ical4j.model.property.RRule
19+
import net.fortuna.ical4j.model.property.RecurrenceId
20+
import org.junit.Assert.assertEquals
21+
import org.junit.Assert.assertFalse
22+
import org.junit.Assert.assertNull
23+
import org.junit.Assert.assertTrue
1624
import org.junit.Test
1725
import java.io.ByteArrayOutputStream
1826
import java.io.FileNotFoundException

src/androidTest/java/at/bitfire/ical4android/ICalendarTest.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ import net.fortuna.ical4j.model.property.DtEnd
1818
import net.fortuna.ical4j.model.property.DtStart
1919
import net.fortuna.ical4j.model.property.Due
2020
import net.fortuna.ical4j.util.TimeZones
21-
import org.junit.Assert.*
21+
import org.junit.Assert.assertEquals
22+
import org.junit.Assert.assertNotNull
23+
import org.junit.Assert.assertNull
2224
import org.junit.Test
2325
import java.io.StringReader
2426
import java.time.Duration
@@ -27,19 +29,19 @@ import java.time.Period
2729
class ICalendarTest {
2830

2931
// UTC timezone
30-
val tzUTC = DateUtils.ical4jTimeZone(TimeZones.UTC_ID)!!.vTimeZone
32+
private val tzUTC = DateUtils.ical4jTimeZone(TimeZones.UTC_ID)!!.vTimeZone
3133

3234
// Austria (Europa/Vienna) uses DST regularly
33-
val vtzVienna = readTimeZone("Vienna.ics")
35+
private val vtzVienna = readTimeZone("Vienna.ics")
3436

3537
// Pakistan (Asia/Karachi) used DST only in 2002, 2008 and 2009; no known future occurrences
36-
val vtzKarachi = readTimeZone("Karachi.ics")
38+
private val vtzKarachi = readTimeZone("Karachi.ics")
3739

3840
// Somalia (Africa/Mogadishu) has never used DST
39-
val vtzMogadishu = readTimeZone("Mogadishu.ics")
41+
private val vtzMogadishu = readTimeZone("Mogadishu.ics")
4042

4143
// current time stamp
42-
val currentTime = java.util.Date().time
44+
private val currentTime = java.util.Date().time
4345

4446

4547
private fun readTimeZone(fileName: String): VTimeZone {
@@ -88,6 +90,7 @@ class ICalendarTest {
8890
))
8991
}
9092

93+
9194
@Test
9295
fun testMinifyVTimezone_UTC() {
9396
// Keep the only observance for UTC.

0 commit comments

Comments
 (0)