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 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