ndr_dev_support 2.1.2 → 3.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.
Files changed (38) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +23 -4
  3. data/README.md +24 -31
  4. data/code_safety.yml +99 -19
  5. data/lib/ndr_dev_support/daemon/ci_server.rb +94 -0
  6. data/lib/ndr_dev_support/daemon/stoppable.rb +111 -0
  7. data/lib/ndr_dev_support/integration_testing.rb +25 -3
  8. data/lib/ndr_dev_support/integration_testing/drivers/chrome.rb +9 -0
  9. data/lib/ndr_dev_support/integration_testing/drivers/chrome_headless.rb +17 -0
  10. data/lib/ndr_dev_support/integration_testing/drivers/firefox.rb +9 -0
  11. data/lib/ndr_dev_support/integration_testing/drivers/poltergeist.rb +15 -0
  12. data/lib/ndr_dev_support/integration_testing/drivers/switchable.rb +21 -0
  13. data/lib/ndr_dev_support/integration_testing/dsl.rb +62 -0
  14. data/lib/ndr_dev_support/rake_ci/brakeman_helper.rb +48 -0
  15. data/lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb +49 -0
  16. data/lib/ndr_dev_support/rake_ci/simple_cov_helper.rb +26 -0
  17. data/lib/ndr_dev_support/slack_message_publisher.rb +48 -0
  18. data/lib/ndr_dev_support/tasks.rb +12 -0
  19. data/lib/ndr_dev_support/version.rb +1 -1
  20. data/lib/tasks/audit_code.rake +94 -92
  21. data/lib/tasks/ci/brakeman.rake +54 -0
  22. data/lib/tasks/ci/bundle_audit.rake +45 -0
  23. data/lib/tasks/ci/bundle_install.rake +21 -0
  24. data/lib/tasks/ci/housekeep.rake +8 -0
  25. data/lib/tasks/ci/linguist.rake +42 -0
  26. data/lib/tasks/ci/notes.rake +30 -0
  27. data/lib/tasks/ci/prometheus.rake +50 -0
  28. data/lib/tasks/ci/rugged.rake +39 -0
  29. data/lib/tasks/ci/server.rake +12 -0
  30. data/lib/tasks/ci/simplecov.rake +37 -0
  31. data/lib/tasks/ci/slack.rake +30 -0
  32. data/lib/tasks/ci/stats.rake +24 -0
  33. data/ndr_dev_support.gemspec +15 -3
  34. metadata +164 -18
  35. data/lib/ndr_dev_support/integration_testing/capybara.rb +0 -3
  36. data/lib/ndr_dev_support/integration_testing/connection_sharing.rb +0 -47
  37. data/lib/ndr_dev_support/integration_testing/poltergeist.rb +0 -39
  38. data/lib/ndr_dev_support/integration_testing/screenshot.rb +0 -51
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: 2.1.2
4
+ version: 3.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-03-02 00:00:00.000000000 Z
11
+ date: 2018-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rubocop
28
+ name: highline
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.52.1
33
+ version: 1.6.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.52.1
40
+ version: 1.6.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: parser
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.52.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.52.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: capybara
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: chromedriver-helper
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: poltergeist
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,104 @@ dependencies:
108
136
  - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: 1.8.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: selenium-webdriver
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: activesupport
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "<"
158
+ - !ruby/object:Gem::Version
159
+ version: 6.0.0
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "<"
165
+ - !ruby/object:Gem::Version
166
+ version: 6.0.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: brakeman
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: 4.2.0
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: 4.2.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: bundler-audit
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: github-linguist
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: prometheus-client
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rugged
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
111
237
  - !ruby/object:Gem::Dependency
112
238
  name: bundler
113
239
  requirement: !ruby/object:Gem::Requirement
@@ -123,33 +249,33 @@ dependencies:
123
249
  - !ruby/object:Gem::Version
124
250
  version: '1.7'
125
251
  - !ruby/object:Gem::Dependency
126
- name: rake
252
+ name: minitest
127
253
  requirement: !ruby/object:Gem::Requirement
128
254
  requirements:
129
255
  - - "~>"
130
256
  - !ruby/object:Gem::Version
131
- version: '10.0'
257
+ version: '5.0'
132
258
  type: :development
133
259
  prerelease: false
134
260
  version_requirements: !ruby/object:Gem::Requirement
135
261
  requirements:
136
262
  - - "~>"
137
263
  - !ruby/object:Gem::Version
138
- version: '10.0'
264
+ version: '5.0'
139
265
  - !ruby/object:Gem::Dependency
