cucumber 3.1.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +173 -14
  3. data/CONTRIBUTING.md +2 -18
  4. data/README.md +4 -5
  5. data/bin/cucumber +1 -1
  6. data/lib/autotest/cucumber_mixin.rb +34 -39
  7. data/lib/cucumber.rb +1 -1
  8. data/lib/cucumber/cli/configuration.rb +5 -5
  9. data/lib/cucumber/cli/main.rb +12 -12
  10. data/lib/cucumber/cli/options.rb +69 -74
  11. data/lib/cucumber/cli/profile_loader.rb +49 -26
  12. data/lib/cucumber/configuration.rb +31 -23
  13. data/lib/cucumber/constantize.rb +2 -5
  14. data/lib/cucumber/deprecate.rb +31 -7
  15. data/lib/cucumber/errors.rb +5 -7
  16. data/lib/cucumber/events.rb +13 -6
  17. data/lib/cucumber/events/envelope.rb +9 -0
  18. data/lib/cucumber/events/gherkin_source_parsed.rb +11 -0
  19. data/lib/cucumber/events/hook_test_step_created.rb +13 -0
  20. data/lib/cucumber/events/step_activated.rb +2 -1
  21. data/lib/cucumber/events/test_case_created.rb +13 -0
  22. data/lib/cucumber/events/test_case_ready.rb +12 -0
  23. data/lib/cucumber/events/test_step_created.rb +13 -0
  24. data/lib/cucumber/events/undefined_parameter_type.rb +10 -0
  25. data/lib/cucumber/file_specs.rb +6 -6
  26. data/lib/cucumber/filters.rb +1 -0
  27. data/lib/cucumber/filters/activate_steps.rb +5 -3
  28. data/lib/cucumber/filters/broadcast_test_case_ready_event.rb +12 -0
  29. data/lib/cucumber/filters/prepare_world.rb +5 -9
  30. data/lib/cucumber/filters/quit.rb +1 -3
  31. data/lib/cucumber/filters/tag_limits/verifier.rb +2 -4
  32. data/lib/cucumber/formatter/ansicolor.rb +40 -45
  33. data/lib/cucumber/formatter/ast_lookup.rb +165 -0
  34. data/lib/cucumber/formatter/backtrace_filter.rb +9 -8
  35. data/lib/cucumber/formatter/console.rb +58 -66
  36. data/lib/cucumber/formatter/console_counts.rb +4 -9
  37. data/lib/cucumber/formatter/console_issues.rb +6 -3
  38. data/lib/cucumber/formatter/duration.rb +1 -1
  39. data/lib/cucumber/formatter/duration_extractor.rb +3 -1
  40. data/lib/cucumber/formatter/errors.rb +6 -0
  41. data/lib/cucumber/formatter/fanout.rb +2 -0
  42. data/lib/cucumber/formatter/html.rb +11 -598
  43. data/lib/cucumber/formatter/http_io.rb +146 -0
  44. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -1
  45. data/lib/cucumber/formatter/interceptor.rb +8 -28
  46. data/lib/cucumber/formatter/io.rb +17 -11
  47. data/lib/cucumber/formatter/json.rb +101 -109
  48. data/lib/cucumber/formatter/junit.rb +56 -56
  49. data/lib/cucumber/formatter/message.rb +22 -0
  50. data/lib/cucumber/formatter/message_builder.rb +255 -0
  51. data/lib/cucumber/formatter/pretty.rb +359 -153
  52. data/lib/cucumber/formatter/progress.rb +30 -32
  53. data/lib/cucumber/formatter/query/hook_by_test_step.rb +31 -0
  54. data/lib/cucumber/formatter/query/pickle_by_test.rb +26 -0
  55. data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +26 -0
  56. data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +40 -0
  57. data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +40 -0
  58. data/lib/cucumber/formatter/rerun.rb +22 -4
  59. data/lib/cucumber/formatter/stepdefs.rb +1 -2
  60. data/lib/cucumber/formatter/steps.rb +2 -3
  61. data/lib/cucumber/formatter/summary.rb +16 -8
  62. data/lib/cucumber/formatter/unicode.rb +15 -17
  63. data/lib/cucumber/formatter/usage.rb +11 -10
  64. data/lib/cucumber/gherkin/data_table_parser.rb +17 -6
  65. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +13 -17
  66. data/lib/cucumber/gherkin/formatter/escaping.rb +2 -2
  67. data/lib/cucumber/gherkin/steps_parser.rb +17 -8
  68. data/lib/cucumber/glue/dsl.rb +1 -1
  69. data/lib/cucumber/glue/hook.rb +34 -11
  70. data/lib/cucumber/glue/invoke_in_world.rb +13 -18
  71. data/lib/cucumber/glue/proto_world.rb +42 -33
  72. data/lib/cucumber/glue/registry_and_more.rb +42 -12
  73. data/lib/cucumber/glue/snippet.rb +23 -22
  74. data/lib/cucumber/glue/step_definition.rb +42 -19
  75. data/lib/cucumber/glue/world_factory.rb +1 -1
  76. data/lib/cucumber/hooks.rb +11 -11
  77. data/lib/cucumber/multiline_argument.rb +4 -6
  78. data/lib/cucumber/multiline_argument/data_table.rb +97 -64
  79. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +1 -1
  80. data/lib/cucumber/multiline_argument/doc_string.rb +1 -1
  81. data/lib/cucumber/platform.rb +3 -3
  82. data/lib/cucumber/rake/task.rb +16 -16
  83. data/lib/cucumber/rspec/disable_option_parser.rb +9 -8
  84. data/lib/cucumber/running_test_case.rb +2 -53
  85. data/lib/cucumber/runtime.rb +54 -58
  86. data/lib/cucumber/runtime/after_hooks.rb +8 -4
  87. data/lib/cucumber/runtime/before_hooks.rb +8 -4
  88. data/lib/cucumber/runtime/for_programming_languages.rb +4 -2
  89. data/lib/cucumber/runtime/step_hooks.rb +3 -2
  90. data/lib/cucumber/runtime/support_code.rb +13 -15
  91. data/lib/cucumber/runtime/user_interface.rb +6 -16
  92. data/lib/cucumber/step_definition_light.rb +4 -3
  93. data/lib/cucumber/step_definitions.rb +2 -2
  94. data/lib/cucumber/step_match.rb +12 -11
  95. data/lib/cucumber/step_match_search.rb +2 -1
  96. data/lib/cucumber/term/ansicolor.rb +9 -9
  97. data/lib/cucumber/version +1 -1
  98. metadata +224 -82
  99. data/lib/cucumber/events/gherkin_source_parsed.rb~ +0 -14
  100. data/lib/cucumber/formatter/ast_lookup.rb~ +0 -9
  101. data/lib/cucumber/formatter/cucumber.css +0 -286
  102. data/lib/cucumber/formatter/cucumber.sass +0 -247
  103. data/lib/cucumber/formatter/hook_query_visitor.rb +0 -42
  104. data/lib/cucumber/formatter/html_builder.rb +0 -121
  105. data/lib/cucumber/formatter/inline-js.js +0 -30
  106. data/lib/cucumber/formatter/jquery-min.js +0 -154
  107. data/lib/cucumber/formatter/json_pretty.rb +0 -11
  108. data/lib/cucumber/formatter/legacy_api/adapter.rb +0 -1028
  109. data/lib/cucumber/formatter/legacy_api/ast.rb +0 -394
  110. data/lib/cucumber/formatter/legacy_api/results.rb +0 -50
  111. data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +0 -32
  112. data/lib/cucumber/step_argument.rb +0 -25
