cucumber 7.0.0 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  [![OpenCollective](https://opencollective.com/cucumber/sponsors/badge.svg)](https://opencollective.com/cucumber)
9
9
  [![pull requests](https://oselvar.com/api/badge?label=pull%20requests&csvUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fcucumber%2Foselvar-github-metrics%2Fmain%2Fdata%2Fcucumber%2Fcucumber-ruby%2FpullRequests.csv)](https://oselvar.com/github/cucumber/oselvar-github-metrics/main/cucumber/cucumber-ruby)
10
10
  [![issues](https://oselvar.com/api/badge?label=issues&csvUrl=https%3A%2F%2Fraw.githubusercontent.com%2Fcucumber%2Foselvar-github-metrics%2Fmain%2Fdata%2Fcucumber%2Fcucumber-ruby%2Fissues.csv)](https://oselvar.com/github/cucumber/oselvar-github-metrics/main/cucumber/cucumber-ruby)
11
- [![CircleCI](https://circleci.com/gh/cucumber/cucumber-ruby.svg?style=svg)](https://circleci.com/gh/cucumber/cucumber-ruby)
11
+ [![Test cucumber](https://github.com/cucumber/cucumber-ruby/actions/workflows/cucumber-ruby.yml/badge.svg)](https://github.com/cucumber/cucumber-ruby/actions/workflows/cucumber-ruby.yml)
12
12
  [![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby)
13
13
  [![Coverage Status](https://coveralls.io/repos/cucumber/cucumber-ruby/badge.svg?branch=main)](https://coveralls.io/r/cucumber/cucumber-ruby?branch=main)
14
14
 
@@ -58,6 +58,9 @@ Later in this document, bundler is considered being used so all commands are usi
58
58
  - Ruby 2.3
59
59
  - JRuby 9.2 (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))
60
60
 
61
+ JRuby 9.3 is not supported yet due to a known issue. More info can
62
+ be found in the [PR#1571](https://github.com/cucumber/cucumber-ruby/pull/1571).
63
+
61
64
  ### Ruby on Rails
62
65
 
63
66
  Using Ruby on Rails? You can use [cucumber-rails](https://github.com/cucumber/cucumber-rails)
@@ -11,7 +11,7 @@ module Cucumber
11
11
  # To subscribe to an event, use {Cucumber::Configuration#on_event}
12
12
  #
13
13
  # @example
14
- # AfterConfiguration do |config|
14
+ # InstallPlugin do |config|
15
15
  # config.on_event :test_case_finished do |event|
16
16
  # puts event.result
17
17
  # end
@@ -109,10 +109,29 @@ module Cucumber
109
109
 
110
110
  # Registers a proc that will run after Cucumber is configured. You can register as
111
111
  # as you want (typically from ruby scripts under <tt>support/hooks.rb</tt>).
112
+ #
113
+ # DEPRECATED: please use InstallPlugin or BeforeAll instead
112
114
  def AfterConfiguration(&proc)
113
115
  Dsl.register_rb_hook('after_configuration', [], proc)
114
116
  end
115
117
 
118
+ # Registers a proc that will run after Cucumber is configured in order to install an external plugin.
119
+ def InstallPlugin(&proc)
120
+ Dsl.register_rb_hook('install_plugin', [], proc)
121
+ end
122
+
123
+ # Registers a proc that will run before the execution of the scenarios.
124
+ # Use it for your final set-ups
125
+ def BeforeAll(&proc)
126
+ Dsl.register_rb_hook('before_all', [], proc)
127
+ end
128
+
129
+ # Registers a proc that will run after the execution of the scenarios.
130
+ # Use it for your final clean-ups
131
+ def AfterAll(&proc)
132
+ Dsl.register_rb_hook('after_all', [], proc)
133
+ end
134
+
116
135
  # Registers a new Ruby StepDefinition. This method is aliased
117
136
  # to <tt>Given</tt>, <tt>When</tt> and <tt>Then</tt>, and
118
137
  # also to the i18n translations whenever a feature of a
@@ -4,6 +4,7 @@ require 'cucumber/cucumber_expressions/parameter_type_registry'
4
4
  require 'cucumber/cucumber_expressions/cucumber_expression'
5
5
  require 'cucumber/cucumber_expressions/regular_expression'
6
6
  require 'cucumber/cucumber_expressions/cucumber_expression_generator'
7
+ require 'cucumber/deprecate'
7
8
  require 'cucumber/glue/dsl'
8
9
  require 'cucumber/glue/snippet'
9
10
  require 'cucumber/glue/hook'
@@ -135,11 +136,31 @@ module Cucumber
135
136
  end
136
137
 
137
138
  def after_configuration(configuration)
139
+ deprecate_after_configuration_hook if hooks[:after_configuration].any?
140
+
138
141
  hooks[:after_configuration].each do |hook|
139
142
  hook.invoke('AfterConfiguration', configuration)
140
143
  end
141
144
  end
142
145
 
146
+ def install_plugin(configuration, registry)
147
+ hooks[:install_plugin].each do |hook|
148
+ hook.invoke('InstallPlugin', [configuration, registry])
149
+ end
150
+ end
151
+
152
+ def before_all
153
+ hooks[:before_all].each do |hook|
154
+ hook.invoke('BeforeAll', [])
155
+ end
156
+ end
157
+
158
+ def after_all
159
+ hooks[:after_all].each do |hook|
160
+ hook.invoke('AfterAll', [])
161
+ end
162
+ end
163
+
143
164
  def add_hook(phase, hook)
144
165
  hooks[phase.to_sym] << hook
145
166
  hook
@@ -207,6 +228,14 @@ module Cucumber
207
228
  def hooks
208
229
  @hooks ||= Hash.new { |h, k| h[k] = [] }
209
230
  end
231
+
232
+ def deprecate_after_configuration_hook
233
+ Cucumber.deprecate(
234
+ 'See https://github.com/cucumber/cucumber-ruby/blob/main/UPGRADING.md#upgrading-to-710 for more info',
235
+ ' AfterConfiguration hook',
236
+ '8.0.0'
237
+ )
238
+ end
210
239
  end
211
240
 
212
241
  def self.backtrace_line(proc, name)
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cucumber
4
+ module Glue
5
+ ##
6
+ # This class wraps some internals methods to expose them to external plugins.
7
+ class RegistryWrapper
8
+ def initialize(registry)
9
+ @registry = registry
10
+ end
11
+
12
+ ##
13
+ # Creates a new CucumberExpression from the given +string_or_regexp+.
14
+ #
15
+ # If +string_or_regexp+ is a string, it will return a new CucumberExpression::CucumberExpression
16
+ #
17
+ # If +string_or_regexp+ is a regexp, it will return a new CucumberExpressions::RegularExpression
18
+ #
19
+ # An ArgumentError is raised if +string_or_regexp+ is not a string or a regexp
20
+ def create_expression(string_or_regexp)
21
+ @registry.create_expression(string_or_regexp)
22
+ end
23
+
24
+ ##
25
+ # Return the current execution environment - AKA an isntance of World
26
+ def current_world
27
+ @registry.current_world
28
+ end
29
+ end
30
+ end
31
+ end
@@ -3,12 +3,14 @@
3
3
  require 'fileutils'
4
4
  require 'cucumber/configuration'
5
5
  require 'cucumber/create_meta'
6
+ require 'cucumber/deprecate'
6
7
  require 'cucumber/load_path'
7
8
  require 'cucumber/formatter/duration'
8
9
  require 'cucumber/file_specs'
9
10
  require 'cucumber/filters'
10
11
  require 'cucumber/formatter/fanout'
11
12
  require 'cucumber/gherkin/i18n'
13
+ require 'cucumber/glue/registry_wrapper'
12
14
  require 'cucumber/step_match_search'
13
15
  require 'cucumber/messages'
14
16
  require 'sys/uname'
@@ -70,14 +72,18 @@ module Cucumber
70
72
  )
71
73
 
72
74
  load_step_definitions
73
- install_wire_plugin
74
75
  fire_after_configuration_hook
76
+ fire_install_plugin_hook
77
+ install_wire_plugin
78
+ fire_before_all_hook unless dry_run?
75
79
  # TODO: can we remove this state?
76
80
  self.visitor = report
77
81
 
78
82
  receiver = Test::Runner.new(@configuration.event_bus)
79
83
  compile features, receiver, filters, @configuration.event_bus
80
84
  @configuration.notify :test_run_finished
85
+
86
+ fire_after_all_hook unless dry_run?
81
87
  end
82
88
 
83
89
  def features_paths
@@ -112,6 +118,18 @@ module Cucumber
112
118
  @support_code.fire_hook(:after_configuration, @configuration)
113
119
  end
114
120
 
121
+ def fire_install_plugin_hook #:nodoc:
122
+ @support_code.fire_hook(:install_plugin, @configuration, registry_wrapper)
123
+ end
124
+
125
+ def fire_before_all_hook #:nodoc:
126
+ @support_code.fire_hook(:before_all)
127
+ end
128
+
129
+ def fire_after_all_hook #:nodoc:
130
+ @support_code.fire_hook(:after_all)
131
+ end
132
+
115
133
  require 'cucumber/core/gherkin/document'
116
134
  def features
117
135
  @features ||= feature_files.map do |path|
@@ -261,7 +279,19 @@ module Cucumber
261
279
  end
262
280
 
263
281
  def install_wire_plugin
264
- Cucumber::Wire::Plugin.new(@configuration, @support_code.registry).install if @configuration.all_files_to_load.any? { |f| f =~ /\.wire$/ }
282
+ return if Cucumber::Wire::Plugin.installed?
283
+ return unless @configuration.all_files_to_load.any? { |f| f =~ /\.wire$/ }
284
+
285
+ Cucumber::Wire::Plugin.new(@configuration, registry_wrapper).install
286
+ Cucumber.deprecate(
287
+ 'See https://github.com/cucumber/cucumber-ruby/blob/main/UPGRADING.md#upgrading-to-710 for more info',
288
+ ' built-in usage of the wire protocol',
289
+ '8.0.0'
290
+ )
291
+ end
292
+
293
+ def registry_wrapper
294
+ Cucumber::Glue::RegistryWrapper.new(@support_code.registry)
265
295
  end
266
296
 
267
297
  def log
data/lib/cucumber/version CHANGED
@@ -1 +1 @@
1
- 7.0.0
1
+ 7.1.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 7.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-07-19 00:00:00.000000000 Z
13
+ date: 2021-10-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -38,20 +38,20 @@ dependencies:
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: '10.1'
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 10.0.1
44
+ version: 10.1.0
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - "~>"
50
50
  - !ruby/object:Gem::Version
51
- version: '10.0'
51
+ version: '10.1'
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 10.0.1
54
+ version: 10.1.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: cucumber-create-meta
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -78,100 +78,100 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '12.1'
81
+ version: '14.0'
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: 12.1.1
84
+ version: 14.0.0
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: '12.1'
91
+ version: '14.0'
92
92
  - - ">="
93
93
  - !ruby/object:Gem::Version
94
- version: 12.1.1
94
+ version: 14.0.0
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: cucumber-gherkin
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '20.0'
101
+ version: '22.0'
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: 20.0.1
104
+ version: 22.0.0
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '20.0'
111
+ version: '22.0'
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
- version: 20.0.1
114
+ version: 22.0.0
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: cucumber-html-formatter
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: '16.0'
121
+ version: '17.0'
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 16.0.1
124
+ version: 17.0.0
125
125
  type: :runtime
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '16.0'
131
+ version: '17.0'
132
132
  - - ">="
133
133
  - !ruby/object:Gem::Version
134
- version: 16.0.1
134
+ version: 17.0.0
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: cucumber-messages
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: '17.0'
141
+ version: '17.1'
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
- version: 17.0.1
144
+ version: 17.1.1
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '17.0'
151
+ version: '17.1'
152
152
  - - ">="
153
153
  - !ruby/object:Gem::Version
154
- version: 17.0.1
154
+ version: 17.1.1
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: cucumber-wire
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
159
  - - "~>"
160
160
  - !ruby/object:Gem::Version
161
- version: '6.0'
161
+ version: '6.2'
162
162
  - - ">="
163
163
  - !ruby/object:Gem::Version
164
- version: 6.0.1
164
+ version: 6.2.0
165
165
  type: :runtime
166
166
  prerelease: false
167
167
  version_requirements: !ruby/object:Gem::Requirement
168
168
  requirements:
169
169
  - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: '6.0'
171
+ version: '6.2'
172
172
  - - ">="
173
173
  - !ruby/object:Gem::Version
174
- version: 6.0.1
174
+ version: 6.2.0
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: diff-lcs
177
177
  requirement: !ruby/object:Gem::Requirement
@@ -258,20 +258,20 @@ dependencies:
258
258
  requirements:
259
259
  - - "~>"
260
260
  - !ruby/object:Gem::Version
261
- version: '1.11'
261
+ version: '1.12'
262
262
  - - ">="
263
263
  - !ruby/object:Gem::Version
264
- version: 1.11.7
264
+ version: 1.12.5
265
265
  type: :development
266
266
  prerelease: false
267
267
  version_requirements: !ruby/object:Gem::Requirement
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: '1.11'
271
+ version: '1.12'
272
272
  - - ">="
273
273
  - !ruby/object:Gem::Version
274
- version: 1.11.7
274
+ version: 1.12.5
275
275
  - !ruby/object:Gem::Dependency
276
276
  name: pry
277
277
  requirement: !ruby/object:Gem::Requirement
@@ -381,7 +381,7 @@ dependencies:
381
381
  version: '3.4'
382
382
  - - ">="
383
383
  - !ruby/object:Gem::Version
384
- version: 3.4.4
384
+ version: 3.4.8
385
385
  type: :development
386
386
  prerelease: false
387
387
  version_requirements: !ruby/object:Gem::Requirement
@@ -391,7 +391,7 @@ dependencies:
391
391
  version: '3.4'
392
392
  - - ">="
393
393
  - !ruby/object:Gem::Version
394
- version: 3.4.4
394
+ version: 3.4.8
395
395
  - !ruby/object:Gem::Dependency
396
396
  name: webrick
397
397
  requirement: !ruby/object:Gem::Requirement
@@ -602,6 +602,7 @@ files:
602
602
  - lib/cucumber/glue/invoke_in_world.rb
603
603
  - lib/cucumber/glue/proto_world.rb
604
604
  - lib/cucumber/glue/registry_and_more.rb
605
+ - lib/cucumber/glue/registry_wrapper.rb
605
606
  - lib/cucumber/glue/snippet.rb
606
607
  - lib/cucumber/glue/step_definition.rb
607
608
  - lib/cucumber/glue/world_factory.rb
@@ -661,5 +662,5 @@ requirements: []
661
662
  rubygems_version: 3.1.2
662
663
  signing_key:
663
664
  specification_version: 4
664
- summary: cucumber-7.0.0
665
+ summary: cucumber-7.1.0
665
666
  test_files: []