ndr_dev_support 5.2.0 → 5.3.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: 3b2e7533f6beb88747b0f1f90d6f0145971967afe89a3abc40f2d758e05731ca
4
- data.tar.gz: 12a546e8f88d752ec2148a84c8976ba732c3eae138262bd9318645aa019892b7
3
+ metadata.gz: '0888d5815e584f9a19a63639faf323ccd24c0918645c623f1648167e8a3e1cba'
4
+ data.tar.gz: a8cd571529741d2dcebbf6d6f78f754586753a26ca24fa3bd3a9fd007a384635
5
5
  SHA512:
6
- metadata.gz: 5952f961e82afc9e82bfeeef9d93e2a006f2eac01e2ea5a0e99dbfb521c6214b4c352eaedacd42ed11e6333b45c4e8530e1db9eea1e6bb0fd3a0e83f2f1b843b
7
- data.tar.gz: 694ac0dc87603055ec136502b07b02f80a77dbee444ae96a9be6473c35b3bbbdc55913f0195669a6215658b08c549b9a19eeae7fb65518f9cb43804b4bb0d3c0
6
+ metadata.gz: a38a7122c12eadd4521cbd06e898c80c316605596e06bfc71d70d192bed1a4285c9988dfb5200ebec5b0c1b6ccd0af0e3a1a0e8ec281dba3fb9691b553937864
7
+ data.tar.gz: 499aa9c741b54ef41af36023a306ec23c0b3caaffd4f1f5eea5e3c4158c298037d22e226ce92e0f4fbd56e99ea67044e84eb3c7147bbdb86ff58dabbe458aac5
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
+ /gemfiles/*.lock
3
4
  /Gemfile.lock
4
5
  /_yardoc/
5
6
  /coverage/
@@ -1,6 +1,15 @@
1
1
  ## [Unreleased]
2
2
  *no unreleased changes*
3
3
 
4
+ ## 5.3.0 / 2019-05-15
5
+ ### Added
6
+ * Offer current checkout name as project name when outputting system version info
7
+ * Added a rake rubocop:summary task to list offence counts by cop (#52)
8
+
9
+ ### Fixed
10
+ * rake rubocop:diff now gracefully reports ruby syntax errors (#54)
11
+ * Support Rails 6 release candidate
12
+
4
13
  ## 5.2.0 / 2019-03-21
5
14
  ### Added
6
15
  * Added rake task to filter brakeman output to specific fingerprints. (#51)
@@ -3,7 +3,7 @@ file safety:
3
3
  ".gitignore":
4
4
  comments:
5
5
  reviewed_by: josh.pencheon
6
- safe_revision: 3e1fbd0a5931f7598a2dd3f929a7cd8366dc0e96
6
+ safe_revision: f462b71c3359c114eaff872b25f5bb864744dc92
7
7
  ".hound.yml":
8
8
  comments:
9
9
  reviewed_by: timgentry
@@ -15,11 +15,11 @@ file safety:
15
15
  ".travis.yml":
16
16
  comments:
17
17
  reviewed_by: josh.pencheon
18
- safe_revision: 1cce5269b61341c5ec06e91b819df84ac6140165
18
+ safe_revision: f462b71c3359c114eaff872b25f5bb864744dc92
19
19
  CHANGELOG.md:
20
20
  comments:
21
21
  reviewed_by: josh.pencheon
22
- safe_revision: e3afc74e63943e91305df371dfe8ad0e30f8341b
22
+ safe_revision: 9e77154cbe9ee9da8936b21991b00baa008c0629
23
23
  CODE_OF_CONDUCT.md:
24
24
  comments:
25
25
  reviewed_by: timgentry
@@ -48,6 +48,14 @@ file safety:
48
48
  comments:
49
49
  reviewed_by: timgentry
50
50
  safe_revision: c59a45986f8b6d087c8c21b1e889f31f7346da17
51
+ gemfiles/Gemfile.rails52:
52
+ comments:
53
+ reviewed_by: josh.pencheon
54
+ safe_revision: f462b71c3359c114eaff872b25f5bb864744dc92
55
+ gemfiles/Gemfile.rails60:
56
+ comments:
57
+ reviewed_by: josh.pencheon
58
+ safe_revision: f462b71c3359c114eaff872b25f5bb864744dc92
51
59
  lib/minitest/rake_ci.rb:
52
60
  comments:
53
61
  reviewed_by: josh.pencheon
@@ -55,7 +63,7 @@ file safety:
55
63
  lib/minitest/rake_ci_plugin.rb:
56
64
  comments:
57
65
  reviewed_by: josh.pencheon
58
- safe_revision: 9023b4def89e618d3f22333e9fbabd6a816873bf
66
+ safe_revision: f3a5b9d581f7ef463fc1a3075033c39b3397a46b
59
67
  lib/ndr_dev_support.rb:
60
68
  comments:
61
69
  reviewed_by: timgentry
@@ -159,7 +167,7 @@ file safety:
159
167
  lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb:
160
168
  comments:
161
169
  reviewed_by: josh.pencheon
162
- safe_revision: d3347202d1efafc419c1d79d2643f3fdfcbfdd65
170
+ safe_revision: fd9fc5dd275a2285549984688d1d3744a628fd73
163
171
  lib/ndr_dev_support/rake_ci/redmine/ticket_resolver.rb:
164
172
  comments:
165
173
  reviewed_by: josh.pencheon
@@ -171,7 +179,7 @@ file safety:
171
179
  lib/ndr_dev_support/rubocop/executor.rb:
172
180
  comments:
173
181
  reviewed_by: josh.pencheon
174
- safe_revision: 41cf1558f567928faaa1e670a36d941c03c78044
182
+ safe_revision: e56876f46536ba006a9b68029306f41a188bf9c6
175
183
  lib/ndr_dev_support/rubocop/range_augmenter.rb:
176
184
  comments:
177
185
  reviewed_by: joshpencheon
@@ -195,7 +203,7 @@ file safety:
195
203
  lib/ndr_dev_support/version.rb:
196
204
  comments:
197
205
  reviewed_by: josh.pencheon
198
- safe_revision: e3afc74e63943e91305df371dfe8ad0e30f8341b
206
+ safe_revision: 9e77154cbe9ee9da8936b21991b00baa008c0629
199
207
  lib/tasks/audit_code.rake:
200
208
  comments: Identical to the version reviewed by josh.pencheon when contained within
201
209
  ndr_support
@@ -216,7 +224,7 @@ file safety:
216
224
  lib/tasks/ci/dependencies.rake:
217
225
  comments:
218
226
  reviewed_by: josh.pencheon
219
- safe_revision: 5b079c1360f1ccd8efb1f638cdde6a2826e11e96
227
+ safe_revision: 2f22aa6cc2f86b84e0bf2247e73bed205930db5a
220
228
  lib/tasks/ci/housekeep.rake:
221
229
  comments:
222
230
  reviewed_by: timgentry
@@ -264,11 +272,11 @@ file safety:
264
272
  lib/tasks/rubocop.rake:
265
273
  comments:
266
274
  reviewed_by: josh.pencheon
267
- safe_revision: 41cf1558f567928faaa1e670a36d941c03c78044
275
+ safe_revision: 9f33cc3f6fed0c24cb215befa1beaa4bc03e81ef
268
276
  ndr_dev_support.gemspec:
269
277
  comments:
270
278
  reviewed_by: josh.pencheon
271
- safe_revision: 62d99a8df1244b46709b109a86e3edca17325def
279
+ safe_revision: d117ccbb85276b2962936a6c50018ff1d6b5a12a
272
280
  test/daemon/ci_server_test.rb:
273
281
  comments:
274
282
  reviewed_by: josh.pencheon
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec path: '..'
4
+
5
+ gem 'activesupport', '~> 5.2.0'
6
+
7
+ gem 'ndr_support', tag: 'v5.4.0', git: 'https://github.com/PublicHealthEngland/ndr_support'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+ gemspec path: '..'
3
+
4
+ gem 'activesupport', '~> 6.0.0rc1'
5
+
@@ -1,3 +1,4 @@
1
+ require 'active_support/core_ext/string/inflections'
1
2
  require 'minitest'
2
3
  require 'rugged'
3
4
  require 'ndr_dev_support/rake_ci/concerns/commit_metadata_persistable'
@@ -46,6 +47,34 @@ module Minitest
46
47
 
47
48
  private
48
49
 
50
+ def error_snippets
51
+ snippets_for results.reject(&:skipped?).select(&:error?)
52
+ end
53
+
54
+ def failure_snippets
55
+ snippets_for results.reject(&:skipped?).reject(&:error?)
56
+ end
57
+
58
+ # Adapted from Rails' TestUnit reporter
59
+ def snippets_for(results, limit = 5)
60
+ executable = defined?(Rails) ? 'bin/rails test ' : 'bundle exec rake test TEST='
61
+
62
+ snippets = results[0, limit].map do |result|
63
+ location, line =
64
+ if result.respond_to?(:source_location)
65
+ result.source_location
66
+ else
67
+ result.method(result.name).source_location
68
+ end
69
+
70
+ "#{executable}#{location.sub(%r{^#{Dir.pwd}/?}, '')}:#{line}"
71
+ end
72
+
73
+ snippets << "+ #{results.length - limit} more" if (results.length - limit).positive?
74
+
75
+ snippets.any? ? "\n```\n#{snippets.join("\n")}\n```" : ''
76
+ end
77
+
49
78
  def current_statistics
50
79
  @current_statistics ||= {
51
80
  total_time: total_time, runs: count, assertions: assertions, failures: failures,
@@ -83,7 +112,7 @@ module Minitest
83
112
  def failures_attachment
84
113
  {
85
114
  color: 'danger',
86
- text: ActionController::Base.helpers.pluralize(failures, 'test failure'),
115
+ text: 'test failure'.pluralize(failures) + failure_snippets,
87
116
  footer: 'bundle exec rake ci:minitest'
88
117
  }
89
118
  end
@@ -91,7 +120,7 @@ module Minitest
91
120
  def errors_attachment
92
121
  {
93
122
  color: 'warning',
94
- text: ActionController::Base.helpers.pluralize(errors, 'test error'),
123
+ text: 'test error'.pluralize(errors) + error_snippets,
95
124
  footer: 'bundle exec rake ci:minitest'
96
125
  }
97
126
  end
@@ -1,4 +1,5 @@
1
1
  require 'active_support/concern'
2
+ require 'active_support/core_ext/array/wrap'
2
3
  require 'active_support/inflector'
3
4
  require 'yaml'
4
5
 
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'open3'
2
3
  require 'shellwords'
3
4
 
4
5
  module NdrDevSupport
@@ -15,18 +16,34 @@ module NdrDevSupport
15
16
 
16
17
  def initialize(filenames)
17
18
  @filenames = Executor.target_files & filenames
19
+
20
+ check_ruby_syntax
18
21
  end
19
22
 
20
23
  def offenses_by_file
21
24
  return [] if @filenames.empty?
22
25
 
23
- escaped_paths = @filenames.map { |path| Shellwords.escape(path) }
24
26
  output = JSON.parse(`rubocop --format json #{escaped_paths.join(' ')}`)
25
27
 
26
28
  output['files'].each_with_object({}) do |file_output, result|
27
29
  result[file_output['path']] = file_output['offenses']
28
30
  end
29
31
  end
32
+
33
+ private
34
+
35
+ def escaped_paths
36
+ @escaped_paths ||= @filenames.map { |path| Shellwords.escape(path) }
37
+ end
38
+
39
+ def check_ruby_syntax
40
+ escaped_paths.each do |path|
41
+ stdout_and_err_str, status = Open3.capture2e("ruby -c #{path}")
42
+ next if status.exitstatus.zero?
43
+
44
+ raise stdout_and_err_str
45
+ end
46
+ end
30
47
  end
31
48
  end
32
49
  end
@@ -2,5 +2,5 @@
2
2
  # This defines the NdrDevSupport version. If you change it, rebuild and commit the gem.
3
3
  # Use "rake build" to build the gem, see rake -T for all bundler rake tasks (and our own).
4
4
  module NdrDevSupport
5
- VERSION = '5.2.0'.freeze
5
+ VERSION = '5.3.0'.freeze
6
6
  end
@@ -1,9 +1,11 @@
1
+ require 'active_support/core_ext/object/blank'
2
+
1
3
  namespace :ci do
2
4
  namespace :dependencies do
3
5
  desc 'setup'
4
6
  task :setup do
5
7
  require 'highline/import'
6
- ENV['PROJECT_NAME'] = gem_name || ask('Project Name: ')
8
+ ENV['PROJECT_NAME'] = gem_name || ask_for_project_name
7
9
  end
8
10
 
9
11
  desc 'process'
@@ -39,6 +41,13 @@ namespace :ci do
39
41
  end
40
42
  end
41
43
 
44
+ def ask_for_project_name
45
+ dir_name = File.basename(Dir.pwd)
46
+ response = ask("Project Name (leave blank to use '#{dir_name}'): ")
47
+
48
+ response.presence || dir_name
49
+ end
50
+
42
51
  # There is probably a simpler way of getting this information
43
52
  def gem_name
44
53
  self_dependency = Bundler.environment.current_dependencies.detect do |dep|
@@ -71,4 +71,25 @@ namespace :rubocop do
71
71
  rubocop_file_ranges(file_ranges)
72
72
  end
73
73
  end
74
+
75
+ desc 'A summary of offense counts by cop'
76
+ task :summary do
77
+ # Usage: bin/rake rubocop:summary
78
+ require 'json'
79
+
80
+ output = `bundle exec rubocop --format json .`
81
+ offenses = JSON.parse(output)['files'].flat_map { |file| file['offenses'] }
82
+ cop_names = offenses.map { |offense| offense['cop_name'] }
83
+ summary = cop_names.group_by { |x| x }.
84
+ map { |cop_name, array| [cop_name, array.count] }.
85
+ sort_by { |_cop_name, count| count }.
86
+ reverse
87
+ cop_name_max_length = cop_names.map(&:length).max
88
+
89
+ puts "#{'Cop Name'.ljust(cop_name_max_length)} | Count"
90
+ puts "#{'-' * cop_name_max_length}-+------"
91
+ summary.each do |cop_name, count|
92
+ puts "#{cop_name.ljust(cop_name_max_length)} | #{count}"
93
+ end
94
+ end
74
95
  end
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
40
40
  spec.add_dependency 'selenium-webdriver'
41
41
 
42
42
  # CI server dependencies:
43
- spec.add_dependency 'activesupport', '< 6.0.0'
43
+ spec.add_dependency 'activesupport', '< 6.1'
44
44
  spec.add_dependency 'brakeman', '>= 4.2.0'
45
45
  spec.add_dependency 'bundler-audit'
46
46
  spec.add_dependency 'github-linguist'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndr_dev_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-21 00:00:00.000000000 Z
11
+ date: 2019-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "<"
172
172
  - !ruby/object:Gem::Version
173
- version: 6.0.0
173
+ version: '6.1'
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "<"
179
179
  - !ruby/object:Gem::Version
180
- version: 6.0.0
180
+ version: '6.1'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: brakeman
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -364,6 +364,8 @@ files:
364
364
  - bin/console
365
365
  - bin/setup
366
366
  - code_safety.yml
367
+ - gemfiles/Gemfile.rails52
368
+ - gemfiles/Gemfile.rails60
367
369
  - lib/minitest/rake_ci.rb
368
370
  - lib/minitest/rake_ci_plugin.rb
369
371
  - lib/ndr_dev_support.rb
@@ -438,7 +440,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
438
440
  - !ruby/object:Gem::Version
439
441
  version: '0'
440
442
  requirements: []
441
- rubygems_version: 3.0.2
443
+ rubygems_version: 3.0.3
442
444
  signing_key:
443
445
  specification_version: 4
444
446
  summary: NDR Developer Support library