cucumber 2.1.0 → 2.2.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/.travis.yml +10 -0
- data/Gemfile +3 -1
- data/History.md +18 -2
- data/README.md +5 -1
- data/cucumber.gemspec +3 -4
- data/cucumber.yml +2 -2
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +4 -7
- data/features/docs/defining_steps/skip_scenario.feature +6 -2
- data/features/docs/formatters/api_methods.feature +36 -0
- data/features/docs/profiles.feature +2 -2
- data/features/lib/step_definitions/profile_steps.rb +1 -1
- data/lib/cucumber.rb +11 -4
- data/lib/cucumber/cli/configuration.rb +2 -2
- data/lib/cucumber/cli/options.rb +2 -2
- data/lib/cucumber/configuration.rb +25 -3
- data/lib/cucumber/deprecate.rb +29 -0
- data/lib/cucumber/filters/activate_steps.rb +39 -5
- data/lib/cucumber/formatter/console.rb +4 -4
- data/lib/cucumber/formatter/io.rb +1 -1
- data/lib/cucumber/formatter/legacy_api/adapter.rb +30 -30
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +4 -9
- data/lib/cucumber/platform.rb +2 -7
- data/lib/cucumber/rb_support/rb_language.rb +72 -26
- data/lib/cucumber/rb_support/rb_step_definition.rb +2 -2
- data/lib/cucumber/rb_support/rb_world.rb +6 -1
- data/lib/cucumber/rb_support/snippet.rb +21 -0
- data/lib/cucumber/running_test_case.rb +5 -1
- data/lib/cucumber/runtime.rb +11 -15
- data/lib/cucumber/runtime/support_code.rb +20 -128
- data/lib/cucumber/step_argument.rb +25 -0
- data/lib/cucumber/step_match.rb +6 -12
- data/lib/cucumber/step_match_search.rb +67 -0
- data/lib/cucumber/version +1 -0
- data/spec/cucumber/configuration_spec.rb +3 -2
- data/spec/cucumber/filters/activate_steps_spec.rb +95 -3
- data/spec/cucumber/formatter/html_spec.rb +1 -1
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +55 -28
- data/spec/cucumber/formatter/pretty_spec.rb +2 -2
- data/spec/cucumber/formatter/spec_helper.rb +22 -12
- data/spec/cucumber/rb_support/rb_language_spec.rb +9 -45
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +2 -2
- data/spec/cucumber/rb_support/rb_world_spec.rb +47 -0
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -1
- data/spec/cucumber/runtime/support_code_spec.rb +4 -111
- data/spec/cucumber/step_argument_spec.rb +18 -0
- data/spec/cucumber/step_match_search_spec.rb +122 -0
- data/spec/cucumber/step_match_spec.rb +8 -2
- data/spec/cucumber/world/pending_spec.rb +2 -1
- data/spec/cucumber_spec.rb +39 -0
- metadata +45 -50
- data/features/docs/wire_protocol/erb_configuration.feature +0 -56
- data/features/docs/wire_protocol/handle_unexpected_response.feature +0 -30
- data/features/docs/wire_protocol/invoke_message.feature +0 -216
- data/features/docs/wire_protocol/readme.md +0 -26
- data/features/docs/wire_protocol/snippets_message.feature +0 -51
- data/features/docs/wire_protocol/step_matches_message.feature +0 -81
- data/features/docs/wire_protocol/table_diffing.feature +0 -126
- data/features/docs/wire_protocol/tags.feature +0 -87
- data/features/docs/wire_protocol/timeouts.feature +0 -64
- data/lib/cucumber/events/bus.rb +0 -86
- data/lib/cucumber/gherkin/formatter/argument.rb +0 -17
- data/lib/cucumber/gherkin/formatter/hashable.rb +0 -27
- data/lib/cucumber/language_support.rb +0 -30
- data/lib/cucumber/language_support/language_methods.rb +0 -72
- data/lib/cucumber/rb_support/regexp_argument_matcher.rb +0 -21
- data/lib/cucumber/wire_support/configuration.rb +0 -38
- data/lib/cucumber/wire_support/connection.rb +0 -61
- data/lib/cucumber/wire_support/request_handler.rb +0 -32
- data/lib/cucumber/wire_support/wire_exception.rb +0 -32
- data/lib/cucumber/wire_support/wire_language.rb +0 -68
- data/lib/cucumber/wire_support/wire_packet.rb +0 -34
- data/lib/cucumber/wire_support/wire_protocol.rb +0 -43
- data/lib/cucumber/wire_support/wire_protocol/requests.rb +0 -133
- data/lib/cucumber/wire_support/wire_step_definition.rb +0 -21
- data/spec/cucumber/events/bus_spec.rb +0 -94
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +0 -22
- data/spec/cucumber/wire_support/configuration_spec.rb +0 -64
- data/spec/cucumber/wire_support/connection_spec.rb +0 -64
- data/spec/cucumber/wire_support/wire_exception_spec.rb +0 -50
- data/spec/cucumber/wire_support/wire_language_spec.rb +0 -46
- data/spec/cucumber/wire_support/wire_packet_spec.rb +0 -44
| @@ -1,21 +0,0 @@ | |
| 1 | 
            -
            require 'cucumber/core/ast/location'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Cucumber
         | 
