danger-swiftlint 0.24.5 → 0.28.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a35b57008bbb1fa32b8b8c156bacc1b6610c0148c9c608287d6cf7f42d172792
4
- data.tar.gz: c430570ca1990bb89e90d8b6c9fcb38e557d40e3307b4e7dc331e173bc68d2ac
3
+ metadata.gz: ed42295ae38914afa20f0e0cb218bab68041937b967bdeac37a44d68b020d062
4
+ data.tar.gz: 8d4df36e091935dc287809571ce41317ae155bfebff4ffe2d6432b9c6b637bc6
5
5
  SHA512:
6
- metadata.gz: a276e2b26378e2b8ac740e6af1afc7430d622a3e02fda4f25eff08875149d51ee38887d30b58ff03b1356a55b0563041af2dfb7211599876023b8a56d72ffd14
7
- data.tar.gz: 601e1a6e0b8ed52863740aef8aadda2427ac10a456a3c47b8472451b4c6d7ea9710148bfd2d63770c1f8637d09372875fcce04a7fa0b843d49ce26e8f03efb51
6
+ metadata.gz: 29d8b6d7f3091dc5019148a2342575ab00ebc7160cab39c91205b26daeeba08c2d44015a87eb2a6758989e4b4520d2411b2bdbd0259211e36d1cebe08f0a71eb
7
+ data.tar.gz: 501f8cf1841ce33ae57dedbe1b3bc5c2723ecde16a7398893c67e3e0a3731da31aa54acea6f9491f42f9985c40ff19856465eaf93744e08447c4a57f27cee56c
@@ -8,14 +8,21 @@ class Swiftlint
8
8
 
9
9
  # Runs swiftlint
10
10
  def run(cmd = 'lint', additional_swiftlint_args = '', options = {}, env = nil)
11
- # change pwd before run swiftlint
12
- Dir.chdir options.delete(:pwd) if options.key? :pwd
11
+ # allow for temporary change to pwd before running swiftlint
12
+ pwd = options.delete(:pwd)
13
+ command = "#{swiftlint_path} #{cmd} #{swiftlint_arguments(options, additional_swiftlint_args)}"
13
14
 
14
15
  # Add `env` to environment
15
16
  update_env(env)
16
17
  begin
17
18
  # run swiftlint with provided options
18
- `#{swiftlint_path} #{cmd} #{swiftlint_arguments(options, additional_swiftlint_args)}`
19
+ if pwd
20
+ Dir.chdir(pwd) do
21
+ `#{command}`
22
+ end
23
+ else
24
+ `#{command}`
25
+ end
19
26
  ensure
20
27
  # Remove any ENV variables we might have added
21
28
  restore_env()
data/lib/danger_plugin.rb CHANGED
@@ -46,7 +46,7 @@ module Danger
46
46
 
47
47
  # Errors found
48
48
  attr_accessor :errors
49
-
49
+
50
50
  # All issues found
51
51
  attr_accessor :issues
52
52
 
@@ -67,12 +67,12 @@ module Danger
67
67
  # Fails if swiftlint isn't installed
68
68
  raise 'swiftlint is not installed' unless swiftlint.installed?
69
69
 
70
- config_file_path = if config_file
71
- config_file
72
- elsif !lint_all_files && File.file?('.swiftlint.yml')
73
- File.expand_path('.swiftlint.yml')
74
- end
75
- log "Using config file: #{config_file_path}"
70
+ config_file_path = config_file
71
+ if config_file_path
72
+ log "Using config file: #{config_file_path}"
73
+ else
74
+ log 'Config file was not specified.'
75
+ end
76
76
 
77
77
  dir_selected = directory ? File.expand_path(directory) : Dir.pwd
78
78
  log "Swiftlint will be run from #{dir_selected}"
@@ -124,7 +124,7 @@ module Danger
124
124
  issues = issues.take(@max_num_violations)
125
125
  end
126
126
  log "Received from Swiftlint: #{issues}"
127
-
127
+
128
128
  # filter out any unwanted violations with the passed in select_block
129
129
  if select_block && !no_comment
130
130
  issues = issues.select { |issue| select_block.call(issue) }
@@ -133,7 +133,7 @@ module Danger
133
133
  # Filter warnings and errors
134
134
  @warnings = issues.select { |issue| issue['severity'] == 'Warning' }
135
135
  @errors = issues.select { |issue| issue['severity'] == 'Error' }
136
-
136
+
137
137
  # Early exit so we don't comment
138
138
  return if no_comment
139
139
 
@@ -210,11 +210,13 @@ module Danger
210
210
  # @return [Array] swift files
211
211
  def find_swift_files(dir_selected, files = nil, excluded_paths = [], included_paths = [])
212
212
  # Assign files to lint
