| |
@@ -1,206 +0,0 @@
|
| |
- From 51ff0156094757ad21b8f380e2427d5b366924fa Mon Sep 17 00:00:00 2001
|
| |
- From: =?UTF-8?q?Bj=C3=B6rn=20Rasmusson?= <B.Rasmusson@computer.org>
|
| |
- Date: Sun, 22 Jul 2018 21:23:34 +0200
|
| |
- Subject: [PATCH] Fixes to work with modern Cucucmber-Ruby
|
| |
-
|
| |
- * Pass the registry all the way down to the step definitions.
|
| |
- * Move the class StepArgument from Cucumber-Ruby and update it to match
|
| |
- the expectations of Cucumber-Ruby when using cucumber-expressions.
|
| |
- ---
|
| |
- features/step_matches_message.feature | 2 +-
|
| |
- lib/cucumber/wire/connections.rb | 5 +++--
|
| |
- lib/cucumber/wire/plugin.rb | 9 +++++----
|
| |
- lib/cucumber/wire/protocol.rb | 4 ++--
|
| |
- lib/cucumber/wire/protocol/requests.rb | 4 ++--
|
| |
- lib/cucumber/wire/request_handler.rb | 3 ++-
|
| |
- lib/cucumber/wire/step_argument.rb | 24 ++++++++++++++++++++++++
|
| |
- lib/cucumber/wire/step_definition.rb | 6 ++++--
|
| |
- spec/cucumber/wire/connections_spec.rb | 4 ++--
|
| |
- 9 files changed, 45 insertions(+), 16 deletions(-)
|
| |
- create mode 100644 lib/cucumber/wire/step_argument.rb
|
| |
-
|
| |
- diff --git a/features/step_matches_message.feature b/features/step_matches_message.feature
|
| |
- index b0051f8..afa70be 100644
|
| |
- --- a/features/step_matches_message.feature
|
| |
- +++ b/features/step_matches_message.feature
|
| |
- @@ -70,7 +70,7 @@ Feature: Step matches message
|
| |
- """
|
| |
- -
|
| |
-
|
| |
- - we.* # MyApp.MyClass:123
|
| |
- + "we.*" # MyApp.MyClass:123
|
| |
-
|
| |
- 1 scenario (1 skipped)
|
| |
- 1 step (1 skipped)
|
| |
- diff --git a/lib/cucumber/wire/connections.rb b/lib/cucumber/wire/connections.rb
|
| |
- index 7856fea..4e57a22 100644
|
| |
- --- a/lib/cucumber/wire/connections.rb
|
| |
- +++ b/lib/cucumber/wire/connections.rb
|
| |
- @@ -16,10 +16,11 @@ class Connections
|
| |
- attr_reader :connections
|
| |
- private :connections
|
| |
-
|
| |
- - def initialize(connections, configuration)
|
| |
- + def initialize(connections, configuration, registry)
|
| |
- raise ArgumentError unless connections
|
| |
- @connections = connections
|
| |
- @configuration = configuration
|
| |
- + @registry = registry
|
| |
- end
|
| |
-
|
| |
- def find_match(test_step)
|
| |
- @@ -30,7 +31,7 @@ def find_match(test_step)
|
| |
- end
|
| |
-
|
| |
- def step_matches(step_name)
|
| |
- - connections.map{ |c| c.step_matches(step_name)}.flatten
|
| |
- + connections.map{ |c| c.step_matches(step_name, @registry)}.flatten
|
| |
- end
|
| |
-
|
| |
- def begin_scenario(test_case)
|
| |
- diff --git a/lib/cucumber/wire/plugin.rb b/lib/cucumber/wire/plugin.rb
|
| |
- index d1d6277..79843cd 100644
|
| |
- --- a/lib/cucumber/wire/plugin.rb
|
| |
- +++ b/lib/cucumber/wire/plugin.rb
|
| |
- @@ -5,15 +5,16 @@
|
| |
- module Cucumber
|
| |
- module Wire
|
| |
- class Plugin
|
| |
- - attr_reader :config
|
| |
- - private :config
|
| |
- + attr_reader :config, :registry
|
| |
- + private :config, :registry
|
| |
-
|
| |
- - def initialize(config)
|
| |
- + def initialize(config, registry)
|
| |
- @config = config
|
| |
- + @registry = registry
|
| |
- end
|
| |
-
|
| |
- def install
|
| |
- - connections = Connections.new(wire_files.map { |f| create_connection(f) }, @config)
|
| |
- + connections = Connections.new(wire_files.map { |f| create_connection(f) }, config, registry)
|
| |
- config.filters << Filters::ActivateSteps.new(StepMatchSearch.new(connections.method(:step_matches), @config), @config)
|
| |
- config.filters << AddHooksFilter.new(connections) unless @config.dry_run?
|
| |
- config.register_snippet_generator Snippet::Generator.new(connections)
|
| |
- diff --git a/lib/cucumber/wire/protocol.rb b/lib/cucumber/wire/protocol.rb
|
| |
- index 328c728..738577e 100644
|
| |
- --- a/lib/cucumber/wire/protocol.rb
|
| |
- +++ b/lib/cucumber/wire/protocol.rb
|
| |
- @@ -3,8 +3,8 @@
|
| |
- module Cucumber
|
| |
- module Wire
|
| |
- module Protocol
|
| |
- - def step_matches(name_to_match)
|
| |
- - handler = Requests::StepMatches.new(self)
|
| |
- + def step_matches(name_to_match, registry)
|
| |
- + handler = Requests::StepMatches.new(self, registry)
|
| |
- handler.execute(name_to_match)
|
| |
- end
|
| |
-
|
| |
- diff --git a/lib/cucumber/wire/protocol/requests.rb b/lib/cucumber/wire/protocol/requests.rb
|
| |
- index eff80b0..5e32d11 100644
|
| |
- --- a/lib/cucumber/wire/protocol/requests.rb
|
| |
- +++ b/lib/cucumber/wire/protocol/requests.rb
|
| |
- @@ -1,5 +1,5 @@
|
| |
- require 'cucumber/wire/request_handler'
|
| |
- -require 'cucumber/step_argument'
|
| |
- +require 'cucumber/wire/step_argument'
|
| |
-
|
| |
- module Cucumber
|
| |
- module Wire
|
| |
- @@ -25,7 +25,7 @@ def handle_success(params)
|
| |
- private
|
| |
-
|
| |
- def create_step_match(raw_step_match)
|
| |
- - step_definition = StepDefinition.new(@connection, raw_step_match)
|
| |
- + step_definition = StepDefinition.new(@connection, raw_step_match, @registry)
|
| |
- step_args = raw_step_match['args'].map do |raw_arg|
|
| |
- StepArgument.new(raw_arg['pos'], raw_arg['val'])
|
| |
- end
|
| |
- diff --git a/lib/cucumber/wire/request_handler.rb b/lib/cucumber/wire/request_handler.rb
|
| |
- index ee8f2f1..118f9cd 100644
|
| |
- --- a/lib/cucumber/wire/request_handler.rb
|
| |
- +++ b/lib/cucumber/wire/request_handler.rb
|
| |
- @@ -1,9 +1,10 @@
|
| |
- module Cucumber
|
| |
- module Wire
|
| |
- class RequestHandler
|
| |
- - def initialize(connection)
|
| |
- + def initialize(connection, registry = nil)
|
| |
- @connection = connection
|
| |
- @message = underscore(self.class.name.split('::').last)
|
| |
- + @registry = registry
|
| |
- end
|
| |
-
|
| |
- def execute(request_params = nil)
|
| |
- diff --git a/lib/cucumber/wire/step_argument.rb b/lib/cucumber/wire/step_argument.rb
|
| |
- new file mode 100644
|
| |
- index 0000000..116ee3a
|
| |
- --- /dev/null
|
| |
- +++ b/lib/cucumber/wire/step_argument.rb
|
| |
- @@ -0,0 +1,24 @@
|
| |
- +# frozen_string_literal: true
|
| |
- +require 'cucumber/cucumber_expressions/group'
|
| |
- +
|
| |
- +module Cucumber
|
| |
- + module Wire
|
| |
- + # Defines the location and value of a captured argument from the step
|
| |
- + # text
|
| |
- + class StepArgument
|
| |
- + attr_reader :offset
|
| |
- +
|
| |
- + def initialize(offset, val)
|
| |
- + @offset, @value = offset, val
|
| |
- + end
|
| |
- +
|
| |
- + def value(_current_world)
|
| |
- + @value
|
| |
- + end
|
| |
- +
|
| |
- + def group
|
| |
- + CucumberExpressions::Group.new(@value, @offset, @offset + @value.length, [])
|
| |
- + end
|
| |
- + end
|
| |
- + end
|
| |
- +end
|
| |
- diff --git a/lib/cucumber/wire/step_definition.rb b/lib/cucumber/wire/step_definition.rb
|
| |
- index 09a4f1d..b453cdc 100644
|
| |
- --- a/lib/cucumber/wire/step_definition.rb
|
| |
- +++ b/lib/cucumber/wire/step_definition.rb
|
| |
- @@ -3,12 +3,14 @@
|
| |
- module Cucumber
|
| |
- module Wire
|
| |
- class StepDefinition
|
| |
- - attr_reader :regexp_source, :location
|
| |
- + attr_reader :regexp_source, :location, :registry, :expression
|
| |
-
|
| |
- - def initialize(connection, data)
|
| |
- + def initialize(connection, data, registry)
|
| |
- @connection = connection
|
| |
- + @registry = registry
|
| |
- @id = data['id']
|
| |
- @regexp_source = data['regexp'] || "Unknown"
|
| |
- + @expression = registry.create_expression(@regexp_source)
|
| |
- @location = Core::Ast::Location.from_file_colon_line(data['source'] || "unknown:0")
|
| |
- end
|
| |
-
|
| |
- diff --git a/spec/cucumber/wire/connections_spec.rb b/spec/cucumber/wire/connections_spec.rb
|
| |
- index 449e19f..62c9f1a 100644
|
| |
- --- a/spec/cucumber/wire/connections_spec.rb
|
| |
- +++ b/spec/cucumber/wire/connections_spec.rb
|
| |
- @@ -9,12 +9,12 @@ module Wire
|
| |
- connection1 = double(step_matches: [:a, :b])
|
| |
- connection2 = double(step_matches: [:c])
|
| |
-
|
| |
- - connections = Connections.new([connection1, connection2], double)
|
| |
- + connections = Connections.new([connection1, connection2], double, double)
|
| |
- expect(connections.step_matches('')).to eq [:a, :b, :c]
|
| |
- end
|
| |
-
|
| |
- it "copes with no connections" do
|
| |
- - connections = Connections.new([], double)
|
| |
- + connections = Connections.new([], double, double)
|
| |
- expect(connections.step_matches('')).to eq []
|
| |
- end
|
| |
- end
|
| |
Copr build with tests enabled: ok
https://copr.fedorainfracloud.org/coprs/pvalena/rubygems/build/2868690/
Installation: ok
rpmlint: ok
Supersedes PR #1