140
- name: minitest
266
+ name: rake
141
267
  requirement: !ruby/object:Gem::Requirement
142
268
  requirements:
143
269
  - - "~>"
144
270
  - !ruby/object:Gem::Version
145
- version: '5.0'
271
+ version: '10.0'
146
272
  type: :development
147
273
  prerelease: false
148
274
  version_requirements: !ruby/object:Gem::Requirement
149
275
  requirements:
150
276
  - - "~>"
151
277
  - !ruby/object:Gem::Version
152
- version: '5.0'
278
+ version: '10.0'
153
279
  description: Provides support to developers of NDR projects
154
280
  email: []
155
281
  executables: []
@@ -169,18 +295,38 @@ files:
169
295
  - bin/setup
170
296
  - code_safety.yml
171
297
  - lib/ndr_dev_support.rb
298
+ - lib/ndr_dev_support/daemon/ci_server.rb
299
+ - lib/ndr_dev_support/daemon/stoppable.rb
172
300
  - lib/ndr_dev_support/integration_testing.rb
173
- - lib/ndr_dev_support/integration_testing/capybara.rb
174
- - lib/ndr_dev_support/integration_testing/connection_sharing.rb
175
- - lib/ndr_dev_support/integration_testing/poltergeist.rb
176
- - lib/ndr_dev_support/integration_testing/screenshot.rb
301
+ - lib/ndr_dev_support/integration_testing/drivers/chrome.rb
302
+ - lib/ndr_dev_support/integration_testing/drivers/chrome_headless.rb
303
+ - lib/ndr_dev_support/integration_testing/drivers/firefox.rb
304
+ - lib/ndr_dev_support/integration_testing/drivers/poltergeist.rb
305
+ - lib/ndr_dev_support/integration_testing/drivers/switchable.rb
306
+ - lib/ndr_dev_support/integration_testing/dsl.rb
307
+ - lib/ndr_dev_support/rake_ci/brakeman_helper.rb
308
+ - lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb
309
+ - lib/ndr_dev_support/rake_ci/simple_cov_helper.rb
177
310
  - lib/ndr_dev_support/rubocop/executor.rb
178
311
  - lib/ndr_dev_support/rubocop/range_augmenter.rb
179
312
  - lib/ndr_dev_support/rubocop/range_finder.rb
180
313
  - lib/ndr_dev_support/rubocop/reporter.rb
314
+ - lib/ndr_dev_support/slack_message_publisher.rb
181
315
  - lib/ndr_dev_support/tasks.rb
182
316
  - lib/ndr_dev_support/version.rb
183
317
  - lib/tasks/audit_code.rake
318
+ - lib/tasks/ci/brakeman.rake
319
+ - lib/tasks/ci/bundle_audit.rake
320
+ - lib/tasks/ci/bundle_install.rake
321
+ - lib/tasks/ci/housekeep.rake
322
+ - lib/tasks/ci/linguist.rake
323
+ - lib/tasks/ci/notes.rake
324
+ - lib/tasks/ci/prometheus.rake
325
+ - lib/tasks/ci/rugged.rake
326
+ - lib/tasks/ci/server.rake
327
+ - lib/tasks/ci/simplecov.rake
328
+ - lib/tasks/ci/slack.rake
329
+ - lib/tasks/ci/stats.rake
184
330
  - lib/tasks/rubocop.rake
185
331
  - ndr_dev_support.gemspec
186
332
  homepage: https://github.com/PublicHealthEngland/ndr_dev_support
@@ -203,7 +349,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
349
  version: '0'
204
350
  requirements: []
205
351
  rubyforge_project:
206
- rubygems_version: 2.5.1
352
+ rubygems_version: 2.7.6
207
353
  signing_key:
208
354
  specification_version: 4
209
355
  summary: NDR Developer Support library
