danger-xcprofiler 0.3.1 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5ec600c4eda17f744c354d8ab32a4cfdb85889fa
4
- data.tar.gz: 0ef15b2734e12f330543b58335b194cc15e73559
2
+ SHA256:
3
+ metadata.gz: 98d8b6553f16e8366ff699fadb2a2353f9bb8f6813f3e20a223cba72474cbe5c
4
+ data.tar.gz: bbb1c70e6efaeffd593cbf7b59d760143493e8cc578dcf16098888905c9c4959
5
5
  SHA512:
6
- metadata.gz: 26e6c25e956054de19cfabd4678dce6866eed86faf846e544b49d817d4a779bacbbb62d352bf035f059e425d3596d5c89e638a19905a1ccb1ba9986ee571568c
7
- data.tar.gz: 0553b0df7713eb1cbd512e5233bd77e3831cc375a2bf49b889a7371b548cd0fcfcd35edafc152129a564b6f3698e7ed0b5a6061f0e761f52fc536915c9327e77
6
+ metadata.gz: bd7cdd61911169a68b9b0ce7ec7e34da47bfe43ec3e455330623fcaf60a167bb55c64c5f68f78f8df41970a071779381730769dc2d404e11ff04c159dbf5e810
7
+ data.tar.gz: 22b2ae376946f27b8a13ed8eece85dc81812ab0f304e4f1cb0ecb0794cb9b0d0424fbfc5b4bd12a230b451904a0b9da5c80bc3673ba9787ec77781840abe271b
@@ -33,8 +33,8 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'coveralls'
34
34
 
35
35
  # Linting code and docs
36
- spec.add_development_dependency 'rubocop', '~> 0.41'
37
- spec.add_development_dependency 'yard', '~> 0.8'
36
+ spec.add_development_dependency 'rubocop'
37
+ spec.add_development_dependency 'yard'
38
38
 
39
39
  # Makes testing easy via `bundle exec guard`
40
40
  spec.add_development_dependency 'guard', '~> 2.14'
@@ -3,15 +3,18 @@ require 'pathname'
3
3
 
4
4
  module Danger
5
5
  class DangerReporter < Xcprofiler::AbstractReporter
6
- def initialize(dangerfile, thresholds, inline_mode, working_dir)
6
+ def initialize(dangerfile, thresholds, inline_mode, working_dir, ignored_files)
7
7
  super({})
8
8
  @dangerfile = dangerfile
9
9
  @thresholds = thresholds
10
10
  @inline_mode = inline_mode
11
11
  @working_dir = working_dir
12
+ @ignored_files = ignored_files
12
13
  end
13
14
 
14
15
  def report!(executions)
16
+ executions.reject! { |execution| ignored_files.any? { |pattern| File.fnmatch(pattern, execution.path) } }
17
+
15
18
  if @inline_mode
16
19
  inline_report(executions)
17
20
  else
@@ -69,5 +72,9 @@ module Danger
69
72
 
70
73
  message
71
74
  end
75
+
76
+ def ignored_files
77
+ [@ignored_files].flatten.compact
78
+ end
72
79
  end
73
80
  end
@@ -1,3 +1,3 @@
1
1
  module DangerXcprofiler
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
@@ -12,6 +12,10 @@ module Danger
12
12
  # xcprofiler.thresholds = { warn: 100, fail: 500 }
13
13
  # xcprofiler.report 'MyApp'
14
14
  #
15
+ # @example Specify a custom DerivedData directory
16
+ #
17
+ # xcprofiler.report 'MyApp' './DerivedData'
18
+ #
15
19
  # @see giginet/danger-xcprofiler
16
20
  # @tags xcode, ios, danger
17
21
  class DangerXcprofiler < Plugin
@@ -33,13 +37,22 @@ module Danger
33
37
  # @return [Boolean]
34
38
  attr_accessor :inline_mode
35
39
 
40
+ # A globbed string or array of strings which should match the files
41
+ # that you want to ignore warnings on. Defaults to nil.
42
+ # An example would be `'**/Pods/**'` to ignore warnings in Pods that your project uses.
43
+ #
44
+ # @param [String or [String]] value
45
+ # @return [[String]]
46
+ attr_accessor :ignored_files
47
+
36
48
  # Search the latest .xcactivitylog by the passing product_name and profile compilation time
37
49
  # @param [String] product_name Product name for the target project.
