ndr_dev_support 4.2.1 → 5.0.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/CHANGELOG.md +12 -0
- data/code_safety.yml +18 -10
- data/lib/ndr_dev_support/capistrano/ndr_model.rb +3 -0
- data/lib/ndr_dev_support/daemon/ci_server.rb +1 -1
- data/lib/ndr_dev_support/integration_testing.rb +7 -0
- data/lib/ndr_dev_support/rake_ci/commit_cop.rb +15 -0
- data/lib/ndr_dev_support/rake_ci/commit_cop/missing_associated_test_file.rb +33 -0
- data/lib/ndr_dev_support/version.rb +1 -1
- data/lib/tasks/ci/prometheus.rake +16 -3
- data/lib/tasks/ci/server.rake +2 -2
- data/ndr_dev_support.gemspec +3 -2
- metadata +21 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26e129c80b20dc919836108bc0b10b78c58021743f79bba269a31482fc6e88d8
|
|
4
|
+
data.tar.gz: 1ce0eb57048afe75868e24f77813d569dc09a4283cbc65703ad042e4bc3ec6c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: da84e06b1a78ef2c281d51a95f087efbd13dea1509f66203d54afa6009fb5cc20bc650d878b6c860d491666263d66f80801c25cc5623900e5f19e1d38c7a039b
|
|
7
|
+
data.tar.gz: 9ee2faf347c3d4a475b0ba0cce515b4477d4f9fd3043454c8e51466c9e69a6b4905ef0db9e3157ab42c4c2e2eb4ff0a348ee34bce7be32c5f01848e33dc59e7f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
*no unreleased changes*
|
|
3
3
|
|
|
4
|
+
## 5.0.0 / 2019-01-31
|
|
5
|
+
### Changed
|
|
6
|
+
* Setting the Capybara save path and prune strategy. Resolves #45 (#46)
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
* Added an additional cop to check commits for missing associated test files.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
* capistrano: address filesystem issue with using NDR-model in mixed-mode project
|
|
13
|
+
* support Ruby 2.6. Minimum version is now 2.4
|
|
14
|
+
* ci_server: don't crash out if the prometheus gateway is unreachable
|
|
15
|
+
|
|
4
16
|
## 4.2.1 / 2018-12-18
|
|
5
17
|
### Fixed
|
|
6
18
|
* ci_server: improve logging and error handling (#44)
|
data/code_safety.yml
CHANGED
|
@@ -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: 1cce5269b61341c5ec06e91b819df84ac6140165
|
|
19
19
|
CHANGELOG.md:
|
|
20
20
|
comments:
|
|
21
21
|
reviewed_by: josh.pencheon
|
|
22
|
-
safe_revision:
|
|
22
|
+
safe_revision: a225ce0f0bd125b8dce9b31f9766dd8703fb495e
|
|
23
23
|
CODE_OF_CONDUCT.md:
|
|
24
24
|
comments:
|
|
25
25
|
reviewed_by: timgentry
|
|
@@ -67,7 +67,7 @@ file safety:
|
|
|
67
67
|
lib/ndr_dev_support/capistrano/ndr_model.rb:
|
|
68
68
|
comments:
|
|
69
69
|
reviewed_by: josh.pencheon
|
|
70
|
-
safe_revision:
|
|
70
|
+
safe_revision: 809acebc212beaaf23e6d73ae4d9b87382c2d087
|
|
71
71
|
lib/ndr_dev_support/capistrano/restart.rb:
|
|
72
72
|
comments:
|
|
73
73
|
reviewed_by: josh.pencheon
|
|
@@ -95,7 +95,7 @@ file safety:
|
|
|
95
95
|
lib/ndr_dev_support/daemon/ci_server.rb:
|
|
96
96
|
comments:
|
|
97
97
|
reviewed_by: josh.pencheon
|
|
98
|
-
safe_revision:
|
|
98
|
+
safe_revision: fe8682a3300a322c5f6b9a17dce471f11fa5e307
|
|
99
99
|
lib/ndr_dev_support/daemon/stoppable.rb:
|
|
100
100
|
comments:
|
|
101
101
|
reviewed_by: josh.pencheon
|
|
@@ -103,7 +103,7 @@ file safety:
|
|
|
103
103
|
lib/ndr_dev_support/integration_testing.rb:
|
|
104
104
|
comments:
|
|
105
105
|
reviewed_by: josh.pencheon
|
|
106
|
-
safe_revision:
|
|
106
|
+
safe_revision: 0bca06801c072832f32b7abd8559888b91e9b337
|
|
107
107
|
lib/ndr_dev_support/integration_testing/drivers/chrome.rb:
|
|
108
108
|
comments:
|
|
109
109
|
reviewed_by: josh.pencheon
|
|
@@ -135,7 +135,7 @@ file safety:
|
|
|
135
135
|
lib/ndr_dev_support/rake_ci/commit_cop.rb:
|
|
136
136
|
comments:
|
|
137
137
|
reviewed_by: josh.pencheon
|
|
138
|
-
safe_revision:
|
|
138
|
+
safe_revision: '01682912c2fc526b0bc29e2836de0aea31c65b12'
|
|
139
139
|
lib/ndr_dev_support/rake_ci/commit_cop/concerns/deputisable.rb:
|
|
140
140
|
comments:
|
|
141
141
|
reviewed_by: josh.pencheon
|
|
@@ -144,6 +144,10 @@ file safety:
|
|
|
144
144
|
comments:
|
|
145
145
|
reviewed_by: josh.pencheon
|
|
146
146
|
safe_revision: a3f5b7d3709f7e340f2f7e81dab026a63b21e3ff
|
|
147
|
+
lib/ndr_dev_support/rake_ci/commit_cop/missing_associated_test_file.rb:
|
|
148
|
+
comments:
|
|
149
|
+
reviewed_by: josh.pencheon
|
|
150
|
+
safe_revision: '01682912c2fc526b0bc29e2836de0aea31c65b12'
|
|
147
151
|
lib/ndr_dev_support/rake_ci/commit_cop/modified_migration.rb:
|
|
148
152
|
comments:
|
|
149
153
|
reviewed_by: josh.pencheon
|
|
@@ -191,7 +195,7 @@ file safety:
|
|
|
191
195
|
lib/ndr_dev_support/version.rb:
|
|
192
196
|
comments:
|
|
193
197
|
reviewed_by: josh.pencheon
|
|
194
|
-
safe_revision:
|
|
198
|
+
safe_revision: a225ce0f0bd125b8dce9b31f9766dd8703fb495e
|
|
195
199
|
lib/tasks/audit_code.rake:
|
|
196
200
|
comments: Identical to the version reviewed by josh.pencheon when contained within
|
|
197
201
|
ndr_support
|
|
@@ -232,7 +236,7 @@ file safety:
|
|
|
232
236
|
lib/tasks/ci/prometheus.rake:
|
|
233
237
|
comments:
|
|
234
238
|
reviewed_by: josh.pencheon
|
|
235
|
-
safe_revision:
|
|
239
|
+
safe_revision: fe8682a3300a322c5f6b9a17dce471f11fa5e307
|
|
236
240
|
lib/tasks/ci/redmine.rake:
|
|
237
241
|
comments:
|
|
238
242
|
reviewed_by: josh.pencheon
|
|
@@ -244,7 +248,7 @@ file safety:
|
|
|
244
248
|
lib/tasks/ci/server.rake:
|
|
245
249
|
comments:
|
|
246
250
|
reviewed_by: josh.pencheon
|
|
247
|
-
safe_revision:
|
|
251
|
+
safe_revision: fe8682a3300a322c5f6b9a17dce471f11fa5e307
|
|
248
252
|
lib/tasks/ci/simplecov.rake:
|
|
249
253
|
comments:
|
|
250
254
|
reviewed_by: josh.pencheon
|
|
@@ -264,7 +268,7 @@ file safety:
|
|
|
264
268
|
ndr_dev_support.gemspec:
|
|
265
269
|
comments:
|
|
266
270
|
reviewed_by: josh.pencheon
|
|
267
|
-
safe_revision:
|
|
271
|
+
safe_revision: 1cce5269b61341c5ec06e91b819df84ac6140165
|
|
268
272
|
test/daemon/ci_server_test.rb:
|
|
269
273
|
comments:
|
|
270
274
|
reviewed_by: josh.pencheon
|
|
@@ -277,6 +281,10 @@ file safety:
|
|
|
277
281
|
comments:
|
|
278
282
|
reviewed_by: josh.pencheon
|
|
279
283
|
safe_revision: a3f5b7d3709f7e340f2f7e81dab026a63b21e3ff
|
|
284
|
+
test/rake_ci/commit_cop/missing_associated_test_file_test.rb:
|
|
285
|
+
comments:
|
|
286
|
+
reviewed_by: josh.pencheon
|
|
287
|
+
safe_revision: '01682912c2fc526b0bc29e2836de0aea31c65b12'
|
|
280
288
|
test/rake_ci/commit_cop/modified_migration_test.rb:
|
|
281
289
|
comments:
|
|
282
290
|
reviewed_by: josh.pencheon
|
|
@@ -122,6 +122,9 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
|
122
122
|
|
|
123
123
|
desc 'Symlink to the release any :shared_paths, ensure private/ is writeable'
|
|
124
124
|
task :filesystem_tweaks do
|
|
125
|
+
# This task binds after a standard capistrano step, so we need to be careful:
|
|
126
|
+
next unless ndr_model_deployment
|
|
127
|
+
|
|
125
128
|
fetch(:shared_paths, []).each do |path|
|
|
126
129
|
# Symlink `path` from the shared space to the release being prepared, replacing anything
|
|
127
130
|
# already there:
|
|
@@ -3,6 +3,10 @@ require 'capybara/rails'
|
|
|
3
3
|
ActionDispatch::IntegrationTest.include(Capybara::DSL)
|
|
4
4
|
|
|
5
5
|
# Set up basic screenshotting capability:
|
|
6
|
+
#
|
|
7
|
+
# TODO: Once Rails 5.1 is the minimum version we support, we should be able to
|
|
8
|
+
# use the built-in behaviour that Rails adds to after_teardown.
|
|
9
|
+
#
|
|
6
10
|
require 'capybara-screenshot'
|
|
7
11
|
if defined?(MiniTest)
|
|
8
12
|
require 'capybara-screenshot/minitest'
|
|
@@ -23,3 +27,6 @@ require 'ndr_dev_support/integration_testing/drivers/switchable'
|
|
|
23
27
|
|
|
24
28
|
Capybara.default_driver = :switchable
|
|
25
29
|
Capybara.javascript_driver = :switchable
|
|
30
|
+
|
|
31
|
+
Capybara.save_path = Rails.root.join('tmp', 'screenshots')
|
|
32
|
+
Capybara::Screenshot.prune_strategy = { keep: 20 }
|
|
@@ -2,6 +2,7 @@ require 'active_support/core_ext/module/attribute_accessors'
|
|
|
2
2
|
require_relative 'commit_cop/migration_without_structure_dump'
|
|
3
3
|
require_relative 'commit_cop/modified_migration'
|
|
4
4
|
require_relative 'commit_cop/renamed_migration'
|
|
5
|
+
require_relative 'commit_cop/missing_associated_test_file'
|
|
5
6
|
|
|
6
7
|
module NdrDevSupport
|
|
7
8
|
module RakeCI
|
|
@@ -16,12 +17,26 @@ module NdrDevSupport
|
|
|
16
17
|
[]
|
|
17
18
|
end
|
|
18
19
|
|
|
20
|
+
# This defines the regular expression that identifies the path to application files
|
|
21
|
+
# that you would expect to have associated test files.
|
|
22
|
+
mattr_accessor :tested_paths
|
|
23
|
+
self.tested_paths =
|
|
24
|
+
if defined?(Rails)
|
|
25
|
+
Rails.application.config.paths.values_at('app/controllers',
|
|
26
|
+
'app/helpers',
|
|
27
|
+
'app/models',
|
|
28
|
+
'app/mailers').flat_map { |obj| obj.map(&:to_s) }
|
|
29
|
+
else
|
|
30
|
+
[]
|
|
31
|
+
end
|
|
32
|
+
|
|
19
33
|
# This defines the regular expression that identifies structure dump files.
|
|
20
34
|
mattr_accessor :structure_dump_pattern
|
|
21
35
|
self.structure_dump_pattern = %r{\Adb/(structure\.sql|schema\.rb)\z}
|
|
22
36
|
|
|
23
37
|
COMMIT_COPS = [
|
|
24
38
|
MigrationWithoutStructureDump,
|
|
39
|
+
MissingAssociatedTestFile,
|
|
25
40
|
ModifiedMigration,
|
|
26
41
|
RenamedMigration
|
|
27
42
|
].freeze
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require_relative 'concerns/deputisable'
|
|
2
|
+
|
|
3
|
+
module NdrDevSupport
|
|
4
|
+
module RakeCI
|
|
5
|
+
module CommitCop
|
|
6
|
+
# This cop checks for new controllers, helpers,
|
|
7
|
+
# mailers and models without a new, associated test file
|
|
8
|
+
class MissingAssociatedTestFile
|
|
9
|
+
include Deputisable
|
|
10
|
+
|
|
11
|
+
def check(changes)
|
|
12
|
+
added = changes[:added]
|
|
13
|
+
return unless added.any?
|
|
14
|
+
|
|
15
|
+
tested_paths = CommitCop.tested_paths.join('|')
|
|
16
|
+
monitored_files = added.select { |file| file =~ %r{((#{tested_paths})\/.*\.rb)} }
|
|
17
|
+
|
|
18
|
+
files_without_tests = monitored_files.reduce([]) do |missing_tests, monitored_file|
|
|
19
|
+
test_file = monitored_file.gsub(%r{\A\w+\/(.*)\.rb\z}, 'test/\1_test.rb')
|
|
20
|
+
added.include?(test_file) ? missing_tests : missing_tests << monitored_file
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
return if files_without_tests.empty?
|
|
24
|
+
|
|
25
|
+
attachment :danger,
|
|
26
|
+
'No associated test file committed',
|
|
27
|
+
"File(s) submitted without an associated test file:\n" \
|
|
28
|
+
"#{files_without_tests.join("\n")}"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -43,9 +43,22 @@ namespace :ci do
|
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
Prometheus::Client::Push.new(
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
client = Prometheus::Client::Push.new('rake-ci-job', nil, ENV['PROMETHEUS_PUSHGATEWAY'])
|
|
47
|
+
|
|
48
|
+
begin
|
|
49
|
+
client.add(prometheus)
|
|
50
|
+
rescue Errno::ECONNREFUSED => exception
|
|
51
|
+
warn "Failed to push metrics to Prometheus: #{exception.message}"
|
|
52
|
+
|
|
53
|
+
@attachments ||= []
|
|
54
|
+
@attachments << {
|
|
55
|
+
color: 'danger',
|
|
56
|
+
title: 'Publishing Error',
|
|
57
|
+
text: 'Build metrics could not be pushed - the Prometheus gateway was uncontactable',
|
|
58
|
+
footer: 'bundle exec rake ci:prometheus:publish',
|
|
59
|
+
mrkdwn_in: ['text']
|
|
60
|
+
}
|
|
61
|
+
end
|
|
49
62
|
end
|
|
50
63
|
end
|
|
51
64
|
end
|
data/lib/tasks/ci/server.rake
CHANGED
data/ndr_dev_support.gemspec
CHANGED
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
20
20
|
spec.require_paths = ['lib']
|
|
21
21
|
|
|
22
|
-
spec.required_ruby_version = '>= 2.
|
|
22
|
+
spec.required_ruby_version = '>= 2.4'
|
|
23
23
|
|
|
24
24
|
spec.add_dependency 'pry'
|
|
25
25
|
|
|
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
spec.add_dependency 'parser'
|
|
31
31
|
spec.add_dependency 'rainbow'
|
|
32
32
|
spec.add_dependency 'rubocop', '0.52.1'
|
|
33
|
+
spec.add_dependency 'unicode-display_width', '>= 1.3.3'
|
|
33
34
|
|
|
34
35
|
# Integration test dependencies:
|
|
35
36
|
spec.add_dependency 'capybara'
|
|
@@ -43,7 +44,7 @@ Gem::Specification.new do |spec|
|
|
|
43
44
|
spec.add_dependency 'brakeman', '>= 4.2.0'
|
|
44
45
|
spec.add_dependency 'bundler-audit'
|
|
45
46
|
spec.add_dependency 'github-linguist'
|
|
46
|
-
spec.add_dependency 'prometheus-client'
|
|
47
|
+
spec.add_dependency 'prometheus-client', '>= 0.9.0'
|
|
47
48
|
spec.add_dependency 'rugged'
|
|
48
49
|
spec.add_dependency 'simplecov'
|
|
49
50
|
spec.add_dependency 'with_clean_rbenv'
|
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:
|
|
4
|
+
version: 5.0.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:
|
|
11
|
+
date: 2019-01-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pry
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: 0.52.1
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: unicode-display_width
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: 1.3.3
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: 1.3.3
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: capybara
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -212,14 +226,14 @@ dependencies:
|
|
|
212
226
|
requirements:
|
|
213
227
|
- - ">="
|
|
214
228
|
- !ruby/object:Gem::Version
|
|
215
|
-
version:
|
|
229
|
+
version: 0.9.0
|
|
216
230
|
type: :runtime
|
|
217
231
|
prerelease: false
|
|
218
232
|
version_requirements: !ruby/object:Gem::Requirement
|
|
219
233
|
requirements:
|
|
220
234
|
- - ">="
|
|
221
235
|
- !ruby/object:Gem::Version
|
|
222
|
-
version:
|
|
236
|
+
version: 0.9.0
|
|
223
237
|
- !ruby/object:Gem::Dependency
|
|
224
238
|
name: rugged
|
|
225
239
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -374,6 +388,7 @@ files:
|
|
|
374
388
|
- lib/ndr_dev_support/rake_ci/commit_cop.rb
|
|
375
389
|
- lib/ndr_dev_support/rake_ci/commit_cop/concerns/deputisable.rb
|
|
376
390
|
- lib/ndr_dev_support/rake_ci/commit_cop/migration_without_structure_dump.rb
|
|
391
|
+
- lib/ndr_dev_support/rake_ci/commit_cop/missing_associated_test_file.rb
|
|
377
392
|
- lib/ndr_dev_support/rake_ci/commit_cop/modified_migration.rb
|
|
378
393
|
- lib/ndr_dev_support/rake_ci/commit_cop/renamed_migration.rb
|
|
379
394
|
- lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb
|
|
@@ -416,15 +431,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
416
431
|
requirements:
|
|
417
432
|
- - ">="
|
|
418
433
|
- !ruby/object:Gem::Version
|
|
419
|
-
version: '2.
|
|
434
|
+
version: '2.4'
|
|
420
435
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
421
436
|
requirements:
|
|
422
437
|
- - ">="
|
|
423
438
|
- !ruby/object:Gem::Version
|
|
424
439
|
version: '0'
|
|
425
440
|
requirements: []
|
|
426
|
-
|
|
427
|
-
rubygems_version: 2.7.6
|
|
441
|
+
rubygems_version: 3.0.2
|
|
428
442
|
signing_key:
|
|
429
443
|
specification_version: 4
|
|
430
444
|
summary: NDR Developer Support library
|