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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07b63ea8d81ee459134b9050fe9de402b50f79b0ad32139d73d90e6e26b7053c
4
- data.tar.gz: 3479a5ccbd481bae7528036b8ba0cf20aba3676c99ca0f4c4b68f20920df35d0
3
+ metadata.gz: 26e129c80b20dc919836108bc0b10b78c58021743f79bba269a31482fc6e88d8
4
+ data.tar.gz: 1ce0eb57048afe75868e24f77813d569dc09a4283cbc65703ad042e4bc3ec6c0
5
5
  SHA512:
6
- metadata.gz: feee00d50b38a0e07f7f2817b580d9236b177a85ff949f18662e5dcd90488b8a85b8d3851655a922356f35f8e78f0fcab0aeea0a9d9a8c99c9cc89c7d2b71e51
7
- data.tar.gz: 1f12d9c909139011e27e6c185289d97189d63c7bf8949e09b49767aeee3edef302f33385528a8a301775361799308fcc73d7d7b0193015d493b5b2eae2dde40c
6
+ metadata.gz: da84e06b1a78ef2c281d51a95f087efbd13dea1509f66203d54afa6009fb5cc20bc650d878b6c860d491666263d66f80801c25cc5623900e5f19e1d38c7a039b
7
+ data.tar.gz: 9ee2faf347c3d4a475b0ba0cce515b4477d4f9fd3043454c8e51466c9e69a6b4905ef0db9e3157ab42c4c2e2eb4ff0a348ee34bce7be32c5f01848e33dc59e7f
@@ -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)
@@ -15,11 +15,11 @@ file safety:
15
15
  ".travis.yml":
16
16
  comments:
17
17
  reviewed_by: josh.pencheon
18
- safe_revision: 8faa3e5e7ba5ef29daa1a857c8c15702f57c5a3f
18
+ safe_revision: 1cce5269b61341c5ec06e91b819df84ac6140165
19
19
  CHANGELOG.md:
20
20
  comments:
21
21
  reviewed_by: josh.pencheon
22
- safe_revision: a73717bdeb9f48c257aec4fa41a19735e99555c8
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: eec7079a777c84f61b05c236df60195d4ddcf488
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: 0677afc93b0a64d56383e80fa1247e5be64bfb24
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: e0b3871607c649565330d6e62740ffd860930338
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: a3f5b7d3709f7e340f2f7e81dab026a63b21e3ff
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: a73717bdeb9f48c257aec4fa41a19735e99555c8
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: 6cb22447594ebf450fc60deb90fd223c8067ff18
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: d8e52aab569d9efac3e27485b5721c9608a84b6c
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: 3e1fbd0a5931f7598a2dd3f929a7cd8366dc0e96
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:
@@ -56,7 +56,7 @@ module NdrDevSupport
56
56
  WithCleanRbenv.with_clean_rbenv do
57
57
  # TODO: rbenv_install
58
58
  bundle_install
59
- system('rbenv exec bundle exec rake ci:all')
59
+ system('rbenv exec bundle exec rake ci:all --trace')
60
60
  git_discard_changes
61
61
  end
62
62
  end
@@ -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
@@ -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 = '4.2.1'.freeze
5
+ VERSION = '5.0.0'.freeze
6
6
  end
@@ -43,9 +43,22 @@ namespace :ci do
43
43
  end
44
44
  end
45
45
 
46
- Prometheus::Client::Push.new(
47
- 'rake-ci-job', nil, ENV['PROMETHEUS_PUSHGATEWAY']
48
- ).add(prometheus)
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
@@ -4,8 +4,8 @@ namespace :ci do
4
4
 
5
5
  desc 'publish'
6
6
  task publish: [
7
- 'ci:slack:publish',
8
- 'ci:prometheus:publish'
7
+ 'ci:prometheus:publish',
8
+ 'ci:slack:publish'
9
9
  ]
10
10
 
11
11
  desc 'Runs the Rake CI server'
@@ -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.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.2.1
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: 2018-12-18 00:00:00.000000000 Z
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: '0'
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: '0'
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.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
- rubyforge_project:
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