@@ -3,23 +3,27 @@
3
3
  module Cucumber
4
4
  class Runtime
5
5
  class AfterHooks
6
- def initialize(hooks, scenario)
6
+ def initialize(id_generator, hooks, scenario, event_bus)
7
7
  @hooks = hooks
8
8
  @scenario = scenario
9
+ @id_generator = id_generator
10
+ @event_bus = event_bus
9
11
  end
10
12
 
11
13
  def apply_to(test_case)
12
14
  test_case.with_steps(
13
- test_case.test_steps + after_hooks(test_case.source).reverse
15
+ test_case.test_steps + after_hooks.reverse
14
16
  )
15
17
  end
16
18
 
17
19
  private
18
20
 
19
- def after_hooks(source)
21
+ def after_hooks
20
22
  @hooks.map do |hook|
21
23
  action = ->(result) { hook.invoke('After', @scenario.with_result(result)) }
22
- Hooks.after_hook(source, hook.location, &action)
24
+ hook_step = Hooks.after_hook(@id_generator.new_id, hook.location, &action)
25
+ @event_bus.hook_test_step_created(hook_step, hook)
26
+ hook_step
23
27
  end
24
28
  end
25
29
  end
@@ -5,23 +5,27 @@ require 'cucumber/hooks'
5
5
  module Cucumber
6
6
  class Runtime
7
7
  class BeforeHooks
8
- def initialize(hooks, scenario)
8
+ def initialize(id_generator, hooks, scenario, event_bus)
9
9
  @hooks = hooks
10
10
  @scenario = scenario
11
+ @id_generator = id_generator
12
+ @event_bus = event_bus
11
13
  end
12
14
 
13
15
  def apply_to(test_case)
14
16
  test_case.with_steps(
15
- before_hooks(test_case.source) + test_case.test_steps
17
+ before_hooks + test_case.test_steps
16
18
  )
17
19
  end
18
20
 
19
21
  private
20
22
 
21
- def before_hooks(source)
23
+ def before_hooks
22
24
  @hooks.map do |hook|
23
25
  action_block = ->(result) { hook.invoke('Before', @scenario.with_result(result)) }
24
- Hooks.before_hook(source, hook.location, &action_block)
26
+ hook_step = Hooks.before_hook(@id_generator.new_id, hook.location, &action_block)
27
+ @event_bus.hook_test_step_created(hook_step, hook)
28
+ hook_step
25
29
  end
26
30
  end
27
31
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'forwardable'
4
- require 'cucumber/core/ast/doc_string'
4
+ require 'cucumber/core/test/doc_string'
5
5
 
6
6
  module Cucumber
7
7
  class Runtime
@@ -15,11 +15,13 @@ module Cucumber
15
15
  attr_reader :support_code
16
16
 
17
17
  def initialize(support_code, user_interface)
18
- @support_code, @user_interface = support_code, user_interface
18
+ @support_code = support_code
19
+ @user_interface = user_interface
19
20
  end
20
21
 
21
22
  def_delegators :@user_interface,
22
23
  :embed,
24
+ :attach,
23
25
  :ask,
24
26
  :puts,
25
27
  :features_paths,
@@ -3,8 +3,9 @@
3
3
  module Cucumber
4
4
  class Runtime
5
5
  class StepHooks
6
- def initialize(hooks)
6
+ def initialize(id_generator, hooks)
7
7
  @hooks = hooks
8
+ @id_generator = id_generator
8
9
  end
9
10
 
10
11
  def apply(test_steps)
@@ -18,7 +19,7 @@ module Cucumber
18
19
  def after_step_hooks(test_step)
19
20
  @hooks.map do |hook|
20
21
  action = ->(*args) { hook.invoke('AfterStep', [args, test_step]) }
21
- Hooks.after_step_hook(test_step.source, hook.location, &action)
22
+ Hooks.after_step_hook(@id_generator.new_id, test_step, hook.location, &action)
22
23
  end