| 4 | 
            -
              module WireSupport
         | 
| 5 | 
            -
                class WireStepDefinition
         | 
| 6 | 
            -
                  attr_reader :regexp_source, :location
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  def initialize(connection, data)
         | 
| 9 | 
            -
                    @connection = connection
         | 
| 10 | 
            -
                    @id              = data['id']
         | 
| 11 | 
            -
                    @regexp_source   = data['regexp'] || "Unknown"
         | 
| 12 | 
            -
                    @location = data['source'] ? Cucumber::Core::Ast::Location.from_file_colon_line(data['source']) : Cucumber::Core::Ast::Location.new("Unknown")
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  def invoke(args)
         | 
| 16 | 
            -
                    @connection.invoke(@id, args)
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
            end
         | 
| @@ -1,94 +0,0 @@ | |
| 1 | 
            -
            require "cucumber/events/bus"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Cucumber
         | 
| 4 | 
            -
              module Events
         | 
| 5 | 
            -
                class TestEvent
         | 
| 6 | 
            -
                end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                class AnotherTestEvent
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                describe Bus do
         | 
| 12 | 
            -
                  let(:bus) { Bus.new(Cucumber::Events) }
         | 
| 13 | 
            -
                  let(:test_event) { TestEvent.new }
         | 
| 14 | 
            -
                  let(:another_test_event) { AnotherTestEvent.new }
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  it "calls subscriber with event payload" do
         | 
| 17 | 
            -
                    received_payload = nil
         | 
| 18 | 
            -
                    bus.register(TestEvent) do |event|
         | 
| 19 | 
            -
                      received_payload = event
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    bus.notify test_event
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                    expect(received_payload).to eq(test_event)
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  it "does not call subscribers for other events" do
         | 
| 28 | 
            -
                    handler_called = false
         | 
| 29 | 
            -
                    bus.register(TestEvent) do |event|
         | 
| 30 | 
            -
                      handler_called = true
         | 
| 31 | 
            -
                    end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    bus.notify another_test_event
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                    expect(handler_called).to eq(false)
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  it "broadcasts to multiple subscribers" do
         | 
| 39 | 
            -
                    received_events = []
         | 
| 40 | 
            -
                    bus.register(TestEvent) do |event|
         | 
| 41 | 
            -
                      received_events << event
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
                    bus.register(TestEvent) do |event|
         | 
| 44 | 
            -
                      received_events << event
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    bus.notify test_event
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                    expect(received_events.length).to eq 2
         | 
| 50 | 
            -
                    expect(received_events).to all eq test_event
         | 
| 51 | 
            -
                  end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                  it "allows subscription by string" do
         | 
| 54 | 
            -
                    received_payload = nil
         | 
| 55 | 
            -
                    bus.register('Cucumber::Events::TestEvent') do |event|
         | 
| 56 | 
            -
                      received_payload = event
         | 
| 57 | 
            -
                    end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                    bus.notify test_event
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                    expect(received_payload).to eq(test_event)
         | 
| 62 | 
            -
                  end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                  it "allows subscription by symbol (for events in the Cucumber::Events namespace)" do
         | 
| 65 | 
            -
                    received_payload = nil
         | 
| 66 | 
            -
                    bus.register(:test_event) do |event|
         | 
| 67 | 
            -
                      received_payload = event
         | 
