Skip to content

Commit 57e1172

Browse files
authored
Sort permissions ANDROID-17565 (#13)
* Update sorting permissions before appending them ANDROID-17565 * Update recreated the sample-baseline ANDROID-17565 * Update fix sorting in old tests ANDROID-17565 * Update plugin version ANDROID-17565
1 parent 4722932 commit 57e1172

7 files changed

Lines changed: 82 additions & 52 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ To add the PermissionCheck plugin to your project, you have to add this block of
4343

4444
```groovy
4545
plugins {
46-
id "com.telefonica.manifestcheck" version "1.1.0"
46+
id "com.telefonica.manifestcheck" version "1.1.1"
4747
}
4848
```
4949

@@ -57,7 +57,7 @@ buildscript {
5757
}
5858
}
5959
dependencies {
60-
classpath "com.telefonica:manifestcheck:1.1.0"
60+
classpath "com.telefonica:manifestcheck:1.1.1"
6161
}
6262
}
6363
```

manifestcheck/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = "com.telefonica"
9-
version = "1.1.0" // Also update the version in the README
9+
version = "1.1.1" // Also update the version in the README
1010

1111
val uber: Configuration by configurations.creating
1212

manifestcheck/src/test/kotlin/com/telefonica/manifestcheck/MultiVariantPermissionCheckIntegrationTest.kt

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,18 @@ class MultiVariantPermissionCheckIntegrationTest {
3333
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3434
<baseline>
3535
<variant name="debug">
36-
<uses-permission name="android.permission.INTERNET"/>
37-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
38-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
39-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
4036
<uses-feature glEsVersion="0x00020000" required="true"/>
37+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
38+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
39+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
40+
<uses-permission name="android.permission.INTERNET"/>
4141
</variant>
4242
<variant name="release">
43-
<uses-permission name="android.permission.INTERNET"/>
44-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
45-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
46-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
4743
<uses-feature glEsVersion="0x00020000" required="true"/>
44+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
45+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
46+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
47+
<uses-permission name="android.permission.INTERNET"/>
4848
</variant>
4949
</baseline>
5050
@@ -79,18 +79,18 @@ class MultiVariantPermissionCheckIntegrationTest {
7979
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
8080
<baseline>
8181
<variant name="debug">
82-
<uses-permission name="android.permission.INTERNET"/>
83-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
84-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
85-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
8682
<uses-feature glEsVersion="0x00020000" required="true"/>
83+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
84+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
85+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
86+
<uses-permission name="android.permission.INTERNET"/>
8787
</variant>
8888
<variant name="release">
89-
<uses-permission name="android.permission.INTERNET"/>
90-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
91-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
92-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
9389
<uses-feature glEsVersion="0x00020000" required="true"/>
90+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
91+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
92+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
93+
<uses-permission name="android.permission.INTERNET"/>
9494
</variant>
9595
</baseline>
9696
@@ -113,18 +113,18 @@ class MultiVariantPermissionCheckIntegrationTest {
113113
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
114114
<baseline>
115115
<variant name="debug">
116-
<uses-permission name="android.permission.INTERNET"/>
117-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
118-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
119-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
120116
<uses-feature glEsVersion="0x00020000" required="true"/>
117+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
118+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
119+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
120+
<uses-permission name="android.permission.INTERNET"/>
121121
</variant>
122122
<variant name="release">
123-
<uses-permission name="android.permission.INTERNET"/>
124-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
125-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
126-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
127123
<uses-feature glEsVersion="0x00020000" required="true"/>
124+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
125+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
126+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
127+
<uses-permission name="android.permission.INTERNET"/>
128128
</variant>
129129
</baseline>
130130

manifestcheck/src/test/kotlin/com/telefonica/manifestcheck/SingleVariantPermissionCheckIntegrationTest.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ class SingleVariantPermissionCheckIntegrationTest {
3333
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3434
<baseline>
3535
<variant name="debug">
36-
<uses-permission name="android.permission.INTERNET"/>
37-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
38-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
39-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
4036
<uses-feature glEsVersion="0x00020000" required="true"/>
37+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
38+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
39+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
40+
<uses-permission name="android.permission.INTERNET"/>
4141
</variant>
4242
</baseline>
4343
@@ -72,16 +72,16 @@ class SingleVariantPermissionCheckIntegrationTest {
7272
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
7373
<baseline>
7474
<variant name="debug">
75-
<uses-permission name="android.permission.INTERNET"/>
76-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
77-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
78-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
7975
<uses-feature glEsVersion="0x00020000" required="true"/>
76+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
77+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
78+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
79+
<uses-permission name="android.permission.INTERNET"/>
8080
</variant>
8181
<variant name="release">
82-
<uses-permission name="android.permission.INTERNET"/>
83-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
8482
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
83+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
84+
<uses-permission name="android.permission.INTERNET"/>
8585
</variant>
8686
</baseline>
8787
@@ -104,11 +104,11 @@ class SingleVariantPermissionCheckIntegrationTest {
104104
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
105105
<baseline>
106106
<variant name="debug">
107-
<uses-permission name="android.permission.INTERNET"/>
108-
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
109-
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
110-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
111107
<uses-feature glEsVersion="0x00020000" required="true"/>
108+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
109+
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
110+
<uses-permission maxSdkVersion="26" name="android.permission.CAMERA"/>
111+
<uses-permission name="android.permission.INTERNET"/>
112112
</variant>
113113
</baseline>
114114

plugin-core/src/main/kotlin/com/telefonica/manifestcheck/internal/BaselineHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ internal class BaselineHandler(private val baselineFile: File) {
3434
// Create permission entries for a single variant
3535
appendElement("variant") {
3636
setAttribute("name", variantName)
37-
variantPermissions.forEach { permission ->
37+
variantPermissions.sorted().forEach { permission ->
3838
appendChild(permission.toXmlElement(document))
3939
}
4040
}

plugin-core/src/test/kotlin/com/telefonica/simonschiller/permissioncheck/internal/BaselineHandlerTest.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,4 +321,34 @@ class BaselineHandlerTest {
321321
""".trimIndent()
322322
assertEquals(expectedBaselineContent, baselineFile.readText().normaliseLineSeparators())
323323
}
324+
325+
@Test
326+
fun `Baseline serializes permissions in sorted order`() {
327+
val baselineFile = tempDir.resolve("permission-baseline.xml")
328+
// Intentionally unsorted
329+
val permissions = setOf(
330+
Permission("android.permission.INTERNET"),
331+
Permission("android.permission.CAMERA"),
332+
Sdk23Permission("android.permission.CAMERA"),
333+
Sdk23Permission("android.permission.ACCESS_FINE_LOCATION")
334+
)
335+
val baselineHandler = BaselineHandler(baselineFile)
336+
baselineHandler.serialize(mapOf("debug" to permissions))
337+
338+
val expectedBaselineContent = """
339+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
340+
<baseline>
341+
<variant name="debug">
342+
<uses-permission-sdk-23 name="android.permission.ACCESS_FINE_LOCATION"/>
343+
<uses-permission name="android.permission.CAMERA"/>
344+
<uses-permission-sdk-23 name="android.permission.CAMERA"/>
345+
<uses-permission name="android.permission.INTERNET"/>
346+
</variant>
347+
</baseline>
348+
""".trimIndent()
349+
assertEquals(
350+
expectedBaselineContent.trim(),
351+
baselineFile.readText().normaliseLineSeparators().trim()
352+
)
353+
}
324354
}

sample/app/sample-baseline.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
22
<baseline>
33
<variant name="debug">
4-
<uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
5-
<uses-permission maxSdkVersion="27" name="android.permission.INTERNET"/>
6-
<uses-permission name="android.permission.ACCESS_NETWORK_STATE"/>
4+
<uses-feature glEsVersion="0x00020000" required="true"/>
5+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
76
<uses-permission maxSdkVersion="26" name="android.permission.ACCESS_COARSE_LOCATION"/>
87
<uses-permission maxSdkVersion="26" name="android.permission.ACCESS_FINE_LOCATION"/>
8+
<uses-permission name="android.permission.ACCESS_NETWORK_STATE"/>
99
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
10-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
11-
<uses-feature glEsVersion="0x00020000" required="true"/>
10+
<uses-permission maxSdkVersion="27" name="android.permission.INTERNET"/>
11+
<uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
1212
</variant>
1313
<variant name="release">
14-
<uses-permission name="android.permission.CAMERA"/>
15-
<uses-permission maxSdkVersion="27" name="android.permission.INTERNET"/>
16-
<uses-permission name="android.permission.ACCESS_NETWORK_STATE"/>
14+
<uses-feature glEsVersion="0x00020000" required="true"/>
15+
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
1716
<uses-permission maxSdkVersion="26" name="android.permission.ACCESS_COARSE_LOCATION"/>
1817
<uses-permission maxSdkVersion="26" name="android.permission.ACCESS_FINE_LOCATION"/>
18+
<uses-permission name="android.permission.ACCESS_NETWORK_STATE"/>
1919
<uses-permission-sdk-23 name="android.permission.ACCESS_NETWORK_STATE"/>
20-
<uses-feature name="android.hardware.camera.autofocus" required="false"/>
21-
<uses-feature glEsVersion="0x00020000" required="true"/>
20+
<uses-permission name="android.permission.CAMERA"/>
21+
<uses-permission maxSdkVersion="27" name="android.permission.INTERNET"/>
2222
</variant>
2323
</baseline>

0 commit comments

Comments
 (0)