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 +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +9 -0
- data/code_safety.yml +18 -10
- data/gemfiles/Gemfile.rails52 +7 -0
- data/gemfiles/Gemfile.rails60 +5 -0
- data/lib/minitest/rake_ci_plugin.rb +31 -2
- data/lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb +1 -0
- data/lib/ndr_dev_support/rubocop/executor.rb +18 -1
- data/lib/ndr_dev_support/version.rb +1 -1
- data/lib/tasks/ci/dependencies.rake +10 -1
- data/lib/tasks/rubocop.rake +21 -0
- data/ndr_dev_support.gemspec +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0888d5815e584f9a19a63639faf323ccd24c0918645c623f1648167e8a3e1cba'
|
4
|
+
data.tar.gz: a8cd571529741d2dcebbf6d6f78f754586753a26ca24fa3bd3a9fd007a384635
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a38a7122c12eadd4521cbd06e898c80c316605596e06bfc71d70d192bed1a4285c9988dfb5200ebec5b0c1b6ccd0af0e3a1a0e8ec281dba3fb9691b553937864
|
7
|
+
data.tar.gz: 499aa9c741b54ef41af36023a306ec23c0b3caaffd4f1f5eea5e3c4158c298037d22e226ce92e0f4fbd56e99ea67044e84eb3c7147bbdb86ff58dabbe458aac5
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -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)
|
data/code_safety.yml
CHANGED
@@ -3,7 +3,7 @@ file safety:
|
|
3
3
|
".gitignore":
|
4
4
|
comments:
|
5
5
|
reviewed_by: josh.pencheon
|
6
|
-
safe_revision:
|
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:
|
18
|
+
safe_revision: f462b71c3359c114eaff872b25f5bb864744dc92
|
19
19
|
CHANGELOG.md:
|
20
20
|
comments:
|
21
21
|
reviewed_by: josh.pencheon
|
22
|
-
safe_revision:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
275
|
+
safe_revision: 9f33cc3f6fed0c24cb215befa1beaa4bc03e81ef
|
268
276
|
ndr_dev_support.gemspec:
|
269
277
|
comments:
|
270
278
|
reviewed_by: josh.pencheon
|
271
|
-
safe_revision:
|
279
|
+
safe_revision: d117ccbb85276b2962936a6c50018ff1d6b5a12a
|
272
280
|
test/daemon/ci_server_test.rb:
|
273
281
|
comments:
|
274
282
|
reviewed_by: josh.pencheon
|
@@ -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:
|
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:
|
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 '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
|
@@ -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 ||
|
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|
|
data/lib/tasks/rubocop.rake
CHANGED
@@ -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
|
data/ndr_dev_support.gemspec
CHANGED
@@ -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.
|
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.
|
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-
|
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.
|
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.
|
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.
|
443
|
+
rubygems_version: 3.0.3
|
442
444
|
signing_key:
|
443
445
|
specification_version: 4
|
444
446
|
summary: NDR Developer Support library
|