23
24
  end
24
25
  end
@@ -22,19 +22,15 @@ module Cucumber
22
22
  end
23
23
 
24
24
  def step(step)
25
- location = Core::Ast::Location.of_caller
25
+ location = Core::Test::Location.of_caller
26
26
  @support_code.invoke_dynamic_step(step[:text], multiline_arg(step, location))
27
27
  end
28
28
 
29
29
  def multiline_arg(step, location)
30
- argument = step[:argument]
31
-
32
- if argument
33
- if argument[:type] == :DocString
34
- MultilineArgument.from(argument[:content], location, argument[:content_type])
35
- else
36
- MultilineArgument::DataTable.from(argument[:rows].map { |row| row[:cells].map { |cell| cell[:value] } })
37
- end
30
+ if !step[:doc_string].nil?
31
+ MultilineArgument.from(step[:doc_string][:content], location, step[:doc_string][:content_type])
32
+ elsif !step[:data_table].nil?
33
+ MultilineArgument::DataTable.from(step[:data_table][:rows].map { |row| row[:cells].map { |cell| cell[:value] } })
38
34
  else
39
35
  MultilineArgument.from(nil)
40
36
  end
@@ -62,8 +58,8 @@ module Cucumber
62
58
  # Given I have 8 cukes in my belly
63
59
  # Then I should not be thirsty
64
60
  # })
65
- def invoke_dynamic_steps(steps_text, i18n, _location)
66
- parser = Cucumber::Gherkin::StepsParser.new(StepInvoker.new(self), i18n.iso_code)
61
+ def invoke_dynamic_steps(steps_text, iso_code, _location)
62
+ parser = Cucumber::Gherkin::StepsParser.new(StepInvoker.new(self), iso_code)
67
63
  parser.parse(steps_text)
68
64
  end
69
65
 
@@ -108,26 +104,28 @@ module Cucumber
108
104
  def find_after_step_hooks(test_case)
109
105
  scenario = RunningTestCase.new(test_case)
110
106
  hooks = registry.hooks_for(:after_step, scenario)
111
- StepHooks.new hooks
107
+ StepHooks.new(@configuration.id_generator, hooks)
112
108
  end
113
109
 
114
110
  def apply_before_hooks(test_case)
111
+ return test_case if test_case.test_steps.empty?
115
112
  scenario = RunningTestCase.new(test_case)
116
113
  hooks = registry.hooks_for(:before, scenario)
117
- BeforeHooks.new(hooks, scenario).apply_to(test_case)
114
+ BeforeHooks.new(@configuration.id_generator, hooks, scenario, @configuration.event_bus).apply_to(test_case)
118
115
  end
119
116
 
120
117
  def apply_after_hooks(test_case)
118
+ return test_case if test_case.test_steps.empty?
121
119
  scenario = RunningTestCase.new(test_case)
122
120
  hooks = registry.hooks_for(:after, scenario)
123
- AfterHooks.new(hooks, scenario).apply_to(test_case)
121
+ AfterHooks.new(@configuration.id_generator, hooks, scenario, @configuration.event_bus).apply_to(test_case)
124
122
  end
125
123
 
126
124
  def find_around_hooks(test_case)
127
125
  scenario = RunningTestCase.new(test_case)
128
126
 
129
127
  registry.hooks_for(:around, scenario).map do |hook|
130
- Hooks.around_hook(test_case.source) do |run_scenario|
128
+ Hooks.around_hook do |run_scenario|
131
129
  hook.invoke('Around', scenario, &run_scenario)
132
130
  end
133
131
  end
@@ -7,14 +7,6 @@ module Cucumber
7
7
  module UserInterface
8
8
  attr_writer :visitor
9
9
 
10
- # Output +messages+ alongside the formatted output.
11
- # This is an alternative to using Kernel#puts - it will display
12
- # nicer, and in all outputs (in case you use several formatters)
13
- #
14
- def puts(*messages)
15
- @visitor.puts(*messages)
16
- end
17
-
18
10
  # Suspends execution and prompts +question+ to the console (STDOUT).
19
11
  # An operator (manual tester) can then enter a line of text and hit
20
12
  # <ENTER>. The entered text is returned, and both +question+ and
@@ -48,20 +40,18 @@ module Cucumber
48
40
  # be a path to a file, or if it's an image it may also be a Base64 encoded image.
49
41
  # The embedded data may or may not be ignored, depending on what kind of formatter(s) are active.
50
42
  #
51
- def embed(src, mime_type, label)
52
- @visitor.embed(src, mime_type, label)
43
+ def attach(src, media_type)
44
+ @visitor.attach(src, media_type)
53
45
  end
54
46
 
55
47
  private
56
48
 
57
49
  def mri_gets(timeout_seconds)
58
- begin
59
- Timeout.timeout(timeout_seconds) do
60
- STDIN.gets
61
- end
62
- rescue Timeout::Error
63
- nil
50
+ Timeout.timeout(timeout_seconds) do
51
+ STDIN.gets
64
52
  end
53
+ rescue Timeout::Error
54
+ nil
65
55
  end
66
56
 
67
57
  def jruby_gets(timeout_seconds)
@@ -9,11 +9,12 @@ module Cucumber
9
9
  attr_reader :regexp_source, :location
10
10
 
11
11
  def initialize(regexp_source, location)
12
- @regexp_source, @location = regexp_source, location
12
+ @regexp_source = regexp_source
13
+ @location = location
13
14
  end
14
15
 
15
- def eql?(o)
16
- regexp_source == o.regexp_source && location == o.location
16
+ def eql?(other)
17
+ regexp_source == other.regexp_source && location == other.location
17
18
  end
18
19
 
19
20
  def hash
@@ -8,8 +8,8 @@ module Cucumber
8
8
  @support_code.load_files_from_paths(configuration.autoload_code_paths)
