ndr_dev_support 4.2.1 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|