@@ -1,3 +0,0 @@
1
- require 'capybara/rails'
2
-
3
- ActionDispatch::IntegrationTest.include(Capybara::DSL)
@@ -1,47 +0,0 @@
1
- module NdrDevSupport
2
- module IntegrationTesting
3
- # ==========================================================================
4
- #
5
- # !! Caution - please read carefully !!
6
- #
7
- # This approach to connection sharing is known to be susceptible
8
- # to race conditions. Anecdotally, we've managed to avoid this
9
- # being a problem with Oracle because of the use of the confuration
10
- #
11
- # ActiveRecord::Base.connection.raw_connection.non_blocking = false
12
- #
13
- # which prevents the C extension in the adapter being able to run
14
- # non-blocking code (i.e. outside of the control of the global interpretter
15
- # lock). On Postgres, we haven't employed an equivalent workaround.
16
- #
17
- # For a more resilient alternative, please use the 'database_cleaner'
18
- # gem (see README for details).
19
- #
20
- # ==========================================================================
21
- #
22
- # Capybara starts another rails application in a new thread
23
- # to test against. For transactional fixtures to work, we need
24
- # to share the database connection between threads.
25
- #
26
- # Derived from: https://gist.github.com/josevalim/470808
27
- #
28
- # Modified to support multiple connection pools
29
- #
30
- module ConnectionSharing
31
- def self.prepended(base)
32
- base.mattr_accessor :shared_connections
33
- base.shared_connections = {}
34
-
35
- base.singleton_class.prepend(ClassMethods)
36
- end
37
-
38
- module ClassMethods
39
- def connection
40
- shared_connections[connection_config] ||= retrieve_connection
41
- end
42
- end
43
- end
44
- end
45
- end
46
-
47
- ActiveRecord::Base.prepend(NdrDevSupport::IntegrationTesting::ConnectionSharing)
@@ -1,39 +0,0 @@
1
- require 'capybara/poltergeist'
2
-
3
- module NdrDevSupport
4
- module IntegrationTesting
5
- module Poltergeist
6
- # Additional testing DSL, for phantomjs-specific interactions.
7
- module DSL
8
- # Instruct phantomjs to clear its session:
9
- def clear_headless_session!
10
- page.driver.reset!
11
- end
12
-
13
- # Get phantomjs to delete all of the cookies
14
- # for the current page without resetting:
15
- def delete_all_cookies!
16
- page.driver.cookies.each do |name, value|
17
- page.driver.remove_cookie(name)
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
24
-
25
- ActionDispatch::IntegrationTest.include(NdrDevSupport::IntegrationTesting::Poltergeist::DSL)
26
-
27
- # Register poltergeist as an available driver for capybara to use:
28
- Capybara.register_driver :poltergeist do |app|
29
- options = { phantomjs_options: ['--proxy-type=none'], timeout: 60 }
30
-
31
- # If Ruby warn level is high, switch on additional output.
32
- options.merge!(debug: true, inspector: true) if $VERBOSE
33
-
34
- Capybara::Poltergeist::Driver.new(app, options)
35
- end
36
-
37
- # ...and make it the default:
38
- Capybara.default_driver = :poltergeist
39
- Capybara.javascript_driver = :poltergeist
@@ -1,51 +0,0 @@
1
- require 'capybara-screenshot'
2
-
3
- module NdrDevSupport
4
- module IntegrationTesting
5
- module Screenshot
6
- # Allow integration tests to open screenshotable popup windows.
7
- module DSL
8
- delegate :within_screenshot_compatible_window, to: :page
9
- end
10
-
11
- # Adds variant of Capybara's #within_window method, that doesn't return
12
- # to the preview window on an exception. This allows us to screenshot
13
- # a popup automatically if a test errors/fails whilst it has focus.
14
- module SessionExtensions
15
- def within_screenshot_compatible_window(window_or_proc)
16
- original = current_window
17
-
18
- case window_or_proc
19
- when Capybara::Window
20
- switch_to_window(window_or_proc) unless original == window_or_proc
21
- when Proc
22
- switch_to_window { window_or_proc.call }
23
- else
24
- fail ArgumentError, 'Unsupported window type!'
25
- end
26
-
27
- scopes << nil
28
- yield
29
- @scopes.pop
30
- switch_to_window(original)
31
- end
32
- end
33
- end
34
- end
35
- end
36
-
37
- if defined?(MiniTest)
38
- require 'capybara-screenshot/minitest'
39
- ActionDispatch::IntegrationTest.include(Capybara::Screenshot::MiniTestPlugin)
40
- else
41
- require 'capybara-screenshot/testunit'
42
- end
43
-
44
- Capybara::Session.include(NdrDevSupport::IntegrationTesting::Screenshot::SessionExtensions)
45
- ActionDispatch::IntegrationTest.include(NdrDevSupport::IntegrationTesting::Screenshot::DSL)
46
-
47
- # Save screenshots to tmp/capybara/... on integration test error/failure:
48
- Capybara::Screenshot.register_driver(:poltergeist) do |driver, path|
49
- # Take full-height screenshots, rather than just capturing the viewport:
50
- driver.render(path, full: true)
51
- end