9
9
  end
10
10
 
11
- def to_json
12
- @support_code.step_definitions.map(&:to_hash).to_json
11
+ def to_json(obj = nil)
12
+ @support_code.step_definitions.map(&:to_hash).to_json(obj)
13
13
  end
14
14
  end
15
15
  end
@@ -9,7 +9,9 @@ module Cucumber
9
9
 
10
10
  def initialize(step_definition, step_name, step_arguments)
11
11
  raise "step_arguments can't be nil (but it can be an empty array)" if step_arguments.nil?
12
- @step_definition, @name_to_match, @step_arguments = step_definition, step_name, step_arguments
12
+ @step_definition = step_definition
13
+ @name_to_match = step_name
14
+ @step_arguments = step_arguments
13
15
  end
14
16
 
15
17
  def args
@@ -21,7 +23,7 @@ module Cucumber
21
23
 
22
24
  def activate(test_step)
23
25
  test_step.with_action(@step_definition.location) do
24
- invoke(MultilineArgument.from_core(test_step.source.last.multiline_arg))
26
+ invoke(MultilineArgument.from_core(test_step.multiline_arg))
25
27
  end
26
28
  end
27
29
 
@@ -46,7 +48,7 @@ module Cucumber
46
48
  #
47
49
  # lambda { |param| "[#{param}]" }
48
50
  #
49
- def format_args(format = lambda { |a| a }, &proc)
51
+ def format_args(format = ->(a) { a }, &proc)
50
52
  replace_arguments(@name_to_match, @step_arguments, format, &proc)
51
53
  end
52
54
 
@@ -75,7 +77,7 @@ module Cucumber
75
77
 
76
78
  replacement = if block_given?
77
79
  yield(group.value)
78
- elsif Proc === format
80
+ elsif Proc == format.class
79
81
  format.call(group.value)
80
82
  else
81
83
  format % group.value
@@ -95,13 +97,13 @@ module Cucumber
95
97
  private
96
98
 
97
99
  def deep_clone_args
98
- Marshal.load( Marshal.dump( args ) )
100
+ Marshal.load(Marshal.dump(args))
99
101
  end
100
102
  end
101
103
 
102
104
  class SkippingStepMatch
103
105
  def activate(test_step)
104
- return test_step.with_action { raise Core::Test::Result::Skipped.new }
106
+ test_step.with_action { raise Core::Test::Result::Skipped }
105
107
  end
106
108
  end
107
109
 
@@ -123,8 +125,7 @@ module Cucumber
123
125
  end
124
126
 
125
127
  def file_colon_line
126
- raise "No file:line for #{@step}" unless @step.file_colon_line
127
- @step.file_colon_line
128
+ location.to_s
128
129
  end
129
130
 
130
131
  def backtrace_line
@@ -132,7 +133,7 @@ module Cucumber
132
133
  end
133
134
 
134
135
  def text_length
135
- @step.text_length
136
+ @step.text.length
136
137
  end
137
138
 
138
139
  def step_arguments
@@ -141,7 +142,7 @@ module Cucumber
141
142
 
142
143
  def activate(test_step)
143
144
  # noop
144
- return test_step
145
+ test_step
145
146
  end
146
147
  end
147
148
 
@@ -151,7 +152,7 @@ module Cucumber
151
152
  end
152
153
 
153
154
  def activate(test_step)
154
- return test_step.with_action { raise @error }
155
+ test_step.with_action { raise @error }
155
156
  end
156
157
  end
157
158
  end
@@ -13,7 +13,8 @@ module Cucumber
13
13
 
14
14
  class AssertUnambiguousMatch
15
15
  def initialize(search, configuration)
16
- @search, @configuration = search, configuration
16
+ @search = search
17
+ @configuration = configuration
17
18
  end
18
19
 
19
20
  def call(step_name)
@@ -35,7 +35,7 @@ module Cucumber
35
35
  [:on_magenta, 45],
36
36
  [:on_cyan, 46],
37
37
  [:on_white, 47]
38
- ]
38
+ ].freeze
39
39
 
40
40
  ATTRIBUTE_NAMES = ATTRIBUTES.transpose.first
41
41
  # :startdoc:
@@ -54,8 +54,9 @@ module Cucumber
54
54
  end
55
55
  self.coloring = true
56
56
 
57
+ # rubocop:disable Security/Eval
57
58
  ATTRIBUTES.each do |c, v|
58
- eval %Q{
59
+ eval <<-END_EVAL, binding, __FILE__, __LINE__ + 1
59
60
  def #{c}(string = nil)
60
61
  result = String.new
61
62
  result << "\e[#{v}m" if Cucumber::Term::ANSIColor.coloring?
@@ -71,23 +72,23 @@ module Cucumber
71
72
  result << "\e[0m" if Cucumber::Term::ANSIColor.coloring?
72
73
  result
73
74
  end
74
- }
75
+ END_EVAL
75
76
  end
77
+ # rubocop:enable Security/Eval
76
78
 
77
79
  # Regular expression that is used to scan for ANSI-sequences while
78
80
  # uncoloring strings.
79
81
  COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/
80
82
 
81
83
  def self.included(klass)
82
- if klass == String
83
- ATTRIBUTES.delete(:clear)
84
- ATTRIBUTE_NAMES.delete(:clear)
85
- end
84
+ return unless klass == String
85
+ ATTRIBUTES.delete(:clear)
86
+ ATTRIBUTE_NAMES.delete(:clear)
86
87
  end
87
88
 
88
89
  # Returns an uncolored version of the string, that is all
89
90
  # ANSI-sequences are stripped from the string.
90
- def uncolored(string = nil) # :yields:
91
+ def uncolored(string = nil)
91
92
  if block_given?
