danger-android_permissions_checker 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog.md +10 -0
- data/README.md +14 -2
- data/danger-android_permissions_checker.gemspec +1 -1
- data/lib/android_permissions_checker/gem_version.rb +1 -1
- data/lib/android_permissions_checker/plugin.rb +39 -3
- data/spec/android_permissions_checker_spec.rb +62 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3dfd424ff01cc47bc35d2a029331868bb399b8bd81a2987efcfc7022517bf63
|
4
|
+
data.tar.gz: 11b46f55ba9ed75a03d06bce4e9044e03c30d458744158246e00d1611ba3a88d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33bdceb9b0d80317370b3d0f29f623a44c53575a46396141128808d4bc73630ad4da698e38e4aff4541ab7eee0f5ecaf5aa57e0da310643f2c09bf67dc5d7b9b
|
7
|
+
data.tar.gz: dda3f3d49fab08272cc73ef8ffd730be2aa05c59864e54c81276ff1b43d6957afbdd6def52983100ed230d2adfae83c333a57d413107d61a68921774ca3a72f5
|
data/ChangeLog.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
## v0.0.3
|
4
|
+
|
5
|
+
- [Allow to specify report method](https://github.com/mataku/danger-android_permissions_checker/pull/2) by [@mathroule](https://github.com/mathroule)
|
6
|
+
- [Use latest bundler](https://github.com/mataku/danger-android_permissions_checker/pull/3)
|
7
|
+
|
8
|
+
## v0.0.2
|
9
|
+
|
10
|
+
- [Notify to prefer to update list if permissions changed](https://github.com/mataku/danger-android_permissions_checker/pull/1)
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@ A [Danger](https://danger.systems/ruby) plugin to check diff of android apk perm
|
|
8
8
|
|
9
9
|
## How to check
|
10
10
|
|
11
|
-
Check permissions between current permissions and apk generated on CI service.
|
11
|
+
Check permissions between current permissions and apk generated on CI service. If changed, show permissions which added or deleted.
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
@@ -18,7 +18,7 @@ Create current permission list file of your apk using aapt, like this.
|
|
18
18
|
$ aapt d permissions /path/to/apk > permissions.txt
|
19
19
|
```
|
20
20
|
|
21
|
-
Add this to Dangerfile. Specify
|
21
|
+
Add this to Dangerfile. Specify APK generated by CI service and permission list file generated by above command.
|
22
22
|
|
23
23
|
```
|
24
24
|
android_permissions_checker.check(
|
@@ -27,10 +27,22 @@ android_permissions_checker.check(
|
|
27
27
|
)
|
28
28
|
```
|
29
29
|
|
30
|
+
To use specific report method (default is warn). Available options are: message, warn, fail.
|
31
|
+
```
|
32
|
+
android_permissions_checker.report_method = 'fail'
|
33
|
+
android_permissions_checker.check(
|
34
|
+
apk: '/path/to/generated_apk_by_CI',
|
35
|
+
permission_list_file: /path/to/permissions.txt
|
36
|
+
)
|
37
|
+
```
|
38
|
+
|
30
39
|
## NOTE
|
31
40
|
|
32
41
|
This gem uses `aapt` command to parse permissions of generated apk, so you need to add /path/to/aapt (Android Build-tools) to $PATH on your CI service.
|
33
42
|
|
43
|
+
## ChangeLog
|
44
|
+
|
45
|
+
See [ChangeLog.md](https://github.com/mataku/danger-android_permissions_checker/blob/master/ChangeLog.md).
|
34
46
|
|
35
47
|
## Development
|
36
48
|
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
|
22
22
|
|
23
23
|
# General ruby development
|
24
|
-
spec.add_development_dependency 'bundler', '
|
24
|
+
spec.add_development_dependency 'bundler', '>= 1.3'
|
25
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
26
|
|
27
27
|
# Testing support
|
@@ -1,8 +1,39 @@
|
|
1
1
|
module Danger
|
2
|
+
# Check permissions between current permissions and APK generated on CI service.
|
3
|
+
# If changed, show permissions which added or deleted.
|
4
|
+
#
|
5
|
+
# @example Running Android permissions checker with its basic configuration
|
6
|
+
#
|
7
|
+
# android_permissions_checker.check(
|
8
|
+
# apk: '/path/to/generated_apk_by_CI',
|
9
|
+
# permission_list_file: /path/to/permissions.txt
|
10
|
+
# )
|
11
|
+
#
|
12
|
+
# @example Running Android permissions checker with specific report method
|
13
|
+
#
|
14
|
+
# android_permissions_checker.report_method = 'fail'
|
15
|
+
# android_permissions_checker.check(
|
16
|
+
# apk: '/path/to/generated_apk_by_CI',
|
17
|
+
# permission_list_file: /path/to/permissions.txt
|
18
|
+
# )
|
19
|
+
#
|
20
|
+
# @see mataku/danger-android_permissions_checker
|
21
|
+
# @tags android, permissions, apk
|
22
|
+
|
2
23
|
class DangerAndroidPermissionsChecker < Plugin
|
24
|
+
REPORT_METHODS = %i(message warn fail).freeze
|
25
|
+
|
26
|
+
# *Optional*
|
27
|
+
# Set report method
|
28
|
+
#
|
29
|
+
# @return [String, Symbol] error by default
|
30
|
+
attr_accessor :report_method
|
31
|
+
|
32
|
+
# Calls permissions check.
|
33
|
+
# @return [void]
|
3
34
|
def check(apk: nil, permission_list_file: nil)
|
4
35
|
if apk.nil? || !File.exist?(apk)
|
5
|
-
raise "Can
|
36
|
+
raise "Can't find apk: #{apk}"
|
6
37
|
end
|
7
38
|
|
8
39
|
if permission_list_file.nil? || !File.exist?(permission_list_file)
|
@@ -10,7 +41,12 @@ module Danger
|
|
10
41
|
end
|
11
42
|
|
12
43
|
unless system 'which aapt > /dev/null 2>&1'
|
13
|
-
raise
|
44
|
+
raise "Can't find required command: aapt. Set PATH to Android Build-tools."
|
45
|
+
end
|
46
|
+
|
47
|
+
@report_method = (report_method || :warn).to_sym
|
48
|
+
unless REPORT_METHODS.include?(report_method)
|
49
|
+
raise "Unknown report method: #{report_method}"
|
14
50
|
end
|
15
51
|
|
16
52
|
generated_permissions = `aapt d permissions #{apk}`.split("\n")
|
@@ -38,7 +74,7 @@ module Danger
|
|
38
74
|
|
39
75
|
unless message.empty?
|
40
76
|
markdown(message)
|
41
|
-
|
77
|
+
send(report_method, "APK permissions changed, see below. Should update `#{permission_list_file}` if it is intended change.")
|
42
78
|
end
|
43
79
|
end
|
44
80
|
end
|
@@ -52,7 +52,6 @@ module Danger
|
|
52
52
|
expect(dangerfile.status_report[:warnings][0]).to eq("APK permissions changed, see below. Should update `#{current_permission_file}` if it is intended change.")
|
53
53
|
expect(dangerfile.status_report[:markdowns][0].message).not_to include('Deleted')
|
54
54
|
expect(dangerfile.status_report[:markdowns][0].message).to include('Added')
|
55
|
-
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
@@ -83,6 +82,68 @@ module Danger
|
|
83
82
|
expect(dangerfile.status_report[:markdowns][0].message).to include('Added')
|
84
83
|
end
|
85
84
|
end
|
85
|
+
|
86
|
+
context 'Report method set to fail' do
|
87
|
+
let(:generated_permissions) do
|
88
|
+
"package: com.mataku.scrobscrob.dev\nuses-permission: name='android.permission.INTERNET'\nuses-permission: name='com.mataku.INTERNET'\n"
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should report errors' do
|
92
|
+
plugin.report_method = 'fail'
|
93
|
+
plugin.check(apk: apk, permission_list_file: current_permission_file)
|
94
|
+
expect(dangerfile.status_report[:errors].length).to eq(1)
|
95
|
+
expect(dangerfile.status_report[:errors][0]).to eq("APK permissions changed, see below. Should update `#{current_permission_file}` if it is intended change.")
|
96
|
+
expect(dangerfile.status_report[:messages].length).to eq(0)
|
97
|
+
expect(dangerfile.status_report[:warnings].length).to eq(0)
|
98
|
+
expect(dangerfile.status_report[:markdowns][0].message).not_to include('Deleted')
|
99
|
+
expect(dangerfile.status_report[:markdowns][0].message).to include('Added')
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'Report method set to message' do
|
104
|
+
let(:generated_permissions) do
|
105
|
+
"package: com.mataku.scrobscrob.dev\nuses-permission: name='android.permission.INTERNET'\nuses-permission: name='com.mataku.INTERNET'\n"
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should report messages' do
|
109
|
+
plugin.report_method = 'message'
|
110
|
+
plugin.check(apk: apk, permission_list_file: current_permission_file)
|
111
|
+
expect(dangerfile.status_report[:errors].length).to eq(0)
|
112
|
+
expect(dangerfile.status_report[:messages].length).to eq(1)
|
113
|
+
expect(dangerfile.status_report[:messages][0]).to eq("APK permissions changed, see below. Should update `#{current_permission_file}` if it is intended change.")
|
114
|
+
expect(dangerfile.status_report[:warnings].length).to eq(0)
|
115
|
+
expect(dangerfile.status_report[:markdowns][0].message).not_to include('Deleted')
|
116
|
+
expect(dangerfile.status_report[:markdowns][0].message).to include('Added')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
context 'Report method set to warn' do
|
121
|
+
let(:generated_permissions) do
|
122
|
+
"package: com.mataku.scrobscrob.dev\nuses-permission: name='android.permission.INTERNET'\nuses-permission: name='com.mataku.INTERNET'\n"
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should report warnings' do
|
126
|
+
plugin.report_method = 'warn'
|
127
|
+
plugin.check(apk: apk, permission_list_file: current_permission_file)
|
128
|
+
expect(dangerfile.status_report[:errors].length).to eq(0)
|
129
|
+
expect(dangerfile.status_report[:messages].length).to eq(0)
|
130
|
+
expect(dangerfile.status_report[:warnings].length).to eq(1)
|
131
|
+
expect(dangerfile.status_report[:warnings][0]).to eq("APK permissions changed, see below. Should update `#{current_permission_file}` if it is intended change.")
|
132
|
+
expect(dangerfile.status_report[:markdowns][0].message).not_to include('Deleted')
|
133
|
+
expect(dangerfile.status_report[:markdowns][0].message).to include('Added')
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context 'Report method set to unknown' do
|
138
|
+
let(:generated_permissions) do
|
139
|
+
"package: com.mataku.scrobscrob.dev\nuses-permission: name='android.permission.INTERNET'\nuses-permission: name='com.mataku.INTERNET'\n"
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'should fail' do
|
143
|
+
plugin.report_method = 'unknown'
|
144
|
+
expect { plugin.check(apk: apk, permission_list_file: current_permission_file) }.to raise_error("Unknown report method: unknown")
|
145
|
+
end
|
146
|
+
end
|
86
147
|
end
|
87
148
|
end
|
88
149
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger-android_permissions_checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mataku
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger-plugin-api
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- ".gitignore"
|
91
91
|
- ".rubocop.yml"
|
92
92
|
- ".travis.yml"
|
93
|
+
- ChangeLog.md
|
93
94
|
- Gemfile
|
94
95
|
- Guardfile
|
95
96
|
- LICENSE.txt
|
@@ -121,8 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
122
|
- !ruby/object:Gem::Version
|
122
123
|
version: '0'
|
123
124
|
requirements: []
|
124
|
-
|
125
|
-
rubygems_version: 2.7.7
|
125
|
+
rubygems_version: 3.0.6
|
126
126
|
signing_key:
|
127
127
|
specification_version: 4
|
128
128
|
summary: A Danger plugin to check diff of android apk permissions.
|