danger-app_size_report 0.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative '../helper/json_converter'
4
+
5
+ # Variant Model
4
6
  class VariantModel < JSONConverter
5
7
  attr_reader :variant, :supported_variant_descriptors, :app_on_demand_resources_size, :app_size,
6
8
  :on_demand_resources_size
@@ -4,6 +4,7 @@ require_relative '../models/app_size_model'
4
4
  require_relative '../helper/memory_size'
5
5
  require_relative './model_parser'
6
6
 
7
+ # Parser for App Size section of App Thinning Size Report
7
8
  class AppSizeParser < ModelParser
8
9
  attr_reader :standardized_unit
9
10
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
 
3
+ # Parent class for parsers
3
4
  class ModelParser
4
5
  attr_reader :text, :result
5
6
 
@@ -4,6 +4,7 @@ require 'securerandom'
4
4
  require_relative '../models/variant_model'
5
5
  require_relative '../helper/result_factory'
6
6
 
7
+ # Parses App Thinning Size Report in its entirety
7
8
  class ReportParser
8
9
  def self.parse(text)
9
10
  splitter_id = SecureRandom.uuid
@@ -4,6 +4,7 @@ require_relative '../models/device_model'
4
4
  require 'securerandom'
5
5
  require_relative './model_parser'
6
6
 
7
+ # Parser for Variant descriptor section of App Thinning Size Report
7
8
  class VariantDescriptorParser < ModelParser
8
9
  def parse
9
10
  @text = @text.strip
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative './model_parser'
4
4
 
5
+ # Parse Variant section of App Thinning Size Report.
6
+ # Example: 'Variant: ChargePointAppClip-35AD0331-EA57-4B82-B8E6-029D7786B9B7.ipa'
5
7
  class VariantParser < ModelParser
6
8
  def parse
7
9
  @text = @text.strip
@@ -15,22 +15,50 @@ module Danger
15
15
  end
16
16
 
17
17
  it 'Converts App Size Report to JSON' do
18
- json_string = @app_size_report.report_json("#{File.dirname(__dir__)}/Resources/App\ Thinning\ Size\ Report.txt")
18
+ json_string = @app_size_report.report_json("#{File.dirname(__dir__)}/Resources/App\ Thinning\ Size\ Report\ CPClip.txt")
19
19
 
20
20
  expected_json = File.read("#{File.dirname(__dir__)}/Resources/expectedReportJSON.json")
21
21
 
22
22
  expect(json_string).to eq(expected_json)
23
23
  end
24
24
 