92
93
  yield.gsub(COLORED_REGEXP, '')
93
94
  elsif string
@@ -105,7 +106,6 @@ module Cucumber
105
106
  def attributes
106
107
  ATTRIBUTE_NAMES
107
108
  end
108
- extend self
109
109
  end
110
110
  end
111
111
  end
@@ -1 +1 @@
1
- 3.1.2
1
+ 4.0.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: 3.1.2
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -10,308 +10,442 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-07-13 00:00:00.000000000 Z
13
+ date: 2020-06-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '3.2'
19
22
  - - ">="
20
23
  - !ruby/object:Gem::Version
21
- version: 2.1.2
24
+ version: 3.2.3
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
29
+ - - "~>"
30
+ - !ruby/object:Gem::Version
31
+ version: '3.2'
26
32
  - - ">="
27
33
  - !ruby/object:Gem::Version
28
- version: 2.1.2
34
+ version: 3.2.3
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: cucumber-core
31
37
  requirement: !ruby/object:Gem::Requirement
32
38
  requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 7.0.0
33
42
  - - "~>"
34
43
  - !ruby/object:Gem::Version
35
- version: 3.2.0
44
+ version: '7.0'
36
45
  type: :runtime
37
46
  prerelease: false
38
47
  version_requirements: !ruby/object:Gem::Requirement
39
48
  requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: 7.0.0
40
52
  - - "~>"
41
53
  - !ruby/object:Gem::Version
42
- version: 3.2.0
54
+ version: '7.0'
43
55
  - !ruby/object:Gem::Dependency
44
- name: cucumber-expressions
56
+ name: cucumber-cucumber-expressions
45
57
  requirement: !ruby/object:Gem::Requirement
46
58
  requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 10.1.0
47
62
  - - "~>"
48
63
  - !ruby/object:Gem::Version
49
- version: 6.0.1
64
+ version: '10.1'
50
65
  type: :runtime
51
66
  prerelease: false
52
67
  version_requirements: !ruby/object:Gem::Requirement
53
68
  requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 10.1.0
54
72
  - - "~>"
55
73
  - !ruby/object:Gem::Version
56
- version: 6.0.1
74
+ version: '10.1'
57
75
  - !ruby/object:Gem::Dependency
58
- name: cucumber-wire
76
+ name: cucumber-gherkin
59
77
  requirement: !ruby/object:Gem::Requirement
60
78
  requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 13.0.0
61
82
  - - "~>"
62
83
  - !ruby/object:Gem::Version
63
- version: 0.0.1
84
+ version: '13.0'
64
85
  type: :runtime
65
86
  prerelease: false
66
87
  version_requirements: !ruby/object:Gem::Requirement
67
88
  requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 13.0.0
68
92
  - - "~>"
69
93
  - !ruby/object:Gem::Version
70
- version: 0.0.1
94
+ version: '13.0'
71
95
  - !ruby/object:Gem::Dependency
72
- name: diff-lcs
96
+ name: cucumber-html-formatter
73
97
  requirement: !ruby/object:Gem::Requirement
74
98
  requirements:
75
99
  - - "~>"
76
100
  - !ruby/object:Gem::Version
77
- version: '1.3'
101
+ version: '6.0'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 6.0.1
78
105
  type: :runtime
79
106
  prerelease: false
80
107
  version_requirements: !ruby/object:Gem::Requirement
81
108
  requirements:
82
109
  - - "~>"
83
110
  - !ruby/object:Gem::Version
84
- version: '1.3'
111
+ version: '6.0'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 6.0.1
85
115
  - !ruby/object:Gem::Dependency
86
- name: gherkin
116
+ name: cucumber-messages
87
117
  requirement: !ruby/object:Gem::Requirement
88
118
  requirements:
89
119
  - - "~>"
90
120
  - !ruby/object:Gem::Version
91
- version: 5.1.0
121
+ version: '12.1'
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 12.1.1
92
125
  type: :runtime
93
126
  prerelease: false
94
127
  version_requirements: !ruby/object:Gem::Requirement
95
128
  requirements:
96
129
  - - "~>"
97
130
  - !ruby/object:Gem::Version
98
- version: 5.1.0
131
+ version: '12.1'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 12.1.1
99
135
  - !ruby/object:Gem::Dependency
100
- name: multi_json
136
+ name: cucumber-wire
101
137
  requirement: !ruby/object:Gem::Requirement
102
138
  requirements:
103
139
  - - ">="
104
140
  - !ruby/object:Gem::Version
105
- version: 1.7.5
106
- - - "<"
141
+ version: 3.0.0
142
+ - - "~>"
107
143
  - !ruby/object:Gem::Version
108
- version: '2.0'
144
+ version: '3.0'
109
145
  type: :runtime
110
146
  prerelease: false
111
147
  version_requirements: !ruby/object:Gem::Requirement
112
148
  requirements:
113
149
  - - ">="
114
150
  - !ruby/object:Gem::Version
115
- version: 1.7.5
116
- - - "<"
151
+ version: 3.0.0
152
+ - - "~>"
117
153
  - !ruby/object:Gem::Version
118
- version: '2.0'
154
+ version: '3.0'
119
155
  - !ruby/object:Gem::Dependency
120
- name: multi_test
156
+ name: diff-lcs
121
157
  requirement: !ruby/object:Gem::Requirement
122
158
  requirements:
123
159
  - - ">="
124
160
  - !ruby/object:Gem::Version
125
- version: 0.1.2
161
+ version: '1.3'
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '1.3'
126
165
  type: :runtime
127
166
  prerelease: false
128
167
  version_requirements: !ruby/object:Gem::Requirement
129
168
  requirements:
130
169
  - - ">="
131
170
  - !ruby/object:Gem::Version