| 68 | 
            -
                    end
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                    bus.notify test_event
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                    expect(received_payload).to eq(test_event)
         | 
| 73 | 
            -
                  end
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                  it "allows handlers that are objects with a `call` method" do
         | 
| 76 | 
            -
                    class MyHandler
         | 
| 77 | 
            -
                      attr_reader :received_payload
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                      def call(event)
         | 
| 80 | 
            -
                        @received_payload = event
         | 
| 81 | 
            -
                      end
         | 
| 82 | 
            -
                    end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                    handler = MyHandler.new
         | 
| 85 | 
            -
                    bus.register(TestEvent, handler)
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                    bus.notify test_event
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                    expect(handler.received_payload).to eq test_event
         | 
| 90 | 
            -
                  end
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                end
         | 
| 93 | 
            -
              end
         | 
| 94 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'cucumber/rb_support/regexp_argument_matcher'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Cucumber
         | 
| 5 | 
            -
              module RbSupport
         | 
| 6 | 
            -
                describe RegexpArgumentMatcher do
         | 
| 7 | 
            -
                  include RSpec::WorkInProgress
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  it "creates 2 arguments" do
         | 
| 10 | 
            -
                    arguments = RegexpArgumentMatcher.arguments_from(/I (\w+) (\w+)/, "I like fish")
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                    expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [["like", 2], ["fish", 7]]
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  it "creates 2 arguments when first group is optional" do
         | 
