spinach 0.8.7 → 0.8.8
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/.ruby-version +1 -1
- data/.travis.yml +4 -0
- data/Gemfile +3 -1
- data/README.markdown +3 -0
- data/features/support/env.rb +3 -3
- data/lib/spinach/capybara.rb +32 -32
- data/lib/spinach/feature.rb +1 -0
- data/lib/spinach/parser/visitor.rb +1 -0
- data/lib/spinach/reporter/reporting.rb +9 -9
- data/lib/spinach/reporter/stdout.rb +2 -2
- data/lib/spinach/version.rb +1 -1
- data/spinach.gemspec +2 -1
- data/test/spinach/capybara_test.rb +20 -10
- data/test/spinach/parser/visitor_test.rb +6 -0
- data/test/spinach/parser_test.rb +9 -0
- data/test/spinach/reporter/stdout/error_reporting_test.rb +10 -6
- data/test/spinach/reporter/stdout_test.rb +0 -2
- data/test/spinach/runner_test.rb +1 -1
- data/test/test_helper.rb +1 -1
- metadata +44 -30
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a4a7688b9f7af807e9ffa56dc81fbfcd284b5b15
         | 
| 4 | 
            +
              data.tar.gz: 0b0da6bb8d6ea72ab5e51c9090c2d09f4fc0067d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4aab211a57a9c500aa89b02d277a75fa14801f60c869ab03d9f9bd723e9f2100778876f02cdeac6cacdf072de9fa28541ee77ad06dcec181b5c0c69d43122127
         | 
| 7 | 
            +
              data.tar.gz: d5acad37f9c42283f34b73f631db893145bd2bcc9428f8f38c8f357f3c5adebd4f36eeef57894e516e4957949ba4191309b5337e8cdd1078069da3a4ecc2a724
         | 
    
        data/.ruby-version
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2. | 
| 1 | 
            +
            2.1.0
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    | @@ -10,7 +10,7 @@ group :test do | |
| 10 10 | 
             
              gem 'guard'
         | 
| 11 11 | 
             
              gem 'guard-minitest'
         | 
| 12 12 | 
             
              gem 'guard-spinach'
         | 
| 13 | 
            -
              gem 'capybara' | 
| 13 | 
            +
              gem 'capybara'
         | 
| 14 14 | 
             
              gem "rspec"
         | 
| 15 15 | 
             
              gem 'fakefs'
         | 
| 16 16 | 
             
            end
         | 
| @@ -23,3 +23,5 @@ end | |
| 23 23 | 
             
            group :docs do
         | 
| 24 24 | 
             
              gem 'yard'
         | 
| 25 25 | 
             
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            gem 'rubysl', :platforms => :rbx
         | 
    
        data/README.markdown
    CHANGED
    
    | @@ -4,6 +4,8 @@ | |