132
- version: 0.1.2
171
+ version: '1.3'
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '1.3'
133
175
  - !ruby/object:Gem::Dependency
134
- name: aruba
176
+ name: multi_test
135
177
  requirement: !ruby/object:Gem::Requirement
136
178
  requirements:
137
179
  - - "~>"
138
180
  - !ruby/object:Gem::Version
139
- version: 0.6.1
140
- type: :development
181
+ version: '0.1'
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: 0.1.2
185
+ type: :runtime
141
186
  prerelease: false
142
187
  version_requirements: !ruby/object:Gem::Requirement
143
188
  requirements:
144
189
  - - "~>"
145
190
  - !ruby/object:Gem::Version
146
- version: 0.6.1
191
+ version: '0.1'
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: 0.1.2
147
195
  - !ruby/object:Gem::Dependency
148
- name: json
196
+ name: sys-uname
149
197
  requirement: !ruby/object:Gem::Requirement
150
198
  requirements:
151
199
  - - "~>"
152
200
  - !ruby/object:Gem::Version
153
- version: 1.8.6
154
- type: :development
201
+ version: '1.0'
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: 1.0.2
205
+ type: :runtime
155
206
  prerelease: false
156
207
  version_requirements: !ruby/object:Gem::Requirement
157
208
  requirements:
158
209
  - - "~>"
159
210
  - !ruby/object:Gem::Version
160
- version: 1.8.6
211
+ version: '1.0'
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: 1.0.2
161
215
  - !ruby/object:Gem::Dependency
162
216
  name: nokogiri
163
217
  requirement: !ruby/object:Gem::Requirement
164
218
  requirements:
165
219
  - - "~>"
166
220
  - !ruby/object:Gem::Version
167
- version: 1.8.1
221
+ version: '1.10'
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: 1.10.4
168
225
  type: :development
169
226
  prerelease: false
170
227
  version_requirements: !ruby/object:Gem::Requirement
171
228
  requirements:
172
229
  - - "~>"
173
230
  - !ruby/object:Gem::Version
174
- version: 1.8.1
231
+ version: '1.10'
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: 1.10.4
175
235
  - !ruby/object:Gem::Dependency
176
236
  name: pry
177
237
  requirement: !ruby/object:Gem::Requirement
178
238
  requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '0.12'
179
242
  - - ">="
180
243
  - !ruby/object:Gem::Version
181
- version: '0'
244
+ version: 0.12.2
182
245
  type: :development
183
246
  prerelease: false
184
247
  version_requirements: !ruby/object:Gem::Requirement
185
248
  requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '0.12'
186
252
  - - ">="
187
253
  - !ruby/object:Gem::Version
188
- version: '0'
254
+ version: 0.12.2
189
255
  - !ruby/object:Gem::Dependency
190
256
  name: rake
191
257
  requirement: !ruby/object:Gem::Requirement
192
258
  requirements:
259
+ - - "~>"
260
+ - !ruby/object:Gem::Version
261
+ version: '12.3'
193
262
  - - ">="
194
263
  - !ruby/object:Gem::Version
195
- version: 0.9.2
264
+ version: 12.3.3
196
265
  type: :development
197
266
  prerelease: false
198
267
  version_requirements: !ruby/object:Gem::Requirement
199
268
  requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: '12.3'
200
272
  - - ">="
201
273
  - !ruby/object:Gem::Version
202
- version: 0.9.2
274
+ version: 12.3.3
203
275
  - !ruby/object:Gem::Dependency
204
276
  name: rspec
205
277
  requirement: !ruby/object:Gem::Requirement
206
278
  requirements:
207
279
  - - ">="
208
280
  - !ruby/object:Gem::Version
209
- version: '3.6'
281
+ version: 3.8.0
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '3.8'
210
285
  type: :development
211
286
  prerelease: false
212
287
  version_requirements: !ruby/object:Gem::Requirement
213
288
  requirements:
214
289
  - - ">="
215
290
  - !ruby/object:Gem::Version
216
- version: '3.6'
291
+ version: 3.8.0
292
+ - - "~>"
293
+ - !ruby/object:Gem::Version
294
+ version: '3.8'
217
295
  - !ruby/object:Gem::Dependency
218
- name: rubocop
296
+ name: simplecov
219
297
  requirement: !ruby/object:Gem::Requirement
220
298
  requirements:
299
+ - - ">="
300
+ - !ruby/object:Gem::Version
301
+ version: 0.17.0
221
302
  - - "~>"
222
303
  - !ruby/object:Gem::Version
223
- version: 0.52.1
304
+ version: '0.17'
224
305
  type: :development
225
306
  prerelease: false
226
307
  version_requirements: !ruby/object:Gem::Requirement
227
308
  requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ version: 0.17.0
228
312
  - - "~>"
229
313
  - !ruby/object:Gem::Version
230
- version: 0.52.1
314
+ version: '0.17'
231
315
  - !ruby/object:Gem::Dependency
232
- name: simplecov
316
+ name: syntax
233
317
  requirement: !ruby/object:Gem::Requirement
234
318
  requirements:
319
+ - - "~>"
320
+ - !ruby/object:Gem::Version
321
+ version: '1.2'
235
322
  - - ">="
236
323
  - !ruby/object:Gem::Version
237
- version: 0.6.2
324
+ version: 1.2.2
238
325
  type: :development
239
326
  prerelease: false
240
327
  version_requirements: !ruby/object:Gem::Requirement
241
328
  requirements:
329
+ - - "~>"
330
+ - !ruby/object:Gem::Version
331
+ version: '1.2'
242
332
  - - ">="
243
333
  - !ruby/object:Gem::Version
244
- version: 0.6.2
334
+ version: 1.2.2
245
335
  - !ruby/object:Gem::Dependency
