From d018ffe2114dc0020774d1ae45355f3fcb8675c5 Mon Sep 17 00:00:00 2001 From: Thomas Roper Date: Fri, 27 Jun 2014 12:40:44 -0400 Subject: [PATCH 1/2] add filename attribute to Feature, and set it from Runner --- lib/spinach/feature.rb | 6 +++++- lib/spinach/runner.rb | 2 ++ test/spinach/runner_test.rb | 27 ++++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/spinach/feature.rb b/lib/spinach/feature.rb index 72b49f11..f8c45c9e 100644 --- a/lib/spinach/feature.rb +++ b/lib/spinach/feature.rb @@ -1,6 +1,6 @@ module Spinach class Feature - attr_accessor :line + attr_accessor :filename, :line attr_accessor :name, :scenarios, :tags attr_accessor :background attr_accessor :description @@ -14,5 +14,9 @@ def background_steps @background.nil? ? [] : @background.steps end + def line=(value) + @line = value.to_i if value + end + end end diff --git a/lib/spinach/runner.rb b/lib/spinach/runner.rb index 64e4f96d..ace7369c 100644 --- a/lib/spinach/runner.rb +++ b/lib/spinach/runner.rb @@ -73,6 +73,8 @@ def run filename.split(':') end.each do |filename, line| feature = Parser.open_file(filename).parse + feature.filename = filename + feature.line = line success = FeatureRunner.new(feature, line).run successful = false unless success break if fail_fast? && !successful diff --git a/test/spinach/runner_test.rb b/test/spinach/runner_test.rb index 70698b36..f3a5202d 100644 --- a/test/spinach/runner_test.rb +++ b/test/spinach/runner_test.rb @@ -77,11 +77,12 @@ filenames.each do |filename| Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub parser.stubs(:parse).returns feature = stub + feature.stubs(:filename=).with(filename) + feature.stubs(:line=).with(nil) Spinach::Runner::FeatureRunner.stubs(:new). with(feature, anything). returns(@feature_runner) end - @feature_runner.stubs(:run).returns(true) runner.stubs(required_files: []) end @@ -101,6 +102,28 @@ runner.run.must_equal false end + describe "when line set" do + let(:filename) {'features/cool_feature.feature'} + let(:line) {12} + let(:filenames) {["#{filename}:#{line}"]} + let(:runner) { Spinach::Runner.new(filenames) } + + it 'sets filename and line on the feature' do + @feature_runner = stub + Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub + parser.stubs(:parse).returns feature = Spinach::Feature.new + Spinach::Runner::FeatureRunner.stubs(:new). + with(feature, anything). + returns(@feature_runner) + runner.stubs(required_files: []) + @feature_runner.stubs(:run).returns(true) + runner.run.must_equal true + feature.filename.must_equal filename + feature.line.must_equal line + end + + end + describe "when fail_fast set" do let(:feature_runners) { [ stub, stub ] } @@ -108,6 +131,8 @@ filenames.each_with_index do |filename, i| Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub parser.stubs(:parse).returns feature = stub + feature.stubs(:filename=).with(filename) + feature.stubs(:line=).with(nil) Spinach::Runner::FeatureRunner.stubs(:new). with(feature, anything). returns(feature_runners[i]) From 767a11cb67bf7510f5c9bcf1241b79a81c79d048 Mon Sep 17 00:00:00 2001 From: Thomas Roper Date: Fri, 27 Jun 2014 13:40:05 -0400 Subject: [PATCH 2/2] change Feature stubs to Feature instances --- lib/spinach/feature.rb | 1 - test/spinach/runner_test.rb | 19 ++++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/lib/spinach/feature.rb b/lib/spinach/feature.rb index f8c45c9e..781b5ab9 100644 --- a/lib/spinach/feature.rb +++ b/lib/spinach/feature.rb @@ -17,6 +17,5 @@ def background_steps def line=(value) @line = value.to_i if value end - end end diff --git a/test/spinach/runner_test.rb b/test/spinach/runner_test.rb index f3a5202d..14a21fdc 100644 --- a/test/spinach/runner_test.rb +++ b/test/spinach/runner_test.rb @@ -76,13 +76,12 @@ @feature_runner = stub filenames.each do |filename| Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub - parser.stubs(:parse).returns feature = stub - feature.stubs(:filename=).with(filename) - feature.stubs(:line=).with(nil) + parser.stubs(:parse).returns feature = Spinach::Feature.new Spinach::Runner::FeatureRunner.stubs(:new). with(feature, anything). returns(@feature_runner) end + @feature_runner.stubs(:run).returns(true) runner.stubs(required_files: []) end @@ -102,10 +101,10 @@ runner.run.must_equal false end - describe "when line set" do - let(:filename) {'features/cool_feature.feature'} - let(:line) {12} - let(:filenames) {["#{filename}:#{line}"]} + describe 'when line set' do + let(:filename) { 'features/cool_feature.feature' } + let(:line) { 12 } + let(:filenames) { ["#{filename}:#{line}"] } let(:runner) { Spinach::Runner.new(filenames) } it 'sets filename and line on the feature' do @@ -117,11 +116,11 @@ returns(@feature_runner) runner.stubs(required_files: []) @feature_runner.stubs(:run).returns(true) + runner.run.must_equal true feature.filename.must_equal filename feature.line.must_equal line end - end describe "when fail_fast set" do @@ -130,9 +129,7 @@ before(:each) do filenames.each_with_index do |filename, i| Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub - parser.stubs(:parse).returns feature = stub - feature.stubs(:filename=).with(filename) - feature.stubs(:line=).with(nil) + parser.stubs(:parse).returns feature = Spinach::Feature.new Spinach::Runner::FeatureRunner.stubs(:new). with(feature, anything). returns(feature_runners[i])