danger-app_size_report 0.0.3 → 1.1.0

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.
@@ -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