Skip to content

Commit 3850977

Browse files
committed
Replace permission rule with custom rule to skip tests on missing permissions
1 parent 800d0b5 commit 3850977

File tree

4 files changed

+54
-26
lines changed

4 files changed

+54
-26
lines changed

lib/src/androidTest/kotlin/at/bitfire/ical4android/DmfsStyleProvidersTaskTest.kt

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,13 @@
77
package at.bitfire.ical4android
88

99
import androidx.test.platform.app.InstrumentationRegistry
10-
import androidx.test.rule.GrantPermissionRule
10+
import at.bitfire.synctools.GrantPermissionOrSkipRule
1111
import org.junit.After
1212
import org.junit.Assert.assertNotNull
13-
import org.junit.Assume
1413
import org.junit.Before
1514
import org.junit.Rule
16-
import org.junit.rules.TestRule
17-
import org.junit.runner.Description
1815
import org.junit.runner.RunWith
1916
import org.junit.runners.Parameterized
20-
import org.junit.runners.model.Statement
2117
import java.util.logging.Logger
2218

2319
@RunWith(Parameterized::class)
@@ -33,21 +29,7 @@ abstract class DmfsStyleProvidersTaskTest(
3329
}
3430

3531
@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-
}
32+
val permissionRule = GrantPermissionOrSkipRule(providerName.permissions.toSet())
5133

5234
var providerOrNull: TaskProvider? = null
5335
lateinit var provider: TaskProvider

lib/src/androidTest/kotlin/at/bitfire/ical4android/JtxCollectionTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import android.accounts.Account
1010
import android.content.ContentProviderClient
1111
import android.content.ContentValues
1212
import androidx.test.platform.app.InstrumentationRegistry
13-
import androidx.test.rule.GrantPermissionRule
1413
import at.bitfire.ical4android.impl.TestJtxCollection
1514
import at.bitfire.ical4android.util.MiscUtils.closeCompat
15+
import at.bitfire.synctools.GrantPermissionOrSkipRule
1616
import at.techbee.jtx.JtxContract
1717
import at.techbee.jtx.JtxContract.asSyncAdapter
1818
import junit.framework.TestCase.assertEquals
@@ -37,7 +37,7 @@ class JtxCollectionTest {
3737

3838
@JvmField
3939
@ClassRule
40-
val permissionRule = GrantPermissionRule.grant(*TaskProvider.PERMISSIONS_JTX)
40+
val permissionRule = GrantPermissionOrSkipRule(TaskProvider.PERMISSIONS_JTX.toSet())
4141

4242
@BeforeClass
4343
@JvmStatic

lib/src/androidTest/kotlin/at/bitfire/ical4android/JtxICalObjectTest.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,27 @@ import android.database.DatabaseUtils
1515
import android.os.ParcelFileDescriptor
1616
import androidx.core.content.pm.PackageInfoCompat
1717
import androidx.test.platform.app.InstrumentationRegistry
18-
import androidx.test.rule.GrantPermissionRule
1918
import at.bitfire.ical4android.impl.TestJtxCollection
2019
import at.bitfire.ical4android.util.MiscUtils.closeCompat
20+
import at.bitfire.synctools.GrantPermissionOrSkipRule
2121
import at.techbee.jtx.JtxContract
2222
import at.techbee.jtx.JtxContract.JtxICalObject
2323
import at.techbee.jtx.JtxContract.JtxICalObject.Component
2424
import at.techbee.jtx.JtxContract.asSyncAdapter
25-
import junit.framework.TestCase.*
25+
import junit.framework.TestCase.assertEquals
26+
import junit.framework.TestCase.assertNotNull
27+
import junit.framework.TestCase.assertNull
28+
import junit.framework.TestCase.assertTrue
2629
import net.fortuna.ical4j.model.Calendar
2730
import net.fortuna.ical4j.model.Property
28-
import org.junit.*
31+
import org.junit.After
32+
import org.junit.AfterClass
33+
import org.junit.Assert
34+
import org.junit.Assume
35+
import org.junit.Before
36+
import org.junit.BeforeClass
37+
import org.junit.ClassRule
38+
import org.junit.Test
2939
import java.io.ByteArrayOutputStream
3040
import java.io.InputStreamReader
3141

@@ -40,7 +50,7 @@ class JtxICalObjectTest {
4050

4151
@JvmField
4252
@ClassRule
43-
val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(*TaskProvider.PERMISSIONS_JTX)
53+
val permissionRule = GrantPermissionOrSkipRule(TaskProvider.PERMISSIONS_JTX.toSet())
4454

4555
@BeforeClass
4656
@JvmStatic
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* This file is part of ical4android which is released under GPLv3.
3+
* Copyright © All Contributors. See the LICENSE and AUTHOR files in the root directory for details.
4+
* SPDX-License-Identifier: GPL-3.0-or-later
5+
*/
6+
7+
package at.bitfire.synctools
8+
9+
import androidx.test.rule.GrantPermissionRule
10+
import org.junit.Assume
11+
import org.junit.rules.TestRule
12+
import org.junit.runner.Description
13+
import org.junit.runners.model.Statement
14+
15+
/**
16+
* Requests the given permissions for testing. If the permissions are not available/granted,
17+
* the tests are skipped.
18+
*
19+
* @param permissions requested permissions
20+
*/
21+
class GrantPermissionOrSkipRule(permissions: Set<String>): TestRule {
22+
23+
val grantRule: TestRule = GrantPermissionRule.grant(*permissions.toTypedArray())
24+
25+
override fun apply(base: Statement, description: Description) =
26+
object: Statement() {
27+
override fun evaluate() {
28+
val innerStatement = grantRule.apply(base, description)
29+
try {
30+
innerStatement.evaluate()
31+
} catch (e: SecurityException) {
32+
Assume.assumeNoException(e)
33+
}
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)