cucumber 3.0.0.pre.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.
- checksums.yaml +4 -4
- data/.gitattributes +32 -0
- data/.github/ISSUE_TEMPLATE.md +1 -1
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- data/.rubocop_todo.yml +1 -85
- data/.travis.yml +2 -2
- data/{History.md → CHANGELOG.md} +69 -13
- data/appveyor.yml +2 -1
- data/bin/cucumber +2 -1
- data/cucumber.gemspec +1 -1
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/bg/features/support/env.rb +6 -1
- data/examples/i18n/bg/lib/calculator.rb +2 -1
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +6 -1
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/en-lol/features/support/env.rb +6 -2
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +6 -1
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +6 -1
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +6 -1
- data/examples/i18n/fr/features/support/env.rb +6 -1
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +6 -2
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +6 -1
- data/examples/i18n/ja/features/support/env.rb +6 -1
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/no/features/support/env.rb +6 -1
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/pl/features/support/env.rb +6 -1
- data/examples/i18n/pt/features/support/env.rb +6 -1
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/ru/features/support/env.rb +6 -1
- data/examples/i18n/ru/lib/calculator.rb +2 -1
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/sr-Cyrl/features/support/env.rb +6 -1
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +6 -1
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +6 -1
- data/examples/i18n/uk/features/support/env.rb +6 -1
- data/examples/i18n/uk/lib/calculator.rb +2 -1
- data/examples/i18n/uz/features/support/env.rb +6 -1
- data/examples/i18n/uz/lib/calculator.rb +2 -1
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +6 -1
- data/examples/sinatra/features/support/env.rb +6 -1
- data/examples/tcl/features/support/env.rb +2 -1
- data/examples/watir/features/step_definitions/search_steps.rb +4 -3
- data/examples/watir/features/support/env.rb +5 -1
- data/features/docs/api/listen_for_events.feature +2 -2
- data/features/docs/cli/execute_with_tag_filter.feature +4 -2
- data/features/docs/defining_steps/ambiguous_steps.feature +89 -0
- data/features/docs/events/{test_case_starting_event.feature → test_case_started_event.feature} +3 -3
- data/features/docs/events/{test_run_starting_event.feature → test_run_started_event.feature} +5 -5
- data/features/docs/events/test_step_finished_event.feature +1 -1
- data/features/docs/events/{test_step_starting_event.feature → test_step_started_event.feature} +3 -3
- data/features/docs/extending_cucumber/custom_formatter.feature +5 -33
- data/features/docs/gherkin/outlines.feature +2 -4
- data/features/docs/writing_support_code/parameter_types.feature +1 -23
- data/features/lib/step_definitions/iso-8859-1_steps.rb +6 -3
- data/features/lib/support/fake_wire_server.rb +9 -1
- data/features/lib/support/parameter_types.rb +1 -4
- data/gem_tasks/fix_cr_lf.rake +17 -6
- data/lib/autotest/cucumber_mixin.rb +1 -1
- data/lib/cucumber/cli/configuration.rb +2 -2
- data/lib/cucumber/cli/options.rb +62 -41
- data/lib/cucumber/cli/profile_loader.rb +1 -1
- data/lib/cucumber/configuration.rb +3 -2
- data/lib/cucumber/deprecate.rb +2 -2
- data/lib/cucumber/events.rb +3 -3
- data/lib/cucumber/events/test_case_finished.rb +1 -1
- data/lib/cucumber/events/{test_case_starting.rb → test_case_started.rb} +1 -1
- data/lib/cucumber/events/{test_run_starting.rb → test_run_started.rb} +1 -1
- data/lib/cucumber/events/{test_step_starting.rb → test_step_started.rb} +1 -1
- data/lib/cucumber/filters.rb +1 -1
- data/lib/cucumber/filters/activate_steps.rb +6 -2
- data/lib/cucumber/filters/{broadcast_test_run_starting_event.rb → broadcast_test_run_started_event.rb} +2 -2
- data/lib/cucumber/formatter/console.rb +1 -1
- data/lib/cucumber/formatter/console_issues.rb +2 -2
- data/lib/cucumber/formatter/fail_fast.rb +1 -1
- data/lib/cucumber/formatter/html.rb +9 -10
- data/lib/cucumber/formatter/html_builder.rb +21 -11
- data/lib/cucumber/formatter/io.rb +1 -1
- data/lib/cucumber/formatter/json.rb +13 -12
- data/lib/cucumber/formatter/junit.rb +7 -7
- data/lib/cucumber/formatter/legacy_api/adapter.rb +30 -14
- data/lib/cucumber/formatter/legacy_api/ast.rb +10 -2
- data/lib/cucumber/formatter/progress.rb +2 -2
- data/lib/cucumber/formatter/rerun.rb +1 -1
- data/lib/cucumber/formatter/summary.rb +1 -1
- data/lib/cucumber/glue/dsl.rb +7 -25
- data/lib/cucumber/glue/proto_world.rb +0 -5
- data/lib/cucumber/hooks.rb +4 -4
- data/lib/cucumber/multiline_argument.rb +3 -11
- data/lib/cucumber/multiline_argument/data_table.rb +5 -3
- data/lib/cucumber/project_initializer.rb +1 -1
- data/lib/cucumber/rake/task.rb +8 -4
- data/lib/cucumber/runtime.rb +2 -2
- data/lib/cucumber/runtime/support_code.rb +1 -1
- data/lib/cucumber/runtime/user_interface.rb +5 -5
- data/lib/cucumber/step_match.rb +13 -0
- data/lib/cucumber/version +1 -1
- data/scripts/{update-history → update-changelog} +14 -11
- data/spec/cucumber/cli/configuration_spec.rb +13 -1
- data/spec/cucumber/cli/options_spec.rb +1 -1
- data/spec/cucumber/filters/activate_steps_spec.rb +4 -4
- data/spec/cucumber/formatter/fail_fast_spec.rb +1 -1
- data/spec/cucumber/formatter/html_spec.rb +1 -1
- data/spec/cucumber/formatter/json_spec.rb +26 -51
- data/spec/cucumber/formatter/junit_spec.rb +4 -4
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +86 -98
- data/spec/cucumber/formatter/pretty_spec.rb +0 -13
- data/spec/cucumber/glue/snippet_spec.rb +2 -2
- data/spec/cucumber/hooks_spec.rb +2 -2
- data/spec/cucumber/multiline_argument/data_table_spec.rb +10 -5
- data/spec/cucumber/rake/forked_spec.rb +15 -11
- data/spec/cucumber/world/pending_spec.rb +1 -1
- data/spec/support/standard_step_actions.rb +1 -1
- metadata +25 -25
- data/features/docs/formatters/formatter_step_file_colon_line.feature +0 -44
|
@@ -10,11 +10,6 @@ module Cucumber
|
|
|
10
10
|
# make sense in your domain. For more on that, see {Cucumber::Glue::Dsl#World}
|
|
11
11
|
module ProtoWorld
|
|
12
12
|
|
|
13
|
-
# Call a Transform with a string from another Transform definition
|
|
14
|
-
def Transform(arg)
|
|
15
|
-
super
|
|
16
|
-
end
|
|
17
|
-
|
|
18
13
|
# Run a single Gherkin step
|
|
19
14
|
# @example Call another step
|
|
20
15
|
# step "I am logged in"
|
data/lib/cucumber/hooks.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Cucumber
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def after_step_hook(source, location, &block)
|
|
22
|
-
raise ArgumentError unless source.last.
|
|
22
|
+
raise ArgumentError unless source.last.is_a?(Core::Ast::Step)
|
|
23
23
|
build_hook_step(source, location, block, AfterStepHook, Core::Test::Action)
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -43,7 +43,7 @@ module Cucumber
|
|
|
43
43
|
@location = location
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def
|
|
46
|
+
def text
|
|
47
47
|
'After hook'
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -63,7 +63,7 @@ module Cucumber
|
|
|
63
63
|
@location = location
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
def
|
|
66
|
+
def text
|
|
67
67
|
'Before hook'
|
|
68
68
|
end
|
|
69
69
|
|
|
@@ -83,7 +83,7 @@ module Cucumber
|
|
|
83
83
|
@location = location
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
def
|
|
86
|
+
def text
|
|
87
87
|
'AfterStep hook'
|
|
88
88
|
end
|
|
89
89
|
|
|
@@ -11,14 +11,14 @@ module Cucumber
|
|
|
11
11
|
builder.wrap(node)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def from(argument, location=nil)
|
|
14
|
+
def from(argument, location=nil, content_type=nil)
|
|
15
15
|
location ||= Core::Ast::Location.of_caller
|
|
16
16
|
case argument
|
|
17
17
|
when String
|
|
18
|
-
doc_string(argument,
|
|
18
|
+
builder.doc_string(Core::Ast::DocString.new(argument, content_type, location))
|
|
19
19
|
when Array
|
|
20
20
|
location = location.on_line(argument.first.line..argument.last.line)
|
|
21
|
-
data_table(argument.map{ |row| row.cells }, location)
|
|
21
|
+
builder.data_table(argument.map{ |row| row.cells }, location)
|
|
22
22
|
when DataTable, DocString, None
|
|
23
23
|
argument
|
|
24
24
|
when nil
|
|
@@ -28,14 +28,6 @@ module Cucumber
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def doc_string(argument, content_type, location)
|
|
32
|
-
builder.doc_string(Core::Ast::DocString.new(argument, content_type, location))
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def data_table(data, location)
|
|
36
|
-
builder.data_table(Core::Ast::DataTable.new(data, location))
|
|
37
|
-
end
|
|
38
|
-
|
|
39
31
|
private
|
|
40
32
|
|
|
41
33
|
def builder
|
|
@@ -82,7 +82,7 @@ module Cucumber
|
|
|
82
82
|
# @param header_mappings [Hash] see map_headers!
|
|
83
83
|
# @param header_conversion_proc [Proc] see map_headers!
|
|
84
84
|
def initialize(data, conversion_procs = NULL_CONVERSIONS.dup, header_mappings = {}, header_conversion_proc = nil)
|
|
85
|
-
raise ArgumentError, 'data must be a Core::Ast::DataTable' unless data.
|
|
85
|
+
raise ArgumentError, 'data must be a Core::Ast::DataTable' unless data.is_a? Core::Ast::DataTable
|
|
86
86
|
ast_table = data
|
|
87
87
|
# Verify that it's square
|
|
88
88
|
ast_table.transpose
|
|
@@ -159,8 +159,10 @@ module Cucumber
|
|
|
159
159
|
# [{:foo => '2', :bar => '3', :foo_bar => '5'}, {:foo => '7', :bar => '9', :foo_bar => '16'}]
|
|
160
160
|
#
|
|
161
161
|
def symbolic_hashes
|
|
162
|
-
@
|
|
163
|
-
|
|
162
|
+
@symbolic_hashes ||=
|
|
163
|
+
self.hashes.map do |string_hash|
|
|
164
|
+
Hash[string_hash.map{ |a,b| [symbolize_key(a), b] }]
|
|
165
|
+
end
|
|
164
166
|
end
|
|
165
167
|
|
|
166
168
|
# Converts this table into a Hash where the first column is
|
data/lib/cucumber/rake/task.rb
CHANGED
|
@@ -81,11 +81,15 @@ module Cucumber
|
|
|
81
81
|
|
|
82
82
|
def cmd
|
|
83
83
|
if use_bundler
|
|
84
|
-
[
|
|
85
|
-
|
|
84
|
+
[
|
|
85
|
+
Cucumber::RUBY_BINARY,'-S', 'bundle', 'exec', 'cucumber',
|
|
86
|
+
@cucumber_opts, @feature_files
|
|
87
|
+
].flatten
|
|
86
88
|
else
|
|
87
|
-
[
|
|
88
|
-
|
|
89
|
+
[
|
|
90
|
+
Cucumber::RUBY_BINARY, '-I', load_path,
|
|
91
|
+
quoted_binary(@cucumber_bin), @cucumber_opts, @feature_files
|
|
92
|
+
].flatten
|
|
89
93
|
end
|
|
90
94
|
end
|
|
91
95
|
|
data/lib/cucumber/runtime.rb
CHANGED
|
@@ -229,7 +229,7 @@ module Cucumber
|
|
|
229
229
|
if @configuration.wip?
|
|
230
230
|
summary_report.test_cases.total_passed > 0
|
|
231
231
|
else
|
|
232
|
-
!summary_report.ok?(@configuration.strict
|
|
232
|
+
!summary_report.ok?(@configuration.strict)
|
|
233
233
|
end
|
|
234
234
|
end
|
|
235
235
|
public :failure?
|
|
@@ -256,7 +256,7 @@ module Cucumber
|
|
|
256
256
|
filters << Filters::ApplyBeforeHooks.new(@support_code)
|
|
257
257
|
filters << Filters::ApplyAfterHooks.new(@support_code)
|
|
258
258
|
filters << Filters::ApplyAroundHooks.new(@support_code)
|
|
259
|
-
filters << Filters::
|
|
259
|
+
filters << Filters::BroadcastTestRunStartedEvent.new(@configuration)
|
|
260
260
|
filters << Filters::Quit.new
|
|
261
261
|
filters << Filters::Retry.new(@configuration)
|
|
262
262
|
# need to do this last so it becomes the first test step
|
|
@@ -34,7 +34,7 @@ module Cucumber
|
|
|
34
34
|
|
|
35
35
|
if argument
|
|
36
36
|
if argument[:type] == :DocString
|
|
37
|
-
MultilineArgument.
|
|
37
|
+
MultilineArgument.from(argument[:content], location, argument[:content_type])
|
|
38
38
|
else
|
|
39
39
|
MultilineArgument::DataTable.from(argument[:rows].map { |row| row[:cells].map { |cell| cell[:value] } })
|
|
40
40
|
end
|
|
@@ -33,11 +33,11 @@ module Cucumber
|
|
|
33
33
|
STDOUT.flush
|
|
34
34
|
puts(question)
|
|
35
35
|
|
|
36
|
-
if(Cucumber::JRUBY)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
answer = if(Cucumber::JRUBY)
|
|
37
|
+
jruby_gets(timeout_seconds)
|
|
38
|
+
else
|
|
39
|
+
mri_gets(timeout_seconds)
|
|
40
|
+
end
|
|
41
41
|
|
|
42
42
|
raise("Waited for input for #{timeout_seconds} seconds, then timed out.") unless answer
|
|
43
43
|
puts(answer)
|
data/lib/cucumber/step_match.rb
CHANGED
|
@@ -140,4 +140,17 @@ module Cucumber
|
|
|
140
140
|
return test_step
|
|
141
141
|
end
|
|
142
142
|
end
|
|
143
|
+
|
|
144
|
+
class AmbiguousStepMatch
|
|
145
|
+
|
|
146
|
+
def initialize(error)
|
|
147
|
+
@error = error
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def activate(test_step)
|
|
151
|
+
return test_step.with_action { raise @error }
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
end
|
|
155
|
+
|
|
143
156
|
end
|
data/lib/cucumber/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.0.0
|
|
1
|
+
3.0.0
|
|
@@ -11,7 +11,10 @@ class PullRequest
|
|
|
11
11
|
|
|
12
12
|
def entry
|
|
13
13
|
pr = gh.pull_request('cucumber/cucumber-ruby', num)
|
|
14
|
-
|
|
14
|
+
username = pr['user']['login']
|
|
15
|
+
url = pr['html_url']
|
|
16
|
+
title = pr['title']
|
|
17
|
+
"#{title} ([##{num}](#{url}) [@#{username}](https://github.com/#{username}))"
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
def labels
|
|
@@ -32,12 +35,12 @@ class PullRequest
|
|
|
32
35
|
end
|
|
33
36
|
end
|
|
34
37
|
|
|
35
|
-
class
|
|
38
|
+
class Changelog
|
|
36
39
|
def self.open(path, &block)
|
|
37
|
-
full_path = File.expand_path(File.dirname(__FILE__) + '/' + path + '/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
File.write(full_path,
|
|
40
|
+
full_path = File.expand_path(File.dirname(__FILE__) + '/' + path + '/CHANGELOG.md')
|
|
41
|
+
log = new(File.read(full_path))
|
|
42
|
+
log.instance_exec(&block)
|
|
43
|
+
File.write(full_path, log.body)
|
|
41
44
|
end
|
|
42
45
|
|
|
43
46
|
attr_reader :lines
|
|
@@ -49,16 +52,16 @@ class HistoryFile
|
|
|
49
52
|
def insert(label, entry)
|
|
50
53
|
section_index = lines.index { |line| line.strip == heading_for(label) }
|
|
51
54
|
unless section_index
|
|
52
|
-
raise("Unable to find matching heading in
|
|
55
|
+
raise("Unable to find matching heading in CHANGELOG.md for '#{label}' (#{heading_for(label)})")
|
|
53
56
|
end
|
|
54
57
|
lines.insert(section_index + 2, "* #{entry}\n")
|
|
55
58
|
end
|
|
56
59
|
|
|
57
60
|
def heading_for(label)
|
|
58
61
|
text = {
|
|
59
|
-
'type: new feature' => '
|
|
60
|
-
'type: bug' => '
|
|
61
|
-
'type: refactoring / developer experience' => '
|
|
62
|
+
'type: new feature' => 'Added',
|
|
63
|
+
'type: bug' => 'Fixed',
|
|
64
|
+
'type: refactoring / developer experience' => 'Changed'
|
|
62
65
|
}.fetch(label)
|
|
63
66
|
"### #{text}"
|
|
64
67
|
end
|
|
@@ -75,7 +78,7 @@ begin
|
|
|
75
78
|
gh = Octokit::Client.new(access_token: token)
|
|
76
79
|
pr = PullRequest.new(gh, num)
|
|
77
80
|
|
|
78
|
-
|
|
81
|
+
Changelog.open('..') do
|
|
79
82
|
insert(pr.type_label, pr.entry)
|
|
80
83
|
end
|
|
81
84
|
rescue StandardError => error
|
|
@@ -71,7 +71,19 @@ module Cli
|
|
|
71
71
|
|
|
72
72
|
config.parse!(%w{--profile bongo})
|
|
73
73
|
|
|
74
|
-
expect(config.options[:strict]).to be true
|
|
74
|
+
expect(config.options[:strict].strict?(:undefined)).to be true
|
|
75
|
+
expect(config.options[:strict].strict?(:pending)).to be true
|
|
76
|
+
expect(config.options[:strict].strict?(:flaky)).to be true
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'allows --strict from a profile to be selectively overridden' do
|
|
80
|
+
given_cucumber_yml_defined_as({'bongo' => '--strict'})
|
|
81
|
+
|
|
82
|
+
config.parse!(%w{--profile bongo --no-strict-flaky})
|
|
83
|
+
|
|
84
|
+
expect(config.options[:strict].strict?(:undefined)).to be true
|
|
85
|
+
expect(config.options[:strict].strict?(:pending)).to be true
|
|
86
|
+
expect(config.options[:strict].strict?(:flaky)).to be false
|
|
75
87
|
end
|
|
76
88
|
|
|
77
89
|
it 'parses ERB syntax in the cucumber.yml file' do
|
|
@@ -27,7 +27,7 @@ describe Cucumber::Filters::ActivateSteps do
|
|
|
27
27
|
|
|
28
28
|
it 'activates each step' do
|
|
29
29
|
expect(step_match).to receive(:activate) do |test_step|
|
|
30
|
-
expect(test_step.
|
|
30
|
+
expect(test_step.text).to eq 'a passing step'
|
|
31
31
|
end
|
|
32
32
|
compile [doc], receiver, [filter]
|
|
33
33
|
end
|
|
@@ -35,7 +35,7 @@ describe Cucumber::Filters::ActivateSteps do
|
|
|
35
35
|
it 'notifies with a StepActivated event' do
|
|
36
36
|
expect(configuration).to receive(:notify) do |message, test_step, step_match|
|
|
37
37
|
expect(message).to eq :step_activated
|
|
38
|
-
expect(test_step.
|
|
38
|
+
expect(test_step.text).to eq 'a passing step'
|
|
39
39
|
expect(step_match).to eq step_match
|
|
40
40
|
end
|
|
41
41
|
compile [doc], receiver, [filter]
|
|
@@ -60,7 +60,7 @@ describe Cucumber::Filters::ActivateSteps do
|
|
|
60
60
|
|
|
61
61
|
it 'activates each step' do
|
|
62
62
|
expect(step_match).to receive(:activate) do |test_step|
|
|
63
|
-
expect(test_step.
|
|
63
|
+
expect(test_step.text).to eq 'a passing step'
|
|
64
64
|
end
|
|
65
65
|
compile [doc], receiver, [filter]
|
|
66
66
|
end
|
|
@@ -115,7 +115,7 @@ describe Cucumber::Filters::ActivateSteps do
|
|
|
115
115
|
it 'notifies with a StepActivated event' do
|
|
116
116
|
expect(configuration).to receive(:notify) do |message, test_step, step_match|
|
|
117
117
|
expect(message).to eq :step_activated
|
|
118
|
-
expect(test_step.
|
|
118
|
+
expect(test_step.text).to eq 'a passing step'
|
|
119
119
|
expect(step_match).to eq step_match
|
|
120
120
|
end
|
|
121
121
|
compile [doc], receiver, [filter]
|
|
@@ -75,7 +75,7 @@ module Cucumber::Formatter
|
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
context 'in strict mode' do
|
|
78
|
-
let(:configuration) { Cucumber::Configuration.new strict:
|
|
78
|
+
let(:configuration) { Cucumber::Configuration.new strict: Cucumber::Core::Test::Result::StrictConfiguration.new([:undefined]) }
|
|
79
79
|
|
|
80
80
|
it 'sets Cucumber.wants_to_quit' do
|
|
81
81
|
execute [@gherkin], [StandardStepActions.new], configuration.event_bus
|
|
@@ -18,31 +18,6 @@ module Cucumber
|
|
|
18
18
|
run_defined_feature
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
describe 'with a scenario with no steps' do
|
|
22
|
-
define_feature <<-FEATURE
|
|
23
|
-
Feature: Banana party
|
|
24
|
-
|
|
25
|
-
Scenario: Monkey eats bananas
|
|
26
|
-
FEATURE
|
|
27
|
-
|
|
28
|
-
it 'outputs the json data' do
|
|
29
|
-
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
30
|
-
[{"id": "banana-party",
|
|
31
|
-
"uri": "spec.feature",
|
|
32
|
-
"keyword": "Feature",
|
|
33
|
-
"name": "Banana party",
|
|
34
|
-
"line": 1,
|
|
35
|
-
"description": "",
|
|
36
|
-
"elements":
|
|
37
|
-
[{"id": "banana-party;monkey-eats-bananas",
|
|
38
|
-
"keyword": "Scenario",
|
|
39
|
-
"name": "Monkey eats bananas",
|
|
40
|
-
"line": 3,
|
|
41
|
-
"description": "",
|
|
42
|
-
"type": "scenario"}]}]})
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
21
|
describe 'with a scenario with an undefined step' do
|
|
47
22
|
define_feature <<-FEATURE
|
|
48
23
|
Feature: Banana party
|
|
@@ -106,7 +81,7 @@ module Cucumber
|
|
|
106
81
|
[{"keyword": "Given ",
|
|
107
82
|
"name": "there are bananas",
|
|
108
83
|
"line": 4,
|
|
109
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
84
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:62"},
|
|
110
85
|
"result": {"status": "passed",
|
|
111
86
|
"duration": 1}}]}]}]})
|
|
112
87
|
end
|
|
@@ -143,9 +118,9 @@ module Cucumber
|
|
|
143
118
|
[{"keyword": "Given ",
|
|
144
119
|
"name": "there are bananas",
|
|
145
120
|
"line": 4,
|
|
146
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
121
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:99"},
|
|
147
122
|
"result": {"status": "failed",
|
|
148
|
-
"error_message": "no bananas (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:
|
|
123
|
+
"error_message": "no bananas (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:99:in `/^there are bananas$/'\\nspec.feature:4:in `Given there are bananas'",
|
|
149
124
|
"duration": 1}}]}]}]})
|
|
150
125
|
end
|
|
151
126
|
end
|
|
@@ -181,9 +156,9 @@ module Cucumber
|
|
|
181
156
|
[{"keyword": "Given ",
|
|
182
157
|
"name": "there are bananas",
|
|
183
158
|
"line": 4,
|
|
184
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
159
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:137"},
|
|
185
160
|
"result": {"status": "pending",
|
|
186
|
-
"error_message": "TODO (Cucumber::Pending)\\n./spec/cucumber/formatter/json_spec.rb:
|
|
161
|
+
"error_message": "TODO (Cucumber::Pending)\\n./spec/cucumber/formatter/json_spec.rb:137:in `/^there are bananas$/'\\nspec.feature:4:in `Given there are bananas'",
|
|
187
162
|
"duration": 1}}]}]}]})
|
|
188
163
|
end
|
|
189
164
|
end
|
|
@@ -223,7 +198,7 @@ module Cucumber
|
|
|
223
198
|
[{"keyword": "Given ",
|
|
224
199
|
"name": "there are bananas",
|
|
225
200
|
"line": 8,
|
|
226
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
201
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:179"},
|
|
227
202
|
"result": {"status": "passed",
|
|
228
203
|
"duration": 1}}]}]}]})
|
|
229
204
|
end
|
|
@@ -277,7 +252,7 @@ module Cucumber
|
|
|
277
252
|
[{"keyword": "Given ",
|
|
278
253
|
"name": "there are bananas",
|
|
279
254
|
"line": 6,
|
|
280
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
255
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:227"},
|
|
281
256
|
"result": {"status": "passed",
|
|
282
257
|
"duration": 1}}]},
|
|
283
258
|
{"id": "banana-party;monkey-eats-bananas;fruit-table;2",
|
|
@@ -296,7 +271,7 @@ module Cucumber
|
|
|
296
271
|
[{"keyword": "Given ",
|
|
297
272
|
"name": "there are bananas",
|
|
298
273
|
"line": 15,
|
|
299
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
274
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:227"},
|
|
300
275
|
"result": {"status": "passed",
|
|
301
276
|
"duration": 1}}]}]}]})
|
|
302
277
|
end
|
|
@@ -355,7 +330,7 @@ module Cucumber
|
|
|
355
330
|
[{"keyword": "Given ",
|
|
356
331
|
"name": "there are bananas",
|
|
357
332
|
"line": 6,
|
|
358
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
333
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:307"},
|
|
359
334
|
"result": {"status": "passed",
|
|
360
335
|
"duration": 1}}]},
|
|
361
336
|
{"id": "banana-party;monkey-eats-bananas",
|
|
@@ -372,7 +347,7 @@ module Cucumber
|
|
|
372
347
|
"line": 11,
|
|
373
348
|
"comments": [{"value": "#step comment1",
|
|
374
349
|
"line": 10}],
|
|
375
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
350
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:308"},
|
|
376
351
|
"result": {"status": "passed",
|
|
377
352
|
"duration": 1}}]},
|
|
378
353
|
{"keyword": "Background",
|
|
@@ -386,7 +361,7 @@ module Cucumber
|
|
|
386
361
|
[{"keyword": "Given ",
|
|
387
362
|
"name": "there are bananas",
|
|
388
363
|
"line": 6,
|
|
389
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
364
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:307"},
|
|
390
365
|
"result": {"status": "passed",
|
|
391
366
|
"duration": 1}}]},
|
|
392
367
|
{"id": "banana-party;monkey-eats-bananas;fruit-table;2",
|
|
@@ -407,7 +382,7 @@ module Cucumber
|
|
|
407
382
|
"line": 22,
|
|
408
383
|
"comments": [{"value": "#step comment2",
|
|
409
384
|
"line": 15}],
|
|
410
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
385
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:308"},
|
|
411
386
|
"result": {"status": "passed",
|
|
412
387
|
"duration": 1}}]}]}]})
|
|
413
388
|
end
|
|
@@ -450,7 +425,7 @@ module Cucumber
|
|
|
450
425
|
"doc_string": {"value": "the doc string",
|
|
451
426
|
"content_type": "",
|
|
452
427
|
"line": 5},
|
|
453
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
428
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:403"},
|
|
454
429
|
"result": {"status": "passed",
|
|
455
430
|
"duration": 1}}]}]}]})
|
|
456
431
|
end
|
|
@@ -488,7 +463,7 @@ module Cucumber
|
|
|
488
463
|
"name": "there are bananas",
|
|
489
464
|
"line": 4,
|
|
490
465
|
"output": ["from step"],
|
|
491
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
466
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:443"},
|
|
492
467
|
"result": {"status": "passed",
|
|
493
468
|
"duration": 1}}]}]}]})
|
|
494
469
|
end
|
|
@@ -600,7 +575,7 @@ module Cucumber
|
|
|
600
575
|
"line": 4,
|
|
601
576
|
"embeddings": [{"mime_type": "mime-type",
|
|
602
577
|
"data": "YWJj"}],
|
|
603
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
578
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:553"},
|
|
604
579
|
"result": {"status": "passed",
|
|
605
580
|
"duration": 1}}]}]}]})
|
|
606
581
|
end
|
|
@@ -645,7 +620,7 @@ module Cucumber
|
|
|
645
620
|
"line": 4,
|
|
646
621
|
"embeddings": [{"mime_type": "image/png",
|
|
647
622
|
"data": "Zm9v"}],
|
|
648
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
623
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:593"},
|
|
649
624
|
"result": {"status": "passed",
|
|
650
625
|
"duration": 1}}]}]}]})
|
|
651
626
|
end
|
|
@@ -686,31 +661,31 @@ module Cucumber
|
|
|
686
661
|
"description": "",
|
|
687
662
|
"type": "scenario",
|
|
688
663
|
"before":
|
|
689
|
-
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
664
|
+
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:638"},
|
|
690
665
|
"result": {"status": "passed",
|
|
691
666
|
"duration": 1}},
|
|
692
|
-
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
667
|
+
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:639"},
|
|
693
668
|
"result": {"status": "passed",
|
|
694
669
|
"duration": 1}}],
|
|
695
670
|
"steps":
|
|
696
671
|
[{"keyword": "Given ",
|
|
697
672
|
"name": "there are bananas",
|
|
698
673
|
"line": 4,
|
|
699
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
674
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:645"},
|
|
700
675
|
"result": {"status": "passed",
|
|
701
676
|
"duration": 1},
|
|
702
677
|
"after":
|
|
703
|
-
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
678
|
+
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:642"},
|
|
704
679
|
"result": {"status": "passed",
|
|
705
680
|
"duration": 1}},
|
|
706
|
-
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
681
|
+
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:643"},
|
|
707
682
|
"result": {"status": "passed",
|
|
708
683
|
"duration": 1}}]}],
|
|
709
684
|
"after":
|
|
710
|
-
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
685
|
+
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:641"},
|
|
711
686
|
"result": {"status": "passed",
|
|
712
687
|
"duration": 1}},
|
|
713
|
-
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
688
|
+
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:640"},
|
|
714
689
|
"result": {"status": "passed",
|
|
715
690
|
"duration": 1}}]}]}]})
|
|
716
691
|
end
|
|
@@ -748,13 +723,13 @@ module Cucumber
|
|
|
748
723
|
[{"keyword": "Given ",
|
|
749
724
|
"name": "there are bananas",
|
|
750
725
|
"line": 4,
|
|
751
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
726
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:704"},
|
|
752
727
|
"result": {"status": "passed",
|
|
753
728
|
"duration": 1}}],
|
|
754
729
|
"around":
|
|
755
730
|
[{"match": {"location": "unknown_hook_location:1"},
|
|
756
731
|
"result": {"status": "failed",
|
|
757
|
-
"error_message": "error (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:
|
|
732
|
+
"error_message": "error (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:703:in `Around'",
|
|
758
733
|
"duration": 1}}]}]}]})
|
|
759
734
|
end
|
|
760
735
|
end
|
|
@@ -795,7 +770,7 @@ module Cucumber
|
|
|
795
770
|
"rows":
|
|
796
771
|
[{"cells": ["aa", "bb"]},
|
|
797
772
|
{"cells": ["cc", "dd"]}],
|
|
798
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
773
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:748"},
|
|
799
774
|
"result": {"status": "passed",
|
|
800
775
|
"duration": 1}}]}]}]})
|
|
801
776
|
end
|