@@ -9,11 +9,15 @@ package at.bitfire.ical4android
99import androidx.test.platform.app.InstrumentationRegistry
1010import androidx.test.rule.GrantPermissionRule
1111import org.junit.After
12+ import org.junit.Assert.assertNotNull
1213import org.junit.Assume
1314import org.junit.Before
1415import org.junit.Rule
16+ import org.junit.rules.TestRule
17+ import org.junit.runner.Description
1518import org.junit.runner.RunWith
1619import org.junit.runners.Parameterized
20+ import org.junit.runners.model.Statement
1721import java.util.logging.Logger
1822
1923@RunWith(Parameterized ::class )
@@ -28,17 +32,30 @@ abstract class DmfsStyleProvidersTaskTest(
2832 fun taskProviders () = listOf (TaskProvider .ProviderName .OpenTasks ,TaskProvider .ProviderName .TasksOrg )
2933 }
3034
31- @JvmField
32- @Rule
33- val permissionRule = GrantPermissionRule .grant(* providerName.permissions)
35+ @get:Rule
36+ val permissionRule: TestRule = object : TestRule {
37+ val rule = GrantPermissionRule .grant(* providerName.permissions)
38+
39+ override fun apply (base : Statement , description : Description ) =
40+ object : Statement () {
41+ override fun evaluate () {
42+ val innerStatement = rule.apply (base, description)
43+ try {
44+ innerStatement.evaluate()
45+ } catch (e: SecurityException ) {
46+ Assume .assumeNoException(e)
47+ }
48+ }
49+ }
50+ }
3451
3552 var providerOrNull: TaskProvider ? = null
3653 lateinit var provider: TaskProvider
3754
3855 @Before
3956 open fun prepare () {
4057 providerOrNull = TaskProvider .acquire(InstrumentationRegistry .getInstrumentation().context, providerName)
41- Assume .assumeNotNull(providerOrNull) // will halt here if providerOrNull is null
58+ assertNotNull( " $providerName is not installed " , providerOrNull != null )
4259
4360 provider = providerOrNull!!
4461 Logger .getLogger(javaClass.name).fine(" Using task provider: $provider " )
0 commit comments