50
+ # @param [String] derived_data_path Path to the directory containing the DerivedData.
38
51
  # @return [void]
39
- def report(product_name)
40
- profiler = Xcprofiler::Profiler.by_product_name(product_name)
52
+ def report(product_name, derived_data_path = nil)
53
+ profiler = Xcprofiler::Profiler.by_product_name(product_name, derived_data_path)
41
54
  profiler.reporters = [
42
- DangerReporter.new(@dangerfile, thresholds, inline_mode, working_dir)
55
+ DangerReporter.new(@dangerfile, thresholds, inline_mode, working_dir, ignored_files)
43
56
  ]
44
57
  profiler.report!
45
58
  rescue Xcprofiler::DerivedDataNotFound, Xcprofiler::BuildFlagIsNotEnabled => e
@@ -58,6 +71,7 @@ module Danger
58
71
 
59
72
  def inline_mode
60
73
  return true if @inline_mode.nil?
74
+
61
75
  !!@inline_mode
62
76
  end
63
77
  end
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,7 @@ require 'coveralls'
2
2
  Coveralls.wear!
3
3
 
4
4
  require 'pathname'
5
- ROOT = Pathname.new(File.expand_path('../../', __FILE__))
5
+ ROOT = Pathname.new(File.expand_path('..', __dir__))
6
6
  $LOAD_PATH.unshift((ROOT + 'lib').to_s)
7
7
  $LOAD_PATH.unshift((ROOT + 'spec').to_s)
8
8
 
@@ -1,6 +1,7 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require File.expand_path('spec_helper', __dir__)
2
2
  require 'xcprofiler'
3
3
 
4
+ # rubocop:disable Metrics/ModuleLength
4
5
  module Danger
5
6
  describe Danger::DangerXcprofiler do
6
7
  it 'should be a plugin' do
@@ -25,7 +26,7 @@ module Danger
25
26
  allow(@dangerfile).to receive(:warn)
26
27
  allow(@dangerfile).to receive(:fail)
27
28
  allow(@dangerfile).to receive(:markdown)
28
- allow(Xcprofiler::Profiler).to receive(:by_product_name).with(product_name).and_return(profiler)
29
+ allow(Xcprofiler::Profiler).to receive(:by_product_name).with(product_name, nil).and_return(profiler)
29
30
  allow(derived_data).to receive(:flag_enabled?).and_return(true)
30
31
  allow(derived_data).to receive(:executions).and_return([execution0, execution1])
31
32
  [execution0, execution1].each do |execution|
@@ -34,6 +35,25 @@ module Danger
34
35
  end
35
36
  end
36
37
 
38
+ context 'with ignored files' do
39
+ let(:time0) { 49.9 }
40
+ let(:time1) { 50 }
41
+ it 'skips matching warning' do
42
+ @xcprofiler.ignored_files = ['path/**']
43
+ @xcprofiler.report(product_name)
44
+ expect(@dangerfile).to_not have_received(:warn).with('`doSomething()` takes 50.0 ms to build',
45
+ file: 'path/to/Source.swift',
46
+ line: 20)
47
+ end
48
+ it 'includes non-matching warning' do
49
+ @xcprofiler.ignored_files = ['other/path/**']
50
+ @xcprofiler.report(product_name)
51
+ expect(@dangerfile).to have_received(:warn).with('`doSomething()` takes 50.0 ms to build',
52
+ file: 'path/to/Source.swift',
53
+ line: 20)
54
+ end
55
+ end
56
+
37
57
  context 'with slow execution' do
38
58
  let(:time0) { 49.9 }
39
59
  let(:time1) { 50 }
@@ -119,3 +139,4 @@ module Danger
119
139
  end
120
140
  end
121
141
  end
142
+ # rubocop:enable Metrics/ModuleLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-xcprofiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - giginet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-15 00:00:00.000000000 Z
11
+ date: 2019-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcprofiler
@@ -98,30 +98,30 @@ dependencies:
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0.41'
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0.41'
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: yard
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0.8'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '0.8'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: guard
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  version: '0'
224
224
  requirements: []
225
225
  rubyforge_project:
226
- rubygems_version: 2.5.1
226
+ rubygems_version: 2.7.6
227
227
  signing_key:
228
228
  specification_version: 4
229
229
  summary: danger plugin for asserting Swift compilation time.