ndr_dev_support 5.2.0 → 5.3.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
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