25
- it 'Generates App Size Danger Report' do
26
- @app_size_report.flag_violations(
27
- "#{File.dirname(__dir__)}/Resources/App\ Thinning\ Size\ Report.txt",
25
+ it 'Generates IOS App Size Danger Report for Clip' do
26
+ @app_size_report.flag_ios_violations(
27
+ "#{File.dirname(__dir__)}/Resources/App\ Thinning\ Size\ Report\ CPClip.txt",
28
28
  build_type: 'Clip',
29
- size_limit: 12,
29
+ limit_size: 12,
30
30
  limit_unit: 'MB'
31
31
  )
32
32
 
33
- expect(@dangerfile.status_report[:warnings]).to eq(['The size limit of 10 MB has been exceeded by one or more variants'])
33
+ expect(@dangerfile.status_report[:warnings]).to eq(['The size limit of 12 MB has been exceeded by one or more variants'])
34
+ end
35
+
36
+ it 'Generates IOS App Size Danger Report for App' do
37
+ @app_size_report.flag_ios_violations(
38
+ "#{File.dirname(__dir__)}/Resources/App\ Thinning\ Size\ Report\ CP.txt",
39
+ build_type: 'App',
40
+ limit_size: 45,
41
+ limit_unit: 'MB'
42
+ )
43
+
44
+ expect(@dangerfile.status_report[:warnings]).to eq(['The size limit of 45 MB has been exceeded by one or more variants', 'The optimal cellular size limit of 200 MB has been exceeded by one or more variants'])
45
+ end
46
+
47
+ it 'Generates Android App Size Danger Report' do
48
+ @app_size_report.flag_android_violations(
49
+ "#{File.dirname(__dir__)}/Resources/app.aab",
50
+ "#{File.dirname(__dir__)}/Resources/testKey1",
51
+ 'testKey1',
52
+ 'testKey1',
53
+ 'testKey1',
54
+ screen_densities: %w[MDPI HDPI XHDPI XXHDPI XXXHDPI],
55
+ languages: %w[en de da es fr it nb nl sv],
56
+ build_type: 'Instant',
57
+ limit_size: 1.459,
58
+ limit_unit: 'MB'
59
+ )
60
+
61
+ expect(@dangerfile.status_report[:warnings]).to eq(['The size limit of 1.459 MB has been exceeded by 18 variants'])
34
62
  end
35
63
  end
36
64
  end
data/spec/spec_helper.rb CHANGED
@@ -22,6 +22,7 @@ RSpec.configure do |config|
22
22
  config.filter_gems_from_backtrace 'bundler'
23
23
  config.color = true
24
24
  config.tty = true
25
+ config.formatter = :documentation
25
26
  end
26
27
 
27
28
  require 'danger_plugin'
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-app_size_report
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rishab Sukumar
8
+ - Bharath Thakkallapally
9
+ - Vido Shaweddy
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2022-02-03 00:00:00.000000000 Z
13
+ date: 2023-12-12 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: danger-plugin-api
@@ -44,14 +46,14 @@ dependencies:
44
46
  requirements:
45
47
  - - "~>"
46
48
  - !ruby/object:Gem::Version
47
- version: '10.0'
49
+ version: '13.0'
48
50
  type: :development
49
51
  prerelease: false
50
52
  version_requirements: !ruby/object:Gem::Requirement
51
53
  requirements:
52
54
  - - "~>"
53
55
  - !ruby/object:Gem::Version
54
- version: '10.0'
56
+ version: '13.0'
55
57
  - !ruby/object:Gem::Dependency
56
58
  name: rspec
57
59
  requirement: !ruby/object:Gem::Requirement
@@ -150,28 +152,37 @@ dependencies:
150
152
  - - "~>"
151
153
  - !ruby/object:Gem::Version
152
154
  version: 0.14.1
153
- description: A Danger plugin for reporting iOS app size violations.
155
+ description: A Danger plugin for reporting iOS and Android app size violations.
154
156
  email:
155
157
  - rishab.sukumar@chargepoint.com
156
158
  executables: []
157
159
  extensions: []
158
160
  extra_rdoc_files: []
159
161
  files:
162
+ - ".github/PULL_REQUEST_TEMPLATE.md"
160
163
  - ".gitignore"
164
+ - ".rubocop.yml"
161
165
  - Gemfile
162
166
  - Gemfile.lock
163
167
  - Guardfile
164
168
  - LICENSE
165
169
  - README.md
166
170
  - Rakefile
167
- - Resources/App Thinning Size Report.txt
171
+ - Resources/App Thinning Size Report CP.txt
172
+ - Resources/App Thinning Size Report CPClip.txt
173
+ - Resources/Images/android_instant_size_report.png
174
+ - Resources/Images/app_thinning_size_report.png
175
+ - Resources/app.aab
168
176
  - Resources/expectedReportJSON.json
177
+ - Resources/testKey1
169
178
  - danger-app_size_report.gemspec
170
179
  - lib/app_size_report/gem_version.rb
171
180
  - lib/app_size_report/plugin.rb
181
+ - lib/converter/helper/android_utils.rb
172
182
  - lib/converter/helper/json_converter.rb
173
183
  - lib/converter/helper/memory_size.rb
174
184
  - lib/converter/helper/result_factory.rb
185
+ - lib/converter/models/android_variant_model.rb
175
186
  - lib/converter/models/app_size_model.rb
176
187
  - lib/converter/models/device_model.rb
177
188
  - lib/converter/models/variant_model.rb
@@ -187,7 +198,8 @@ files:
187
198
  homepage: https://github.com/ChargePoint/danger-app_size_report
188
199
  licenses:
189
200
  - MIT
190
- metadata: {}
201
+ metadata:
202
+ rubygems_mfa_required: 'true'
191
203
  post_install_message:
192
204
  rdoc_options: []
193
205
  require_paths:
@@ -196,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
196
208
  requirements:
197
209
  - - ">="
198
210
  - !ruby/object:Gem::Version
199
- version: '0'
211
+ version: 2.6.0
200
212
  required_rubygems_version: !ruby/object:Gem::Requirement
201
213
  requirements:
202
214
  - - ">="
@@ -206,8 +218,9 @@ requirements: []
206
218
  rubygems_version: 3.3.6
207
219
  signing_key:
208
220
  specification_version: 4
209
- summary: A Danger plugin for reporting iOS app size violations. A valid App Thinning
210
- Size Report must be passed to the plugin for accurate functionality.
221
+ summary: A Danger plugin for reporting iOS and Android app size violations. A valid
222
+ App Thinning Size Report or Android App Bundle must be passed to the plugin for
223
+ accurate functionality.
211
224
  test_files:
212
225
  - spec/app_size_report_spec.rb
213
226
  - spec/spec_helper.rb