213
- files = if files.nil?
214
- (git.modified_files - git.deleted_files) + git.added_files
215
- else
216
- Dir.glob(files)
217
- end
213
+ if files.nil?
214
+ renamed_files_hash = git.renamed_files.map { |rename| [rename[:before], rename[:after]] }.to_h
215
+ post_rename_modified_files = git.modified_files.map { |modified_file| renamed_files_hash[modified_file] || modified_file }
216
+ files = (post_rename_modified_files - git.deleted_files) + git.added_files
217
+ else
218
+ files = Dir.glob(files)
219
+ end
218
220
  # Filter files to lint
219
221
  excluded_paths_list = Find.find(*excluded_paths).to_a
220
222
  included_paths_list = Find.find(*included_paths).to_a
data/lib/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DangerSwiftlint
4
- VERSION = '0.24.5'
5
- SWIFTLINT_VERSION = '0.41.0'
4
+ VERSION = '0.28.0'
5
+ SWIFTLINT_VERSION = '0.43.1'
6
6
  end
@@ -143,6 +143,7 @@ module Danger
143
143
  it 'uses git diff when files are not provided' do
144
144
  allow(@swiftlint.git).to receive(:modified_files).and_return(['spec/fixtures/SwiftFile.swift'])
145
145
  allow(@swiftlint.git).to receive(:added_files).and_return([])
146
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
146
147
  allow_any_instance_of(Swiftlint).to receive(:lint)
147
148
  .with(anything, '',
148
149
  { 'SCRIPT_INPUT_FILE_COUNT' => '1',
@@ -187,6 +188,7 @@ module Danger
187
188
  'spec/fixtures/some_dir/SwiftFile.swift',
188
189
  'spec/fixtures/SwiftFile.swift'
189
190
  ])
191
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
190
192
 
191
193
  expect_any_instance_of(Swiftlint).to receive(:lint)
192
194
  .with(anything, '',
@@ -212,10 +214,29 @@ module Danger
212
214
  # JSON object.
213
215
 
214
216
  allow_any_instance_of(Swiftlint).to receive(:lint).and_return('')
217
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
215
218
 
216
219
  expect { @swiftlint.lint_files }.not_to raise_error
217
220
  end
218
221
 
222
+ it 'crashes if renamed_files is not configured properly' do
223
+ allow(@swiftlint.git).to receive(:modified_files).and_return([
224
+ 'spec/fixtures/SwiftFileThatWasRenamedToSomethingElse.swift'
225
+ ])
226
+ expect { @swiftlint.lint_files }.to raise_error(NoMethodError)
227
+ end
228
+
229
+ it 'does not crash if a modified file was renamed' do
230
+ allow(@swiftlint.git).to receive(:modified_files).and_return([
231
+ 'spec/fixtures/SwiftFileThatWasRenamedToSomethingElse.swift'
232
+ ])
233
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([
234
+ { before: 'spec/fixtures/SwiftFileThatWasRenamedToSomethingElse.swift',
235
+ after: 'spec/fixtures/SwiftFile.swift' }
236
+ ])
237
+ expect { @swiftlint.lint_files }.not_to raise_error
238
+ end
239
+
219
240
  it 'does not lint files in the excluded paths' do
220
241
  allow(@swiftlint.git).to receive(:added_files).and_return([])
221
242
  allow(@swiftlint.git).to receive(:modified_files).and_return([
@@ -223,7 +244,7 @@ module Danger
223
244
  'spec/fixtures/excluded_dir/SwiftFileThatShouldNotBeIncluded.swift',
224
245
  'spec/fixtures/excluded_dir/SwiftFile WithEscaped+CharactersThatShouldNotBeIncluded.swift'
225
246
  ])
226
-
247
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
227
248
  expect_any_instance_of(Swiftlint).to receive(:lint)
228
249
  .with(anything, '',
229
250
  { 'SCRIPT_INPUT_FILE_COUNT' => '1',
@@ -241,6 +262,7 @@ module Danger
241
262
  'spec/fixtures/SwiftFile.swift',
242
263
  'spec/fixtures/some_dir/SwiftFile.swift'
243
264
  ])
265
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
244
266
 
245
267
  expect_any_instance_of(Swiftlint).to receive(:lint)
246
268
  .with(anything, '',
@@ -259,6 +281,7 @@ module Danger
259
281
  'spec/fixtures/SwiftFile.swift',
260
282
  'spec/fixtures/some_dir/SwiftFile.swift'
261
283
  ])
284
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
262
285
 
263
286
  expect_any_instance_of(Swiftlint).to receive(:lint)