| 16 | 
            -
                    arguments = RegexpArgumentMatcher.arguments_from(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [[nil, nil], ["Login failed.", 21]]
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         | 
| @@ -1,64 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'cucumber/wire_support/wire_language'
         | 
| 3 | 
            -
            require 'tempfile'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Cucumber
         | 
| 6 | 
            -
              module WireSupport
         | 
| 7 | 
            -
                describe Configuration do
         | 
| 8 | 
            -
                  let(:wire_file) { Tempfile.new('wire') }
         | 
| 9 | 
            -
                  let(:config) { Configuration.from_file(wire_file.path) }
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def write_wire_file(contents)
         | 
| 12 | 
            -
                    wire_file << contents
         | 
| 13 | 
            -
                    wire_file.close
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  it "reads the hostname / port from the file" do
         | 
| 17 | 
            -
                    write_wire_file %q{
         | 
| 18 | 
            -
                      host: localhost
         | 
| 19 | 
            -
                      port: 54321
         | 
| 20 | 
            -
                    }
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    expect(config.host).to eq 'localhost'
         | 
| 23 | 
            -
                    expect(config.port).to eq 54321
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  it "reads the timeout for a specific message" do
         | 
| 27 | 
            -
                    write_wire_file %q{
         | 
| 28 | 
            -
                      host: localhost
         | 
| 29 | 
            -
                      port: 54321
         | 
| 30 | 
            -
                      timeout:
         | 
| 31 | 
            -
                        invoke: 99
         | 
| 32 | 
            -
                    }
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                    expect(config.timeout('invoke')).to eq 99
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                  it "reads the timeout for a connect message" do
         | 
| 38 | 
            -
                    write_wire_file %q{
         | 
| 39 | 
            -
                      host: localhost
         | 
| 40 | 
            -
                      port: 54321
         | 
| 41 | 
            -
                      timeout:
         | 
| 42 | 
            -
                        connect: 99
         | 
| 43 | 
            -
                    }
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                    expect(config.timeout('connect')).to eq 99
         | 
| 46 | 
            -
                  end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  describe "a wire file with no timeouts specified" do
         | 
| 49 | 
            -
                    before(:each) do
         | 
| 50 | 
            -
                      write_wire_file %q{
         | 
| 51 | 
            -
                        host: localhost
         | 
| 52 | 
            -
                        port: 54321
         | 
| 53 | 
            -
                      }
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    %w(invoke begin_scenario end_scenario).each do |message|
         | 
| 57 | 
            -
                      it "sets the default timeout for '#{message}' to 120 seconds" do
         | 
| 58 | 
            -
                        expect(config.timeout(message)).to eq 120
         | 
| 59 | 
            -
                      end
         | 
| 60 | 
            -
                    end
         | 
| 61 | 
            -
                  end
         | 
| 62 | 
            -
                end
         | 
| 63 | 
            -
              end
         | 
| 64 | 
            -
            end
         | 
| @@ -1,64 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'cucumber/wire_support/wire_language'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Cucumber
         | 
| 5 | 
            -
              module WireSupport
         | 
| 6 | 
            -
                describe Connection do
         | 
| 7 | 
            -
                  class TestConnection < Connection
         | 
| 8 | 
            -
                    attr_accessor :socket
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  class TestConfiguration
         | 
| 12 | 
            -
                    attr_reader :custom_timeout
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    def initialize
         | 
| 15 | 
            -
                      @custom_timeout = {}
         | 
| 16 | 
            -
                    end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    def timeout(message = nil)
         | 
| 19 | 
            -
                      return :default_timeout if message.nil?
         | 
| 20 | 
            -
                      @custom_timeout[message] || Configuration::DEFAULT_TIMEOUTS.fetch(message)
         | 
| 21 | 
            -
                    end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    def host
         | 
| 24 | 
            -
                      'localhost'
         | 
| 25 | 
            -
                    end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                    def port
         | 
| 28 | 
            -
                      '3902'
         | 
| 29 | 
            -
                    end
         | 
| 30 | 
            -
                  end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                  before(:each) do
         | 
| 33 | 
            -
                    @config = TestConfiguration.new
         | 
| 34 | 
            -
                    @connection = TestConnection.new(@config)
         | 
| 35 | 
            -
                    @connection.socket = @socket = double('socket').as_null_object
         | 
| 36 | 
            -
                    @response = %q{["response"]}
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                  it "re-raises a timeout error" do
         | 
| 40 | 
            -
                    allow(Timeout).to receive(:timeout).and_raise(Timeout::Error.new(''))
         | 
| 41 | 
            -
                    expect(-> { @connection.call_remote(nil, :foo, []) }).to raise_error(Timeout::Error)
         | 
| 42 | 
            -
                  end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  it "ignores timeout errors when configured to do so" do
         | 
| 45 | 
            -
                    @config.custom_timeout[:foo] = :never
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    allow(@socket).to receive(:gets) { @response }
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                    handler = double(:handle_response => :response)
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                    expect(@connection.call_remote(handler, :foo, [])).to eq :response
         | 
| 52 | 
            -
                  end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                  it "raises an exception on remote connection closed" do
         | 
| 55 | 
            -
                    @config.custom_timeout[:foo] = :never
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                    allow(@socket).to receive(:gets)
         | 
| 58 | 
            -
                    expect(-> {
         | 
| 59 | 
            -
                      @connection.call_remote(nil, :foo, [])
         | 
| 60 | 
            -
                    }).to raise_error(WireException, 'Remote Socket with localhost:3902 closed.')
         | 
| 61 | 
            -
                  end
         | 
| 62 | 
            -
                end
         | 
| 63 | 
            -
              end
         | 
| 64 | 
            -
            end
         | 
| @@ -1,50 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'cucumber/wire_support/wire_language'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Cucumber
         | 
| 5 | 
            -
              module WireSupport
         | 
| 6 | 
            -
                describe WireException do
         | 
| 7 | 
            -
                  before(:each) do
         | 
| 8 | 
            -
                    @config = Configuration.new('host' => 'localhost', 'port' => 54321)
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def exception
         | 
| 12 | 
            -
                    WireException.new(@data, @config)
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  describe "with just a message" do
         | 
| 16 | 
            -
                    before(:each) do
         | 
| 17 | 
            -
                      @data = {'message' => 'foo'}
         | 
| 18 | 
            -
                    end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                    it "#to_s as expecteds" do
         | 
| 21 | 
            -
                      expect(exception.to_s).to eq "foo"
         | 
| 22 | 
            -
                    end
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                  describe "with a message and an exception" do
         | 
| 26 | 
            -
                    before(:each) do
         | 
| 27 | 
            -
                      @data = {'message' => 'foo', 'exception' => 'Bar'}
         | 
| 28 | 
            -
                    end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                    it "#to_s as expecteds" do
         | 
| 31 | 
            -
                      expect(exception.to_s).to eq "foo"
         | 
| 32 | 
            -
                    end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                    it "#class.to_s returns the name of the exception" do
         | 
| 35 | 
            -
                      expect(exception.class.to_s).to eq 'Bar from localhost:54321'
         | 
| 36 | 
            -
                    end
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                  describe "with a custom backtrace" do
         | 
| 40 | 
            -
                    before(:each) do
         | 
| 41 | 
            -
                      @data = {'message' => 'foo', 'backtrace' => ['foo', 'bar', 'baz']}
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                    it "#backrace returns the custom backtrace" do
         | 
| 45 | 
            -
                      expect(exception.backtrace).to eq ['foo', 'bar', 'baz']
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
              end
         | 
| 50 | 
            -
            end
         | 
| @@ -1,46 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'cucumber/wire_support/wire_language'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Cucumber
         | 
| 5 | 
            -
              module WireSupport
         | 
| 6 | 
            -
                describe WireLanguage do
         | 
| 7 | 
            -
                  def stub_wire_file!(filename, config)
         | 
| 8 | 
            -
                    allow(Configuration).to receive(:from_file).with(filename) { config }
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  describe "#load_code_file" do
         | 
| 12 | 
            -
                    before(:each) do
         | 
| 13 | 
            -
                      stub_wire_file! 'foo.wire', :config
         | 
| 14 | 
            -
                    end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                    it "creates a RemoteSteps object" do
         | 
| 17 | 
            -
                      expect(Connection).to receive(:new).with(:config)
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                      WireLanguage.new.load_code_file('foo.wire')
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  describe "#step_matches" do
         | 
| 24 | 
            -
                    def stub_remote_steps!(config, attributes)
         | 
| 25 | 
            -
                      expect(Connection).to receive(:new).with(config) { double('remote_steps', attributes) }
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                    before(:each) do
         | 
| 29 | 
            -
                      stub_wire_file! 'one.wire', :config_one
         | 
| 30 | 
            -
                      stub_wire_file! 'two.wire', :config_two
         | 
| 31 | 
            -
                    end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    it "returns the matches from each of the RemoteSteps" do
         | 
| 34 | 
            -
                      stub_remote_steps! :config_one, :step_matches => [:a, :b]
         | 
| 35 | 
            -
                      stub_remote_steps! :config_two, :step_matches => [:c]
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                      wire_language = WireLanguage.new
         | 
| 38 | 
            -
                      wire_language.load_code_file('one.wire')
         | 
| 39 | 
            -
                      wire_language.load_code_file('two.wire')
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                      expect(wire_language.step_matches('','')).to eq [:a, :b, :c]
         | 
| 42 | 
            -
                    end
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
              end
         | 
| 46 | 
            -
            end
         | 
| @@ -1,44 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'cucumber/wire_support/wire_language'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Cucumber
         | 
| 5 | 
            -
              module WireSupport
         | 
| 6 | 
            -
                describe WirePacket do
         | 
| 7 | 
            -
                  describe "#to_json" do
         | 
| 8 | 
            -
                    it "converts params to a JSON hash" do
         | 
| 9 | 
            -
                      packet = WirePacket.new('test_message', :foo => :bar)
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                      expect(packet.to_json).to eq "[\"test_message\",{\"foo\":\"bar\"}]"
         | 
| 12 | 
            -
                    end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    it "does not pass blank params" do
         | 
| 15 | 
            -
                      packet = WirePacket.new('test_message')
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                      expect(packet.to_json).to eq "[\"test_message\"]"
         | 
| 18 | 
            -
                    end
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                  describe ".parse" do
         | 
| 22 | 
            -
                    it "understands a raw packet containing null parameters" do
         | 
| 23 | 
            -
                      packet = WirePacket.parse("[\"test_message\",null]")
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                      expect(packet.message).to eq 'test_message'
         | 
| 26 | 
            -
                      expect(packet.params).to be_nil
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                    it "understands a raw packet containing no parameters" do
         | 
| 30 | 
            -
                      packet = WirePacket.parse("[\"test_message\"]")
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                      expect(packet.message).to eq 'test_message'
         | 
| 33 | 
            -
                      expect(packet.params).to be_nil
         | 
| 34 | 
            -
                    end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                    it "understands a raw packet containging parameters data" do
         | 
| 37 | 
            -
                      packet = WirePacket.parse("[\"test_message\",{\"foo\":\"bar\"}]")
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                      expect(packet.params['foo']).to eq 'bar'
         | 
| 40 | 
            -
                    end
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
              end
         | 
| 44 | 
            -
            end
         |