246
- name: syntax
336
+ name: test-unit
247
337
  requirement: !ruby/object:Gem::Requirement
248
338
  requirements:
339
+ - - "~>"
340
+ - !ruby/object:Gem::Version
341
+ version: '1.2'
249
342
  - - ">="
250
343
  - !ruby/object:Gem::Version
251
- version: 1.0.0
344
+ version: 1.2.3
252
345
  type: :development
253
346
  prerelease: false
254
347
  version_requirements: !ruby/object:Gem::Requirement
255
348
  requirements:
349
+ - - "~>"
350
+ - !ruby/object:Gem::Version
351
+ version: '1.2'
256
352
  - - ">="
257
353
  - !ruby/object:Gem::Version
258
- version: 1.0.0
354
+ version: 1.2.3
259
355
  - !ruby/object:Gem::Dependency
260
- name: octokit
356
+ name: webrick
261
357
  requirement: !ruby/object:Gem::Requirement
262
358
  requirements:
263
359
  - - ">="
264
360
  - !ruby/object:Gem::Version
265
- version: '0'
361
+ version: 1.6.0
362
+ - - "~>"
363
+ - !ruby/object:Gem::Version
364
+ version: '1.6'
266
365
  type: :development
267
366
  prerelease: false
268
367
  version_requirements: !ruby/object:Gem::Requirement
269
368
  requirements:
270
369
  - - ">="
271
370
  - !ruby/object:Gem::Version
272
- version: '0'
371
+ version: 1.6.0
372
+ - - "~>"
373
+ - !ruby/object:Gem::Version
374
+ version: '1.6'
273
375
  - !ruby/object:Gem::Dependency
274
- name: capybara
376
+ name: octokit
275
377
  requirement: !ruby/object:Gem::Requirement
276
378
  requirements:
277
379
  - - ">="
278
380
  - !ruby/object:Gem::Version
279
- version: '2.1'
381
+ version: 4.14.0
382
+ - - "~>"
383
+ - !ruby/object:Gem::Version
384
+ version: '4.14'
280
385
  type: :development
281
386
  prerelease: false
282
387
  version_requirements: !ruby/object:Gem::Requirement
283
388
  requirements:
284
389
  - - ">="
285
390
  - !ruby/object:Gem::Version
286
- version: '2.1'
391
+ version: 4.14.0
392
+ - - "~>"
393
+ - !ruby/object:Gem::Version
394
+ version: '4.14'
287
395
  - !ruby/object:Gem::Dependency
288
396
  name: rack-test
289
397
  requirement: !ruby/object:Gem::Requirement
290
398
  requirements:
291
399
  - - ">="
292
400
  - !ruby/object:Gem::Version
293
- version: 0.6.1
401
+ version: 1.1.0
402
+ - - "~>"
403
+ - !ruby/object:Gem::Version
404
+ version: '1.1'
294
405
  type: :development
295
406
  prerelease: false
296
407
  version_requirements: !ruby/object:Gem::Requirement
297
408
  requirements:
298
409
  - - ">="
299
410
  - !ruby/object:Gem::Version
300
- version: 0.6.1
411
+ version: 1.1.0
412
+ - - "~>"
413
+ - !ruby/object:Gem::Version
414
+ version: '1.1'
301
415
  - !ruby/object:Gem::Dependency
302
416
  name: sinatra
303
417
  requirement: !ruby/object:Gem::Requirement
304
418
  requirements:
419
+ - - "~>"
420
+ - !ruby/object:Gem::Version
421
+ version: '2.0'
305
422
  - - ">="
306
423
  - !ruby/object:Gem::Version
307
- version: 1.3.2
424
+ version: 2.0.5
308
425
  type: :development
309
426
  prerelease: false
310
427
  version_requirements: !ruby/object:Gem::Requirement
311
428
  requirements:
429
+ - - "~>"
430
+ - !ruby/object:Gem::Version
431
+ version: '2.0'
312
432
  - - ">="
313
433
  - !ruby/object:Gem::Version
314
- version: 1.3.2
434
+ version: 2.0.5
435
+ - !ruby/object:Gem::Dependency
436
+ name: capybara
437
+ requirement: !ruby/object:Gem::Requirement
438
+ requirements:
439
+ - - '='
440
+ - !ruby/object:Gem::Version
441
+ version: 3.15.0
442
+ type: :development
443
+ prerelease: false
444
+ version_requirements: !ruby/object:Gem::Requirement
445
+ requirements:
446
+ - - '='
447
+ - !ruby/object:Gem::Version
448
+ version: 3.15.0
315
449
  description: Behaviour Driven Development with elegance and joy
316
450
  email: cukes@googlegroups.com
317
451
  executables:
@@ -345,16 +479,22 @@ files:
345
479
  - lib/cucumber/encoding.rb
346
480
  - lib/cucumber/errors.rb
347
481
  - lib/cucumber/events.rb
348
- - lib/cucumber/events/gherkin_source_parsed.rb~
482
+ - lib/cucumber/events/envelope.rb
483
+ - lib/cucumber/events/gherkin_source_parsed.rb
349
484
  - lib/cucumber/events/gherkin_source_read.rb
485
+ - lib/cucumber/events/hook_test_step_created.rb
350
486
  - lib/cucumber/events/step_activated.rb
351
487
  - lib/cucumber/events/step_definition_registered.rb
488
+ - lib/cucumber/events/test_case_created.rb
352
489
  - lib/cucumber/events/test_case_finished.rb
490
+ - lib/cucumber/events/test_case_ready.rb
353
491
  - lib/cucumber/events/test_case_started.rb
354
492
  - lib/cucumber/events/test_run_finished.rb
355
493
  - lib/cucumber/events/test_run_started.rb
494
+ - lib/cucumber/events/test_step_created.rb
356
495
  - lib/cucumber/events/test_step_finished.rb
