cucumber 3.0.2 → 4.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 +5 -5
- data/CHANGELOG.md +216 -17
- data/CONTRIBUTING.md +4 -21
- data/README.md +8 -10
- data/bin/cucumber +1 -1
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +35 -39
- data/lib/autotest/cucumber_rails.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
- data/lib/autotest/cucumber_rspec.rb +1 -0
- data/lib/autotest/cucumber_rspec2.rb +1 -0
- data/lib/autotest/discover.rb +1 -0
- data/lib/cucumber.rb +2 -1
- data/lib/cucumber/cli/configuration.rb +6 -5
- data/lib/cucumber/cli/main.rb +14 -14
- data/lib/cucumber/cli/options.rb +113 -116
- data/lib/cucumber/cli/profile_loader.rb +50 -29
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +38 -29
- data/lib/cucumber/constantize.rb +8 -10
- data/lib/cucumber/core_ext/string.rb +1 -0
- data/lib/cucumber/deprecate.rb +32 -8
- data/lib/cucumber/encoding.rb +2 -1
- data/lib/cucumber/errors.rb +6 -7
- data/lib/cucumber/events.rb +14 -7
- data/lib/cucumber/events/envelope.rb +9 -0
- data/lib/cucumber/events/gherkin_source_parsed.rb +11 -0
- data/lib/cucumber/events/gherkin_source_read.rb +1 -4
- data/lib/cucumber/events/hook_test_step_created.rb +13 -0
- data/lib/cucumber/events/step_activated.rb +6 -6
- data/lib/cucumber/events/step_definition_registered.rb +4 -8
- data/lib/cucumber/events/test_case_created.rb +13 -0
- data/lib/cucumber/events/test_case_finished.rb +0 -4
- data/lib/cucumber/events/test_case_ready.rb +12 -0
- data/lib/cucumber/events/test_case_started.rb +0 -4
- data/lib/cucumber/events/test_run_finished.rb +2 -3
- data/lib/cucumber/events/test_run_started.rb +2 -4
- data/lib/cucumber/events/test_step_created.rb +13 -0
- data/lib/cucumber/events/test_step_finished.rb +0 -4
- data/lib/cucumber/events/test_step_started.rb +1 -5
- data/lib/cucumber/events/undefined_parameter_type.rb +10 -0
- data/lib/cucumber/file_specs.rb +7 -6
- data/lib/cucumber/filters.rb +2 -0
- data/lib/cucumber/filters/activate_steps.rb +6 -4
- data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
- data/lib/cucumber/filters/broadcast_test_case_ready_event.rb +12 -0
- data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
- data/lib/cucumber/filters/gated_receiver.rb +1 -2
- data/lib/cucumber/filters/prepare_world.rb +6 -13
- data/lib/cucumber/filters/quit.rb +3 -6
- data/lib/cucumber/filters/randomizer.rb +6 -7
- data/lib/cucumber/filters/retry.rb +2 -2
- data/lib/cucumber/filters/tag_limits.rb +2 -2
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
- data/lib/cucumber/filters/tag_limits/verifier.rb +3 -6
- data/lib/cucumber/formatter/ansicolor.rb +33 -37
- data/lib/cucumber/formatter/ast_lookup.rb +165 -0
- data/lib/cucumber/formatter/backtrace_filter.rb +10 -10
- data/lib/cucumber/formatter/console.rb +65 -74
- data/lib/cucumber/formatter/console_counts.rb +4 -9
- data/lib/cucumber/formatter/console_issues.rb +9 -6
- data/lib/cucumber/formatter/duration.rb +2 -1
- data/lib/cucumber/formatter/duration_extractor.rb +4 -2
- data/lib/cucumber/formatter/errors.rb +6 -0
- data/lib/cucumber/formatter/fail_fast.rb +9 -6
- data/lib/cucumber/formatter/fanout.rb +3 -3
- data/lib/cucumber/formatter/html.rb +11 -602
- data/lib/cucumber/formatter/http_io.rb +146 -0
- data/lib/cucumber/formatter/ignore_missing_messages.rb +2 -3
- data/lib/cucumber/formatter/interceptor.rb +11 -18
- data/lib/cucumber/formatter/io.rb +18 -11
- data/lib/cucumber/formatter/json.rb +102 -109
- data/lib/cucumber/formatter/junit.rb +73 -68
- data/lib/cucumber/formatter/message.rb +22 -0
- data/lib/cucumber/formatter/message_builder.rb +255 -0
- data/lib/cucumber/formatter/pretty.rb +360 -153
- data/lib/cucumber/formatter/progress.rb +31 -32
- data/lib/cucumber/formatter/query/hook_by_test_step.rb +31 -0
- data/lib/cucumber/formatter/query/pickle_by_test.rb +26 -0
- data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +26 -0
- data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +40 -0
- data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +40 -0
- data/lib/cucumber/formatter/rerun.rb +23 -4
- data/lib/cucumber/formatter/stepdefs.rb +2 -2
- data/lib/cucumber/formatter/steps.rb +4 -5
- data/lib/cucumber/formatter/summary.rb +17 -9
- data/lib/cucumber/formatter/unicode.rb +16 -18
- data/lib/cucumber/formatter/usage.rb +30 -26
- data/lib/cucumber/gherkin/data_table_parser.rb +18 -6
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +83 -86
- data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +18 -8
- data/lib/cucumber/glue/dsl.rb +2 -1
- data/lib/cucumber/glue/hook.rb +35 -11
- data/lib/cucumber/glue/invoke_in_world.rb +15 -20
- data/lib/cucumber/glue/proto_world.rb +47 -39
- data/lib/cucumber/glue/registry_and_more.rb +54 -23
- data/lib/cucumber/glue/snippet.rb +24 -27
- data/lib/cucumber/glue/step_definition.rb +51 -28
- data/lib/cucumber/glue/world_factory.rb +1 -3
- data/lib/cucumber/hooks.rb +24 -14
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +6 -8
- data/lib/cucumber/multiline_argument/data_table.rb +106 -73
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +8 -11
- data/lib/cucumber/multiline_argument/doc_string.rb +2 -1
- data/lib/cucumber/platform.rb +4 -3
- data/lib/cucumber/project_initializer.rb +1 -1
- data/lib/cucumber/rake/task.rb +21 -18
- data/lib/cucumber/rspec/disable_option_parser.rb +10 -8
- data/lib/cucumber/rspec/doubles.rb +1 -0
- data/lib/cucumber/running_test_case.rb +4 -54
- data/lib/cucumber/runtime.rb +57 -61
- data/lib/cucumber/runtime/after_hooks.rb +9 -4
- data/lib/cucumber/runtime/before_hooks.rb +9 -4
- data/lib/cucumber/runtime/for_programming_languages.rb +12 -9
- data/lib/cucumber/runtime/step_hooks.rb +5 -2
- data/lib/cucumber/runtime/support_code.rb +16 -22
- data/lib/cucumber/runtime/user_interface.rb +8 -19
- data/lib/cucumber/step_definition_light.rb +6 -4
- data/lib/cucumber/step_definitions.rb +3 -2
- data/lib/cucumber/step_match.rb +20 -18
- data/lib/cucumber/step_match_search.rb +9 -9
- data/lib/cucumber/term/ansicolor.rb +39 -39
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +1 -0
- metadata +214 -127
- data/lib/cucumber/formatter/cucumber.css +0 -286
- data/lib/cucumber/formatter/cucumber.sass +0 -247
- data/lib/cucumber/formatter/hook_query_visitor.rb +0 -41
- data/lib/cucumber/formatter/html_builder.rb +0 -120
- data/lib/cucumber/formatter/inline-js.js +0 -30
- data/lib/cucumber/formatter/jquery-min.js +0 -154
- data/lib/cucumber/formatter/json_pretty.rb +0 -10
- data/lib/cucumber/formatter/legacy_api/adapter.rb +0 -1028
- data/lib/cucumber/formatter/legacy_api/ast.rb +0 -394
- data/lib/cucumber/formatter/legacy_api/results.rb +0 -50
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +0 -32
- data/lib/cucumber/step_argument.rb +0 -24
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'cucumber/core/events'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Events
|
5
|
+
# Fired after we've parsed the contents of a feature file
|
6
|
+
class GherkinSourceParsed < Core::Event.new(:gherkin_document)
|
7
|
+
# The Gherkin Ast
|
8
|
+
attr_reader :gherkin_document
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -2,16 +2,13 @@ require 'cucumber/core/events'
|
|
2
2
|
|
3
3
|
module Cucumber
|
4
4
|
module Events
|
5
|
-
|
6
|
-
# Fired after we've read in the contents of a feature file
|
5
|
+
# Fired after we've read in the contents of a feature file
|
7
6
|
class GherkinSourceRead < Core::Event.new(:path, :body)
|
8
|
-
|
9
7
|
# The path to the file
|
10
8
|
attr_reader :path
|
11
9
|
|
12
10
|
# The raw Gherkin source
|
13
11
|
attr_reader :body
|
14
12
|
end
|
15
|
-
|
16
13
|
end
|
17
14
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cucumber/core/events'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Events
|
7
|
+
# Event fired when a step is created from a hook
|
8
|
+
class HookTestStepCreated < Core::Event.new(:test_step, :hook)
|
9
|
+
attr_reader :test_step
|
10
|
+
attr_reader :hook
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,25 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/events'
|
3
4
|
|
4
5
|
module Cucumber
|
5
6
|
module Events
|
6
|
-
|
7
7
|
# Event fired when a step is activated
|
8
8
|
class StepActivated < Core::Event.new(:test_step, :step_match)
|
9
|
-
|
10
|
-
# The test step that was matched.
|
9
|
+
# The test step that was matched.
|
11
10
|
#
|
12
11
|
# @return [Cucumber::Core::Test::Step]
|
13
12
|
attr_reader :test_step
|
14
13
|
|
15
|
-
#
|
14
|
+
# Information about the matching definition.
|
16
15
|
#
|
17
16
|
# @return [Cucumber::StepMatch]
|
18
17
|
attr_reader :step_match
|
19
18
|
|
20
|
-
#
|
19
|
+
# @private
|
21
20
|
def initialize(test_step, step_match)
|
22
|
-
@test_step
|
21
|
+
@test_step = test_step
|
22
|
+
@step_match = step_match
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -1,24 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/events'
|
3
4
|
|
4
5
|
module Cucumber
|
5
6
|
module Events
|
6
|
-
|
7
|
-
# Event fired after each step definition has been registered
|
7
|
+
# Event fired after each step definition has been registered
|
8
8
|
class StepDefinitionRegistered < Core::Event.new(:step_definition)
|
9
|
-
|
10
|
-
|
11
|
-
#_The step definition that was just registered.
|
9
|
+
# The step definition that was just registered.
|
12
10
|
#
|
13
11
|
# @return [RbSupport::RbStepDefinition]
|
14
12
|
attr_reader :step_definition
|
15
13
|
|
16
|
-
#_@private
|
14
|
+
# _@private
|
17
15
|
def initialize(step_definition)
|
18
16
|
@step_definition = step_definition
|
19
17
|
end
|
20
|
-
|
21
18
|
end
|
22
|
-
|
23
19
|
end
|
24
20
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cucumber/core/events'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Events
|
7
|
+
# Event fired when a Test::Case is created from a Pickle
|
8
|
+
class TestCaseCreated < Core::Event.new(:test_case, :pickle)
|
9
|
+
attr_reader :test_case
|
10
|
+
attr_reader :pickle
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -2,17 +2,13 @@ require 'cucumber/core/events'
|
|
2
2
|
|
3
3
|
module Cucumber
|
4
4
|
module Events
|
5
|
-
|
6
5
|
# Signals that a {Cucumber::Core::Test::Case} has finished executing
|
7
6
|
class TestCaseFinished < Core::Events::TestCaseFinished
|
8
|
-
|
9
7
|
# @return [Cucumber::Core::Test::Case] that was executed
|
10
8
|
attr_reader :test_case
|
11
9
|
|
12
10
|
# @return [Cucumber::Core::Test::Result] the result of running the {Cucumber::Core::Test::Case}
|
13
11
|
attr_reader :result
|
14
|
-
|
15
12
|
end
|
16
|
-
|
17
13
|
end
|
18
14
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cucumber/core/events'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Events
|
7
|
+
# Event fired when a Test::Case is ready to be ran (matching has been done, hooks added etc)
|
8
|
+
class TestCaseReady < Core::Event.new(:test_case)
|
9
|
+
attr_reader :test_case
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -2,14 +2,10 @@ require 'cucumber/core/events'
|
|
2
2
|
|
3
3
|
module Cucumber
|
4
4
|
module Events
|
5
|
-
|
6
5
|
# Signals that a {Cucumber::Core::Test::Case} is about to be executed
|
7
6
|
class TestCaseStarted < Core::Events::TestCaseStarted
|
8
|
-
|
9
7
|
# @return [Cucumber::Core::Test::Case] the test case to be executed
|
10
8
|
attr_reader :test_case
|
11
|
-
|
12
9
|
end
|
13
|
-
|
14
10
|
end
|
15
11
|
end
|
@@ -1,12 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/events'
|
3
4
|
|
4
5
|
module Cucumber
|
5
6
|
module Events
|
6
|
-
|
7
|
-
# Event fired after all test cases have finished executing
|
7
|
+
# Event fired after all test cases have finished executing
|
8
8
|
class TestRunFinished < Core::Event.new
|
9
9
|
end
|
10
|
-
|
11
10
|
end
|
12
11
|
end
|
@@ -1,16 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/events'
|
3
4
|
|
4
5
|
module Cucumber
|
5
6
|
module Events
|
6
|
-
|
7
|
-
# Event fired once all test cases have been filtered before
|
7
|
+
# Event fired once all test cases have been filtered before
|
8
8
|
# the first one is executed.
|
9
9
|
class TestRunStarted < Core::Event.new(:test_cases)
|
10
|
-
|
11
10
|
# @return [Array<Cucumber::Core::Test::Case>] the test cases to be executed
|
12
11
|
attr_reader :test_cases
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cucumber/core/events'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Events
|
7
|
+
# Event fired when a TestStep is created from a PickleStep
|
8
|
+
class TestStepCreated < Core::Event.new(:test_step, :pickle_step)
|
9
|
+
attr_reader :test_step
|
10
|
+
attr_reader :pickle_step
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -2,17 +2,13 @@ require 'cucumber/core/events'
|
|
2
2
|
|
3
3
|
module Cucumber
|
4
4
|
module Events
|
5
|
-
|
6
5
|
# Signals that a {Cucumber::Core::Test::Step} has finished executing
|
7
6
|
class TestStepFinished < Core::Events::TestStepFinished
|
8
|
-
|
9
7
|
# @return [Cucumber::Core::Test::Step] the test step that was executed
|
10
8
|
attr_reader :test_step
|
11
9
|
|
12
10
|
# @return [Cucumber::Core::Test::Result] the result of running the {Cucumber::Core::Test::Step}
|
13
11
|
attr_reader :result
|
14
|
-
|
15
12
|
end
|
16
|
-
|
17
13
|
end
|
18
14
|
end
|
@@ -2,14 +2,10 @@ require 'cucumber/core/events'
|
|
2
2
|
|
3
3
|
module Cucumber
|
4
4
|
module Events
|
5
|
-
|
6
|
-
# Signals that a {Cucumber::Core::Test::Step} is about to be executed
|
5
|
+
# Signals that a {Cucumber::Core::Test::Step} is about to be executed
|
7
6
|
class TestStepStarted < Core::Events::TestStepStarted
|
8
|
-
|
9
7
|
# @return [Cucumber::Core::Test::Step] the test step to be executed
|
10
8
|
attr_reader :test_step
|
11
|
-
|
12
9
|
end
|
13
|
-
|
14
10
|
end
|
15
11
|
end
|
data/lib/cucumber/file_specs.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber'
|
3
|
-
require 'cucumber/core/
|
4
|
+
require 'cucumber/core/test/location'
|
4
5
|
|
5
6
|
module Cucumber
|
6
7
|
class FileSpecs
|
@@ -8,7 +9,7 @@ module Cucumber
|
|
8
9
|
|
9
10
|
def initialize(file_specs)
|
10
11
|
Cucumber.logger.debug("Features:\n")
|
11
|
-
@file_specs = file_specs.map { |
|
12
|
+
@file_specs = file_specs.map { |spec| FileSpec.new(spec) }
|
12
13
|
Cucumber.logger.debug("\n")
|
13
14
|
end
|
14
15
|
|
@@ -21,8 +22,8 @@ module Cucumber
|
|
21
22
|
end
|
22
23
|
|
23
24
|
class FileSpec
|
24
|
-
def initialize(
|
25
|
-
@file, @lines = *FILE_COLON_LINE_PATTERN.match(
|
25
|
+
def initialize(spec)
|
26
|
+
@file, @lines = *FILE_COLON_LINE_PATTERN.match(spec).captures
|
26
27
|
Cucumber.logger.debug(" * #{@file}\n")
|
27
28
|
@lines = String(@lines).split(':').map { |line| Integer(line) }
|
28
29
|
end
|
@@ -30,8 +31,8 @@ module Cucumber
|
|
30
31
|
attr_reader :file
|
31
32
|
|
32
33
|
def locations
|
33
|
-
return [
|
34
|
-
@lines.map { |line| Core::
|
34
|
+
return [Core::Test::Location.new(@file)] if @lines.empty?
|
35
|
+
@lines.map { |line| Core::Test::Location.new(@file, line) }
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
data/lib/cucumber/filters.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/filters/activate_steps'
|
3
4
|
require 'cucumber/filters/apply_after_step_hooks'
|
4
5
|
require 'cucumber/filters/apply_before_hooks'
|
@@ -10,3 +11,4 @@ require 'cucumber/filters/quit'
|
|
10
11
|
require 'cucumber/filters/randomizer'
|
11
12
|
require 'cucumber/filters/retry'
|
12
13
|
require 'cucumber/filters/tag_limits'
|
14
|
+
require 'cucumber/filters/broadcast_test_case_ready_event'
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/filter'
|
3
4
|
require 'cucumber/step_match'
|
4
5
|
require 'cucumber/events'
|
@@ -7,7 +8,6 @@ require 'cucumber/errors'
|
|
7
8
|
module Cucumber
|
8
9
|
module Filters
|
9
10
|
class ActivateSteps < Core::Filter.new(:step_match_search, :configuration)
|
10
|
-
|
11
11
|
def test_case(test_case)
|
12
12
|
CaseFilter.new(test_case, step_match_search, configuration).test_case.describe_to receiver
|
13
13
|
end
|
@@ -26,7 +26,7 @@ module Cucumber
|
|
26
26
|
private
|
27
27
|
|
28
28
|
def new_test_steps
|
29
|
-
@original_test_case.test_steps.map(&
|
29
|
+
@original_test_case.test_steps.map(&method(:attempt_to_activate))
|
30
30
|
end
|
31
31
|
|
32
32
|
def attempt_to_activate(test_step)
|
@@ -39,12 +39,14 @@ module Cucumber
|
|
39
39
|
|
40
40
|
class FindMatch
|
41
41
|
def initialize(step_match_search, configuration, test_step)
|
42
|
-
@step_match_search
|
42
|
+
@step_match_search = step_match_search
|
43
|
+
@configuration = configuration
|
44
|
+
@test_step = test_step
|
43
45
|
end
|
44
46
|
|
45
47
|
def result
|
46
48
|
begin
|
47
|
-
return NoStepMatch.new(test_step
|
49
|
+
return NoStepMatch.new(test_step, test_step.text) unless matches.any?
|
48
50
|
rescue Cucumber::Ambiguous => e
|
49
51
|
return AmbiguousStepMatch.new(e)
|
50
52
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Filters
|
5
|
+
class BroadcastTestCaseReadyEvent < Core::Filter.new(:config)
|
6
|
+
def test_case(test_case)
|
7
|
+
config.notify :test_case_ready, test_case
|
8
|
+
test_case.describe_to(receiver)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Cucumber
|
3
4
|
module Filters
|
4
5
|
# Added at the end of the filter chain to broadcast a list of
|
5
6
|
# all of the test cases that have made it through the filters.
|
6
7
|
class BroadcastTestRunStartedEvent < Core::Filter.new(:config)
|
7
|
-
def initialize(config, receiver=nil)
|
8
|
+
def initialize(config, receiver = nil)
|
8
9
|
super
|
9
10
|
@test_cases = []
|
10
11
|
end
|
@@ -1,36 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/filter'
|
3
|
-
require 'cucumber/core/
|
4
|
+
require 'cucumber/core/test/location'
|
4
5
|
require 'cucumber/running_test_case'
|
5
6
|
|
6
7
|
module Cucumber
|
7
8
|
module Filters
|
8
|
-
|
9
9
|
class PrepareWorld < Core::Filter.new(:runtime)
|
10
|
-
|
11
10
|
def test_case(test_case)
|
12
11
|
CaseFilter.new(runtime, test_case).test_case.describe_to receiver
|
13
12
|
end
|
14
13
|
|
15
14
|
class CaseFilter
|
16
15
|
def initialize(runtime, original_test_case)
|
17
|
-
@runtime
|
16
|
+
@runtime = runtime
|
17
|
+
@original_test_case = original_test_case
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_case
|
21
|
-
init_scenario = Cucumber::Hooks.around_hook
|
21
|
+
init_scenario = Cucumber::Hooks.around_hook do |continue|
|
22
22
|
@runtime.begin_scenario(scenario)
|
23
23
|
continue.call
|
24
24
|
@runtime.end_scenario(scenario)
|
25
25
|
end
|
26
26
|
around_hooks = [init_scenario] + @original_test_case.around_hooks
|
27
27
|
|
28
|
-
|
29
|
-
empty_hook_location = Cucumber::Core::Ast::Location.from_source_location(*empty_hook.source_location)
|
30
|
-
default_hook = Cucumber::Hooks.before_hook(@original_test_case.source, empty_hook_location, &empty_hook)
|
31
|
-
steps = [default_hook] + @original_test_case.test_steps
|
32
|
-
|
33
|
-
@original_test_case.with_around_hooks(around_hooks).with_steps(steps)
|
28
|
+
@original_test_case.with_around_hooks(around_hooks).with_steps(@original_test_case.test_steps)
|
34
29
|
end
|
35
30
|
|
36
31
|
private
|
@@ -39,8 +34,6 @@ module Cucumber
|
|
39
34
|
@scenario ||= RunningTestCase.new(test_case)
|
40
35
|
end
|
41
36
|
end
|
42
|
-
|
43
37
|
end
|
44
|
-
|
45
38
|
end
|
46
39
|
end
|