264
287
  .with(anything, '',
@@ -277,6 +300,7 @@ module Danger
277
300
  allow(@swiftlint.git).to receive(:modified_files).and_return([
278
301
  'spec/fixtures/SwiftFile.swift'
279
302
  ])
303
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
280
304
 
281
305
  expect_any_instance_of(Swiftlint).to receive(:lint)
282
306
  .once
@@ -291,6 +315,7 @@ module Danger
291
315
  allow(@swiftlint.git).to receive(:modified_files).and_return([
292
316
  'spec/fixtures/SwiftFile.swift'
293
317
  ])
318
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
294
319
 
295
320
  expect_any_instance_of(Swiftlint).to receive(:lint)
296
321
  .once
@@ -305,6 +330,7 @@ module Danger
305
330
  allow(@swiftlint.git).to receive(:modified_files).and_return([
306
331
  'spec/fixtures/SwiftFile.swift'
307
332
  ])
333
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
308
334
 
309
335
  expect_any_instance_of(Swiftlint).to receive(:lint)
310
336
  .with(hash_including(config: nil), '', anything)
@@ -314,29 +340,12 @@ module Danger
314
340
  @swiftlint.lint_files
315
341
  end
316
342
 
317
- it 'expands default config file (if present) to absolute path' do
318
- allow(@swiftlint.git).to receive(:added_files).and_return([])
319
- allow(@swiftlint.git).to receive(:modified_files).and_return([
320
- 'spec/fixtures/SwiftFile.swift'
321
- ])
322
- expect(File).to receive(:file?).and_return(true)
323
- expect(File).to receive(:exist?).and_return(true)
324
- expect(File).to receive(:open).and_return(StringIO.new)
325
- expect(YAML).to receive(:safe_load).and_return({})
326
-
327
- expect_any_instance_of(Swiftlint).to receive(:lint)
328
- .with(hash_including(config: File.expand_path('.swiftlint.yml')), '', anything)
329
- .once
330
- .and_return(@swiftlint_response)
331
-
332
- @swiftlint.lint_files
333
- end
334
-
335
343
  it 'expands specified config file to absolute path' do
336
344
  allow(@swiftlint.git).to receive(:added_files).and_return([])
337
345
  allow(@swiftlint.git).to receive(:modified_files).and_return([
338
346
  'spec/fixtures/SwiftFile.swift'
339
347
  ])
348
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
340
349
 
341
350
  expect_any_instance_of(Swiftlint).to receive(:lint)
342
351
  .with(hash_including(config: 'spec/fixtures/some_config.yml'), '', anything)
@@ -360,6 +369,7 @@ module Danger
360
369
  allow(@swiftlint.git).to receive(:deleted_files).and_return([
361
370
  'spec/fixtures/DeletedFile.swift'
362
371
  ])
372
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
363
373
 
364
374
  expect_any_instance_of(Swiftlint).to receive(:lint)
365
375
  .with(anything, '',
@@ -596,6 +606,7 @@ module Danger
596
606
  'spec/fixtures/excluded_dir/SwiftFileThatShouldNotBeIncluded.swift',
597
607
  'spec/fixtures/excluded_dir/SwiftFile WithEscaped+CharactersThatShouldNotBeIncluded.swift'
598
608
  ])
609
+ allow(@swiftlint.git).to receive(:renamed_files).and_return([])
599
610
 
600
611
  expect_any_instance_of(Swiftlint).to receive(:lint)
601
612
  .once
@@ -25,9 +25,23 @@ describe Swiftlint do
25
25
  end
26
26
  end
27
27
 
28
+ it 'changes directory when a pwd option is specified' do
29
+ expect(Dir).to receive(:chdir) do |*args, &block|
30
+ expect(args).to match_array([Dir.pwd])
31
+ expect(block).not_to be_nil
32
+ end
33
+ swiftlint.run('lint', '', pwd: Dir.pwd)
34
+ end
35
+
36
+ it 'does not change directory when no pwd option is specified' do
37
+ allow(swiftlint).to receive(:`)
38
+ expect(Dir).not_to receive(:chdir)
39
+ swiftlint.run('lint', '')
40
+ end
41
+
28
42
  it 'runs lint by default with options being optional' do
29
43
  expect(swiftlint).to receive(:`).with(including('swiftlint lint'))
30
- swiftlint.run
44
+ swiftlint.run('lint', '')
31
45
  end
32
46
 
33
47
  it 'runs accepting symbolized options' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-swiftlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.5
4
+ version: 0.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ash Furrow
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2020-11-10 00:00:00.000000000 Z
15
+ date: 2021-09-07 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: danger
@@ -180,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  requirements: []
183
- rubygems_version: 3.0.3
183
+ rubygems_version: 3.2.20
184
184
  signing_key:
185
185
  specification_version: 4
186
186
  summary: A Danger plugin for linting Swift with SwiftLint.