| 4 4 | 
             
            [](http://gemnasium.com/codegram/spinach)
         | 
| 5 5 | 
             
            [](https://coveralls.io/r/codegram/spinach)
         | 
| 6 6 |  | 
| 7 | 
            +
            **Join a live discussion on Gitter**: [](https://gitter.im/codegram/spinach)
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
            Spinach is a high-level BDD framework that leverages the expressive
         | 
| 8 10 | 
             
            [Gherkin language][gherkin] (used by [Cucumber][cucumber]) to help you define
         | 
| 9 11 | 
             
            executable specifications of your application or library's acceptance criteria.
         | 
| @@ -324,6 +326,7 @@ Check out our [spinach-sinatra demo](https://github.com/codegram/spinach-sinatra | |
| 324 326 | 
             
            * [guard-spinach](http://github.com/codegram/guard-spinach)
         | 
| 325 327 | 
             
            * [spinach-rails](http://github.com/codegram/spinach-rails)
         | 
| 326 328 | 
             
            * [spinach-console-reporter](https://github.com/ywen/spinach-console-reporter) (to be used with Jenkins)
         | 
| 329 | 
            +
            * [spring-commands-spinach](https://github.com/jvanbaarsen/spring-commands-spinach) (to be used with spring)
         | 
| 327 330 |  | 
| 328 331 | 
             
            ### Demos
         | 
| 329 332 |  | 
    
        data/features/support/env.rb
    CHANGED
    
    | @@ -2,10 +2,10 @@ require 'minitest/spec' | |
| 2 2 | 
             
            require_relative 'filesystem'
         | 
| 3 3 |  | 
| 4 4 | 
             
            require 'simplecov'
         | 
| 5 | 
            -
            require 'coveralls'
         | 
| 6 5 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 6 | 
            +
            if ENV['CI'] && !defined?(Rubinius)
         | 
| 7 | 
            +
              require 'coveralls'
         | 
| 8 | 
            +
              SimpleCov.formatter = Coveralls::SimpleCov::Formatter
         | 
| 9 9 | 
             
              require 'simplecov'
         | 
| 10 10 |  | 
| 11 11 | 
             
              SimpleCov.start do
         | 
    
        data/lib/spinach/capybara.rb
    CHANGED
    
    | @@ -17,43 +17,43 @@ module Spinach | |
| 17 17 | 
             
                #   end
         | 
| 18 18 | 
             
                #
         | 
| 19 19 | 
             
                module Capybara
         | 
| 20 | 
            -
                   | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
                      include ::Capybara::DSL
         | 
| 29 | 
            -
                      if defined?(RSpec)
         | 
| 30 | 
            -
                        require 'rspec/matchers'
         | 
| 31 | 
            -
                        require 'capybara/rspec'
         | 
| 32 | 
            -
                        include ::Capybara::RSpecMatchers
         | 
| 33 | 
            -
                      end
         | 
| 20 | 
            +
                  class CapybaraDslDelegator
         | 
| 21 | 
            +
                    include ::Capybara::DSL
         | 
| 22 | 
            +
                    if defined?(RSpec)
         | 
| 23 | 
            +
                      require 'rspec/matchers'
         | 
| 24 | 
            +
                      require 'capybara/rspec'
         | 
| 25 | 
            +
                      include ::Capybara::RSpecMatchers
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
                  end
         | 
| 34 28 |  | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 29 | 
            +
                  def visit(*args)
         | 
| 30 | 
            +
                    stream = STDOUT
         | 
| 31 | 
            +
                    old_stream = stream.dup
         | 
| 32 | 
            +
                    stream.reopen(null_device)
         | 
| 33 | 
            +
                    stream.sync = true
         | 
| 34 | 
            +
                    instance.visit *args
         | 
| 35 | 
            +
                  ensure
         | 
| 36 | 
            +
                    stream.reopen(old_stream)
         | 
| 37 | 
            +
                  end
         | 
| 44 38 |  | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 39 | 
            +
                  def instance
         | 
| 40 | 
            +
                    @instance ||= CapybaraDslDelegator.new
         | 
| 41 | 
            +
                  end
         | 
| 47 42 |  | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 43 | 
            +
                  def method_missing(m, *args)
         | 
| 44 | 
            +
                    instance.send m, *args
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  def null_device
         | 
| 48 | 
            +
                    return @null_device if defined?(@null_device)
         | 
| 53 49 |  | 
| 54 | 
            -
             | 
| 55 | 
            -
                       | 
| 50 | 
            +
                    if RbConfig::CONFIG["host_os"] =~ /mingw|mswin/
         | 
| 51 | 
            +
                      @null_device = "NUL"
         | 
| 52 | 
            +
                    else
         | 
| 53 | 
            +
                      @null_device = "/dev/null"
         | 
| 56 54 | 
             
                    end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    @null_device
         | 
| 57 57 | 
             
                  end
         | 
| 58 58 | 
             
                end
         | 
| 59 59 | 
             
              end
         | 
    
        data/lib/spinach/feature.rb
    CHANGED
    
    
| @@ -34,7 +34,7 @@ module Spinach | |
| 34 34 | 
             
                  def report_undefined_steps
         | 
| 35 35 | 
             
                    if undefined_steps.any?
         | 
| 36 36 | 
             
                      error.puts "\nUndefined steps summary:\n"
         | 
| 37 | 
            -
                      report_errors('Undefined steps', undefined_steps, : | 
| 37 | 
            +
                      report_errors('Undefined steps', undefined_steps, :red)
         | 
| 38 38 | 
             
                    end
         | 
| 39 39 | 
             
                  end
         | 
| 40 40 |  | 
| @@ -47,9 +47,9 @@ module Spinach | |
| 47 47 |  | 
| 48 48 | 
             
                  def report_undefined_features
         | 
| 49 49 | 
             
                    if undefined_features.any?
         | 
| 50 | 
            -
                      error.puts "  Undefined features (#{undefined_features.length})". | 
| 50 | 
            +
                      error.puts "  Undefined features (#{undefined_features.length})".red
         | 
| 51 51 | 
             
                      undefined_features.each do |feature|
         | 
| 52 | 
            -
                        error.puts "    #{feature.name}". | 
| 52 | 
            +
                        error.puts "    #{feature.name}".red
         | 
| 53 53 | 
             
                      end
         | 
| 54 54 | 
             
                    end
         | 
| 55 55 | 
             
                  end
         | 
| @@ -108,7 +108,7 @@ module Spinach | |
| 108 108 | 
             
                    feature, scenario, step, exception = error
         | 
| 109 109 | 
             
                    summary = "    #{feature.name} :: #{scenario.name} :: #{full_step step}"
         | 
| 110 110 | 
             
                    if exception.kind_of?(Spinach::StepNotDefinedException)
         | 
| 111 | 
            -
                      summary. | 
| 111 | 
            +
                      summary.red
         | 
| 112 112 | 
             
                    elsif exception.kind_of?(Spinach::StepPendingException)
         | 
| 113 113 | 
             
                      summary += "\n      Reason: '#{exception.reason}'\n"
         | 
| 114 114 | 
             
                      summary.yellow
         | 
| @@ -133,10 +133,10 @@ module Spinach | |
| 133 133 |  | 
| 134 134 | 
             
                    if exception.kind_of?(Spinach::StepNotDefinedException)
         | 
| 135 135 | 
             
                      output << "\n"
         | 
| 136 | 
            -
                      output << "        You can define it with: \n\n". | 
| 136 | 
            +
                      output << "        You can define it with: \n\n".red
         | 
| 137 137 | 
             
                      suggestion = Generators::StepGenerator.new(step).generate
         | 
| 138 138 | 
             
                      suggestion.split("\n").each do |line|
         | 
| 139 | 
            -
                        output << "          #{line}\n". | 
| 139 | 
            +
                        output << "          #{line}\n".red
         | 
| 140 140 | 
             
                      end
         | 
| 141 141 | 
             
                      output << "\n"
         | 
| 142 142 | 
             
                    elsif exception.kind_of?(Spinach::StepPendingException)
         | 
| @@ -169,7 +169,7 @@ module Spinach | |
| 169 169 | 
             
                    }.join("\n")
         | 
| 170 170 |  | 
| 171 171 | 
             
                    if exception.kind_of?(Spinach::StepNotDefinedException)
         | 
| 172 | 
            -
                      output. | 
| 172 | 
            +
                      output.red
         | 
| 173 173 | 
             
                    elsif exception.kind_of?(Spinach::StepPendingException)
         | 
| 174 174 | 
             
                      output.yellow
         | 
| 175 175 | 
             
                    else
         | 
| @@ -215,12 +215,12 @@ module Spinach | |
| 215 215 | 
             
                  #
         | 
| 216 216 | 
             
                  def run_summary
         | 
| 217 217 | 
             
                    successful_summary = format_summary(:green,  successful_steps, 'Successful')
         | 
| 218 | 
            -
                    undefined_summary  = format_summary(: | 
| 218 | 
            +
                    undefined_summary  = format_summary(:red,    undefined_steps,  'Undefined')
         | 
| 219 219 | 
             
                    pending_summary    = format_summary(:yellow, pending_steps,    'Pending')
         | 
| 220 220 | 
             
                    failed_summary     = format_summary(:red,    failed_steps,     'Failed')
         | 
| 221 221 | 
             
                    error_summary      = format_summary(:red,    error_steps,      'Error')
         | 
| 222 222 |  | 
| 223 | 
            -
                    out.puts "Steps Summary: #{successful_summary}, #{ | 
| 223 | 
            +
                    out.puts "Steps Summary: #{successful_summary}, #{pending_summary}, #{undefined_summary}, #{failed_summary}, #{error_summary}\n\n"
         | 
| 224 224 | 
             
                    out.puts "Finished in #{Time.now - @start_time} seconds" if @start_time
         | 
| 225 225 | 
             
                  end
         | 
| 226 226 | 
             
                end
         | 
| @@ -102,7 +102,7 @@ module Spinach | |
| 102 102 | 
             
                  #   The step in a JSON GherkinRubyRuby format
         | 
| 103 103 | 
             
                  #
         | 
| 104 104 | 
             
                  def on_undefined_step(step, failure, step_definitions = nil)
         | 
| 105 | 
            -
                    output_step('?', step, : | 
| 105 | 
            +
                    output_step('?', step, :red)
         | 
| 106 106 | 
             
                    self.scenario_error = [current_feature, current_scenario, step, failure]
         | 
| 107 107 | 
             
                    undefined_steps << scenario_error
         | 
| 108 108 | 
             
                  end
         | 
| @@ -134,7 +134,7 @@ module Spinach | |
| 134 134 | 
             
                    lines << generator.generate
         | 
| 135 135 |  | 
| 136 136 | 
             
                    lines.split("\n").each do |line|
         | 
| 137 | 
            -
                      out.puts "    #{line}". | 
| 137 | 
            +
                      out.puts "    #{line}".red
         | 
| 138 138 | 
             
                    end
         | 
| 139 139 | 
             
                    out.puts "\n\n"
         | 
| 140 140 |  | 
    
        data/lib/spinach/version.rb
    CHANGED
    
    
    
        data/spinach.gemspec
    CHANGED
    
    | @@ -12,10 +12,11 @@ Gem::Specification.new do |gem| | |
| 12 12 |  | 
| 13 13 | 
             
              gem.add_runtime_dependency 'gherkin-ruby', '>= 0.3.1'
         | 
| 14 14 | 
             
              gem.add_runtime_dependency 'colorize', '0.5.8'
         | 
| 15 | 
            +
              gem.add_runtime_dependency 'json'
         | 
| 15 16 | 
             
              gem.add_development_dependency 'rake'
         | 
| 16 17 | 
             
              gem.add_development_dependency 'mocha'
         | 
| 17 18 | 
             
              gem.add_development_dependency 'sinatra'
         | 
| 18 | 
            -
              gem.add_development_dependency 'capybara' | 
| 19 | 
            +
              gem.add_development_dependency 'capybara'
         | 
| 19 20 | 
             
              gem.add_development_dependency 'pry'
         | 
| 20 21 | 
             
              gem.add_development_dependency 'simplecov'
         | 
| 21 22 | 
             
              gem.add_development_dependency 'rspec'
         | 
| @@ -5,16 +5,18 @@ require 'spinach' | |
| 5 5 | 
             
            require 'spinach/capybara'
         | 
| 6 6 | 
             
            require 'sinatra/base'
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
               | 
| 10 | 
            -
                 | 
| 8 | 
            +
            describe Spinach::FeatureSteps::Capybara do
         | 
| 9 | 
            +
              let(:sinatra_class) do
         | 
| 10 | 
            +
                Class.new(Sinatra::Base) do
         | 
| 11 | 
            +
                  get '/' do
         | 
| 12 | 
            +
                    'Hello world!'
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 11 15 | 
             
              end
         | 
| 12 | 
            -
            end
         | 
| 13 16 |  | 
| 14 | 
            -
            describe Spinach::FeatureSteps::Capybara do
         | 
| 15 17 | 
             
              before do
         | 
| 16 18 | 
             
                Capybara.current_driver = :rack_test
         | 
| 17 | 
            -
                Capybara.app =  | 
| 19 | 
            +
                Capybara.app = sinatra_class
         | 
| 18 20 |  | 
| 19 21 | 
             
                class TestFeature < Spinach::FeatureSteps
         | 
| 20 22 | 
             
                  include Spinach::FeatureSteps::Capybara
         | 
| @@ -46,18 +48,26 @@ Feature: A test feature | |
| 46 48 | 
             
              Scenario: Another test scenario
         | 
| 47 49 | 
             
                Given Hello
         | 
| 48 50 | 
             
                Then Goodbye
         | 
| 49 | 
            -
            """).parse
         | 
| 51 | 
            +
                                                         """).parse
         | 
| 50 52 | 
             
              }
         | 
| 51 53 |  | 
| 52 54 | 
             
              let(:failing_feature) { Spinach::Parser.new("""
         | 
| 53 55 | 
             
            Feature: A test feature
         | 
| 54 56 | 
             
              Scenario: A test scenario
         | 
| 55 57 | 
             
                Given Fail
         | 
| 56 | 
            -
            """).parse
         | 
| 58 | 
            +
                                                          """).parse
         | 
| 57 59 | 
             
              }
         | 
| 58 60 |  | 
| 59 | 
            -
              it ' | 
| 60 | 
            -
                @feature. | 
| 61 | 
            +
              it 'responds to Capybara::DSL methods' do
         | 
| 62 | 
            +
                @feature.respond_to?(:page).must_equal false
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              it 'does not respond to non Capybara::DSL methods' do
         | 
| 66 | 
            +
                @feature.respond_to?(:strange).must_equal false
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              it 'raises NoMethodError when calling a non Capybara::DSL methods' do
         | 
| 70 | 
            +
                proc { @feature.strange }.must_raise(NoMethodError)
         | 
| 61 71 | 
             
              end
         | 
| 62 72 |  | 
| 63 73 | 
             
              it 'goes to a capybara page and returns its result' do
         | 
| @@ -29,6 +29,7 @@ module Spinach | |
| 29 29 | 
             
                      @node  = stub(
         | 
| 30 30 | 
             
                        scenarios: @scenarios,
         | 
| 31 31 | 
             
                        name: 'Go shopping',
         | 
| 32 | 
            +
                        description: ['some non-interpreted info','from the description'],
         | 
| 32 33 | 
             
                        background: @background,
         | 
| 33 34 | 
             
                        tags: @tags
         | 
| 34 35 | 
             
                      )
         | 
| @@ -39,6 +40,11 @@ module Spinach | |
| 39 40 | 
             
                      visitor.feature.name.must_equal 'Go shopping'
         | 
| 40 41 | 
             
                    end
         | 
| 41 42 |  | 
| 43 | 
            +
                    it 'sets the description' do
         | 
| 44 | 
            +
                      visitor.visit_Feature(@node)
         | 
| 45 | 
            +
                      visitor.feature.description.must_equal ['some non-interpreted info','from the description']
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
             | 
| 42 48 | 
             
                    it 'sets the tags' do
         | 
| 43 49 | 
             
                      @tags.each do |step|
         | 
| 44 50 | 
             
                        step.expects(:accept).with visitor
         | 
    
        data/test/spinach/parser_test.rb
    CHANGED
    
    | @@ -4,6 +4,9 @@ describe Spinach::Parser do | |
| 4 4 | 
             
              before do
         | 
| 5 5 | 
             
                @contents = """
         | 
| 6 6 | 
             
            Feature: User authentication
         | 
| 7 | 
            +
              As a developer
         | 
| 8 | 
            +
              I expect some stuff
         | 
| 9 | 
            +
              So that I have it
         | 
| 7 10 |  | 
| 8 11 | 
             
              Scenario: User logs in
         | 
| 9 12 | 
             
                Given I am on the front page
         | 
| @@ -22,6 +25,11 @@ Feature: User authentication | |
| 22 25 | 
             
                  visitor.expects(:visit).with ast
         | 
| 23 26 | 
             
                  @parser.parse
         | 
| 24 27 | 
             
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                it 'includes description text in the feature' do
         | 
| 30 | 
            +
                  feature = @parser.parse
         | 
| 31 | 
            +
                  feature.description.must_equal ['As a developer', 'I expect some stuff', 'So that I have it']
         | 
| 32 | 
            +
                end
         | 
| 25 33 | 
             
              end
         | 
| 26 34 |  | 
| 27 35 | 
             
              describe '.open_file' do
         | 
| @@ -31,4 +39,5 @@ Feature: User authentication | |
| 31 39 | 
             
                    'feature_definition.feature')
         | 
| 32 40 | 
             
                end
         | 
| 33 41 | 
             
              end
         | 
| 42 | 
            +
             | 
| 34 43 | 
             
            end
         | 
| @@ -3,7 +3,11 @@ | |
| 3 3 | 
             
            require_relative '../../../test_helper'
         | 
| 4 4 |  | 
| 5 5 | 
             
            describe Spinach::Reporter::Stdout do
         | 
| 6 | 
            -
              let(:exception)  | 
| 6 | 
            +
              let(:exception) do
         | 
| 7 | 
            +
                mock "exception" do
         | 
| 8 | 
            +
                  stubs(:message).returns "Something went wrong"
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 7 11 |  | 
| 8 12 | 
             
              let(:error) do
         | 
| 9 13 | 
             
                [stub(name: 'My feature'),
         | 
| @@ -93,7 +97,7 @@ describe Spinach::Reporter::Stdout do | |
| 93 97 | 
             
                  it 'outputs the failing steps' do
         | 
| 94 98 | 
             
                    steps = [anything]
         | 
| 95 99 | 
             
                    @reporter.stubs(:undefined_steps).returns(steps)
         | 
| 96 | 
            -
                    @reporter.expects(:report_errors).with('Undefined steps', steps, : | 
| 100 | 
            +
                    @reporter.expects(:report_errors).with('Undefined steps', steps, :red)
         | 
| 97 101 |  | 
| 98 102 | 
             
                    @reporter.report_undefined_steps
         | 
| 99 103 | 
             
                  end
         | 
| @@ -216,11 +220,11 @@ describe Spinach::Reporter::Stdout do | |
| 216 220 | 
             
                end
         | 
| 217 221 |  | 
| 218 222 | 
             
                describe 'when given an undefined step exception' do
         | 
| 219 | 
            -
                  it 'prints the error in  | 
| 223 | 
            +
                  it 'prints the error in red' do
         | 
| 220 224 | 
             
                    undefined_error = error
         | 
| 221 225 | 
             
                    undefined_error.insert(3, Spinach::StepNotDefinedException.new(anything))
         | 
| 222 226 |  | 
| 223 | 
            -
                    String.any_instance.expects(: | 
| 227 | 
            +
                    String.any_instance.expects(:red)
         | 
| 224 228 |  | 
| 225 229 | 
             
                    @reporter.summarized_error(error)
         | 
| 226 230 | 
             
                  end
         | 
| @@ -288,10 +292,10 @@ describe Spinach::Reporter::Stdout do | |
| 288 292 | 
             
                end
         | 
| 289 293 |  | 
| 290 294 | 
             
                describe 'when given an undefined step exception' do
         | 
| 291 | 
            -
                  it 'prints the error in  | 
| 295 | 
            +
                  it 'prints the error in red' do
         | 
| 292 296 | 
             
                    undefined_exception = Spinach::StepNotDefinedException.new(stub(name: 'some step'))
         | 
| 293 297 |  | 
| 294 | 
            -
                    String.any_instance.expects(: | 
| 298 | 
            +
                    String.any_instance.expects(:red)
         | 
| 295 299 |  | 
| 296 300 | 
             
                    @reporter.report_exception(undefined_exception)
         | 
| 297 301 | 
             
                  end
         | 
    
        data/test/spinach/runner_test.rb
    CHANGED
    
    | @@ -151,7 +151,7 @@ describe Spinach::Runner do | |
| 151 151 | 
             
                    ['features/steps/a.rb', 'features/steps/a/a.rb', 'features/steps/z.rb', 'features/steps/z/z.rb'].each do |f|
         | 
| 152 152 | 
             
                      FileUtils.touch(f)
         | 
| 153 153 | 
             
                    end
         | 
| 154 | 
            -
                    runner.required_files.must_equal(['features/steps/a/a.rb', 'features/steps/z/z.rb', 'features/steps/a.rb', 'features/steps/z.rb'])
         | 
| 154 | 
            +
                    runner.required_files.must_equal(['/features/steps/a/a.rb', '/features/steps/z/z.rb', '/features/steps/a.rb', '/features/steps/z.rb'])
         | 
| 155 155 | 
             
                  end
         | 
| 156 156 | 
             
                end
         | 
| 157 157 |  | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: spinach
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.8. | 
| 4 | 
            +
              version: 0.8.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Josep Jaume Rey
         | 
| @@ -11,20 +11,20 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date:  | 
| 14 | 
            +
            date: 2014-04-04 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: gherkin-ruby
         | 
| 18 18 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 19 19 | 
             
                requirements:
         | 
| 20 | 
            -
                - -  | 
| 20 | 
            +
                - - ">="
         | 
| 21 21 | 
             
                  - !ruby/object:Gem::Version
         | 
| 22 22 | 
             
                    version: 0.3.1
         | 
| 23 23 | 
             
              type: :runtime
         | 
| 24 24 | 
             
              prerelease: false
         | 
| 25 25 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 26 | 
             
                requirements:
         | 
| 27 | 
            -
                - -  | 
| 27 | 
            +
                - - ">="
         | 
| 28 28 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 29 | 
             
                    version: 0.3.1
         | 
| 30 30 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -41,116 +41,130 @@ dependencies: | |
| 41 41 | 
             
                - - '='
         | 
| 42 42 | 
             
                  - !ruby/object:Gem::Version
         | 
| 43 43 | 
             
                    version: 0.5.8
         | 
| 44 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 45 | 
            +
              name: json
         | 
| 46 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 47 | 
            +
                requirements:
         | 
| 48 | 
            +
                - - ">="
         | 
| 49 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 50 | 
            +
                    version: '0'
         | 
| 51 | 
            +
              type: :runtime
         | 
| 52 | 
            +
              prerelease: false
         | 
| 53 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 54 | 
            +
                requirements:
         | 
| 55 | 
            +
                - - ">="
         | 
| 56 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 57 | 
            +
                    version: '0'
         | 
| 44 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 45 59 | 
             
              name: rake
         | 
| 46 60 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 47 61 | 
             
                requirements:
         | 
| 48 | 
            -
                - -  | 
| 62 | 
            +
                - - ">="
         | 
| 49 63 | 
             
                  - !ruby/object:Gem::Version
         | 
| 50 64 | 
             
                    version: '0'
         | 
| 51 65 | 
             
              type: :development
         | 
| 52 66 | 
             
              prerelease: false
         | 
| 53 67 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 54 68 | 
             
                requirements:
         | 
| 55 | 
            -
                - -  | 
| 69 | 
            +
                - - ">="
         | 
| 56 70 | 
             
                  - !ruby/object:Gem::Version
         | 
| 57 71 | 
             
                    version: '0'
         | 
| 58 72 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 73 | 
             
              name: mocha
         | 
| 60 74 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 61 75 | 
             
                requirements:
         | 
| 62 | 
            -
                - -  | 
| 76 | 
            +
                - - ">="
         | 
| 63 77 | 
             
                  - !ruby/object:Gem::Version
         | 
| 64 78 | 
             
                    version: '0'
         | 
| 65 79 | 
             
              type: :development
         | 
| 66 80 | 
             
              prerelease: false
         | 
| 67 81 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 68 82 | 
             
                requirements:
         | 
| 69 | 
            -
                - -  | 
| 83 | 
            +
                - - ">="
         | 
| 70 84 | 
             
                  - !ruby/object:Gem::Version
         | 
| 71 85 | 
             
                    version: '0'
         | 
| 72 86 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 73 87 | 
             
              name: sinatra
         | 
| 74 88 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 75 89 | 
             
                requirements:
         | 
| 76 | 
            -
                - -  | 
| 90 | 
            +
                - - ">="
         | 
| 77 91 | 
             
                  - !ruby/object:Gem::Version
         | 
| 78 92 | 
             
                    version: '0'
         | 
| 79 93 | 
             
              type: :development
         | 
| 80 94 | 
             
              prerelease: false
         | 
| 81 95 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 82 96 | 
             
                requirements:
         | 
| 83 | 
            -
                - -  | 
| 97 | 
            +
                - - ">="
         | 
| 84 98 | 
             
                  - !ruby/object:Gem::Version
         | 
| 85 99 | 
             
                    version: '0'
         | 
| 86 100 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 87 101 | 
             
              name: capybara
         | 
| 88 102 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 89 103 | 
             
                requirements:
         | 
| 90 | 
            -
                - -  | 
| 104 | 
            +
                - - ">="
         | 
| 91 105 | 
             
                  - !ruby/object:Gem::Version
         | 
| 92 | 
            -
                    version:  | 
| 106 | 
            +
                    version: '0'
         | 
| 93 107 | 
             
              type: :development
         | 
| 94 108 | 
             
              prerelease: false
         | 
| 95 109 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 96 110 | 
             
                requirements:
         | 
| 97 | 
            -
                - -  | 
| 111 | 
            +
                - - ">="
         | 
| 98 112 | 
             
                  - !ruby/object:Gem::Version
         | 
| 99 | 
            -
                    version:  | 
| 113 | 
            +
                    version: '0'
         | 
| 100 114 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 101 115 | 
             
              name: pry
         | 
| 102 116 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 103 117 | 
             
                requirements:
         | 
| 104 | 
            -
                - -  | 
| 118 | 
            +
                - - ">="
         | 
| 105 119 | 
             
                  - !ruby/object:Gem::Version
         | 
| 106 120 | 
             
                    version: '0'
         | 
| 107 121 | 
             
              type: :development
         | 
| 108 122 | 
             
              prerelease: false
         | 
| 109 123 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 110 124 | 
             
                requirements:
         | 
| 111 | 
            -
                - -  | 
| 125 | 
            +
                - - ">="
         | 
| 112 126 | 
             
                  - !ruby/object:Gem::Version
         | 
| 113 127 | 
             
                    version: '0'
         | 
| 114 128 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 115 129 | 
             
              name: simplecov
         | 
| 116 130 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 117 131 | 
             
                requirements:
         | 
| 118 | 
            -
                - -  | 
| 132 | 
            +
                - - ">="
         | 
| 119 133 | 
             
                  - !ruby/object:Gem::Version
         | 
| 120 134 | 
             
                    version: '0'
         | 
| 121 135 | 
             
              type: :development
         | 
| 122 136 | 
             
              prerelease: false
         | 
| 123 137 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 124 138 | 
             
                requirements:
         | 
| 125 | 
            -
                - -  | 
| 139 | 
            +
                - - ">="
         | 
| 126 140 | 
             
                  - !ruby/object:Gem::Version
         | 
| 127 141 | 
             
                    version: '0'
         | 
| 128 142 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 129 143 | 
             
              name: rspec
         | 
| 130 144 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 131 145 | 
             
                requirements:
         | 
| 132 | 
            -
                - -  | 
| 146 | 
            +
                - - ">="
         | 
| 133 147 | 
             
                  - !ruby/object:Gem::Version
         | 
| 134 148 | 
             
                    version: '0'
         | 
| 135 149 | 
             
              type: :development
         | 
| 136 150 | 
             
              prerelease: false
         | 
| 137 151 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 138 152 | 
             
                requirements:
         | 
| 139 | 
            -
                - -  | 
| 153 | 
            +
                - - ">="
         | 
| 140 154 | 
             
                  - !ruby/object:Gem::Version
         | 
| 141 155 | 
             
                    version: '0'
         | 
| 142 156 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 143 157 | 
             
              name: minitest
         | 
| 144 158 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 145 159 | 
             
                requirements:
         | 
| 146 | 
            -
                - -  | 
| 160 | 
            +
                - - ">="
         | 
| 147 161 | 
             
                  - !ruby/object:Gem::Version
         | 
| 148 162 | 
             
                    version: '0'
         | 
| 149 163 | 
             
              type: :development
         | 
| 150 164 | 
             
              prerelease: false
         | 
| 151 165 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 152 166 | 
             
                requirements:
         | 
| 153 | 
            -
                - -  | 
| 167 | 
            +
                - - ">="
         | 
| 154 168 | 
             
                  - !ruby/object:Gem::Version
         | 
| 155 169 | 
             
                    version: '0'
         | 
| 156 170 | 
             
            description: Spinach is a BDD framework on top of gherkin
         | 
| @@ -165,11 +179,11 @@ executables: | |
| 165 179 | 
             
            extensions: []
         | 
| 166 180 | 
             
            extra_rdoc_files: []
         | 
| 167 181 | 
             
            files:
         | 
| 168 | 
            -
            - .document
         | 
| 169 | 
            -
            - .gitignore
         | 
| 170 | 
            -
            - .ruby-gemset
         | 
| 171 | 
            -
            - .ruby-version
         | 
| 172 | 
            -
            - .travis.yml
         | 
| 182 | 
            +
            - ".document"
         | 
| 183 | 
            +
            - ".gitignore"
         | 
| 184 | 
            +
            - ".ruby-gemset"
         | 
| 185 | 
            +
            - ".ruby-version"
         | 
| 186 | 
            +
            - ".travis.yml"
         | 
| 173 187 | 
             
            - CHANGELOG.md
         | 
| 174 188 | 
             
            - Gemfile
         | 
| 175 189 | 
             
            - Guardfile
         | 
| @@ -284,17 +298,17 @@ require_paths: | |
| 284 298 | 
             
            - lib
         | 
| 285 299 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 286 300 | 
             
              requirements:
         | 
| 287 | 
            -
              - -  | 
| 301 | 
            +
              - - ">="
         | 
| 288 302 | 
             
                - !ruby/object:Gem::Version
         | 
| 289 303 | 
             
                  version: '0'
         | 
| 290 304 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 291 305 | 
             
              requirements:
         | 
| 292 | 
            -
              - -  | 
| 306 | 
            +
              - - ">="
         | 
| 293 307 | 
             
                - !ruby/object:Gem::Version
         | 
| 294 308 | 
             
                  version: '0'
         | 
| 295 309 | 
             
            requirements: []
         | 
| 296 310 | 
             
            rubyforge_project: 
         | 
| 297 | 
            -
            rubygems_version: 2. | 
| 311 | 
            +
            rubygems_version: 2.2.0
         | 
| 298 312 | 
             
            signing_key: 
         | 
| 299 313 | 
             
            specification_version: 4
         | 
| 300 314 | 
             
            summary: Spinach is a BDD framework on top of gherkin
         |