357
496
  - lib/cucumber/events/test_step_started.rb
497
+ - lib/cucumber/events/undefined_parameter_type.rb
358
498
  - lib/cucumber/file_specs.rb
359
499
  - lib/cucumber/filters.rb
360
500
  - lib/cucumber/filters/activate_steps.rb
@@ -362,6 +502,7 @@ files:
362
502
  - lib/cucumber/filters/apply_after_step_hooks.rb
363
503
  - lib/cucumber/filters/apply_around_hooks.rb
364
504
  - lib/cucumber/filters/apply_before_hooks.rb
505
+ - lib/cucumber/filters/broadcast_test_case_ready_event.rb
365
506
  - lib/cucumber/filters/broadcast_test_run_started_event.rb
366
507
  - lib/cucumber/filters/gated_receiver.rb
367
508
  - lib/cucumber/filters/prepare_world.rb
@@ -372,34 +513,32 @@ files:
372
513
  - lib/cucumber/filters/tag_limits/test_case_index.rb
373
514
  - lib/cucumber/filters/tag_limits/verifier.rb
374
515
  - lib/cucumber/formatter/ansicolor.rb
375
- - lib/cucumber/formatter/ast_lookup.rb~
516
+ - lib/cucumber/formatter/ast_lookup.rb
376
517
  - lib/cucumber/formatter/backtrace_filter.rb
377
518
  - lib/cucumber/formatter/console.rb
378
519
  - lib/cucumber/formatter/console_counts.rb
379
520
  - lib/cucumber/formatter/console_issues.rb
380
- - lib/cucumber/formatter/cucumber.css
381
- - lib/cucumber/formatter/cucumber.sass
382
521
  - lib/cucumber/formatter/duration.rb
383
522
  - lib/cucumber/formatter/duration_extractor.rb
523
+ - lib/cucumber/formatter/errors.rb
384
524
  - lib/cucumber/formatter/fail_fast.rb
385
525
  - lib/cucumber/formatter/fanout.rb
386
- - lib/cucumber/formatter/hook_query_visitor.rb
387
526
  - lib/cucumber/formatter/html.rb
388
- - lib/cucumber/formatter/html_builder.rb
527
+ - lib/cucumber/formatter/http_io.rb
389
528
  - lib/cucumber/formatter/ignore_missing_messages.rb
390
- - lib/cucumber/formatter/inline-js.js
391
529
  - lib/cucumber/formatter/interceptor.rb
392
530
  - lib/cucumber/formatter/io.rb
393
- - lib/cucumber/formatter/jquery-min.js
394
531
  - lib/cucumber/formatter/json.rb
395
- - lib/cucumber/formatter/json_pretty.rb
396
532
  - lib/cucumber/formatter/junit.rb
397
- - lib/cucumber/formatter/legacy_api/adapter.rb
398
- - lib/cucumber/formatter/legacy_api/ast.rb
399
- - lib/cucumber/formatter/legacy_api/results.rb
400
- - lib/cucumber/formatter/legacy_api/runtime_facade.rb
533
+ - lib/cucumber/formatter/message.rb
534
+ - lib/cucumber/formatter/message_builder.rb
401
535
  - lib/cucumber/formatter/pretty.rb
402
536
  - lib/cucumber/formatter/progress.rb
537
+ - lib/cucumber/formatter/query/hook_by_test_step.rb
538
+ - lib/cucumber/formatter/query/pickle_by_test.rb
539
+ - lib/cucumber/formatter/query/pickle_step_by_test_step.rb
540
+ - lib/cucumber/formatter/query/step_definitions_by_test_step.rb
541
+ - lib/cucumber/formatter/query/test_case_started_by_test_case.rb
403
542
  - lib/cucumber/formatter/rerun.rb
404
543
  - lib/cucumber/formatter/stepdefs.rb
405
544
  - lib/cucumber/formatter/steps.rb
@@ -438,7 +577,6 @@ files:
438
577
  - lib/cucumber/runtime/step_hooks.rb
439
578
  - lib/cucumber/runtime/support_code.rb
440
579
  - lib/cucumber/runtime/user_interface.rb
441
- - lib/cucumber/step_argument.rb
442
580
  - lib/cucumber/step_definition_light.rb
443
581
  - lib/cucumber/step_definitions.rb
444
582
  - lib/cucumber/step_match.rb
@@ -450,7 +588,12 @@ files:
450
588
  homepage: https://cucumber.io/
451
589
  licenses:
452
590
  - MIT
453
- metadata: {}
591
+ metadata:
592
+ bug_tracker_uri: https://github.com/cucumber/cucumber-ruby/issues
593
+ changelog_uri: https://github.com/cucumber/cucumber-ruby/blob/master/CHANGELOG.md
594
+ documentation_uri: https://www.rubydoc.info/github/cucumber/cucumber-ruby/
595
+ mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
596
+ source_code_uri: https://github.com/cucumber/cucumber-ruby
454
597
  post_install_message:
455
598
  rdoc_options:
456
599
  - "--charset=UTF-8"
@@ -460,16 +603,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
460
603
  requirements:
461
604
  - - ">="
462
605
  - !ruby/object:Gem::Version
463
- version: '2.2'
606
+ version: '2.3'
464
607
  required_rubygems_version: !ruby/object:Gem::Requirement
465
608
  requirements:
466
609
  - - ">="
467
610
  - !ruby/object:Gem::Version
468
611
  version: '0'
469
612
  requirements: []
470
- rubyforge_project:
471
- rubygems_version: 2.5.2
613
+ rubygems_version: 3.0.6
472
614
  signing_key:
473
615
  specification_version: 4
474
- summary: cucumber-3.1.2
616
+ summary: cucumber-4.0.0
475
617
  test_files: []