turnip 0.3.1 → 1.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.
Files changed (49) hide show
  1. data/README.md +128 -166
  2. data/examples/autoload_steps.feature +3 -2
  3. data/examples/errors.feature +8 -0
  4. data/examples/step_calling.feature +2 -0
  5. data/examples/steps/alignment_steps.rb +23 -0
  6. data/examples/{autoload_steps.rb → steps/autoload_steps.rb} +0 -0
  7. data/examples/steps/backtick_steps.rb +10 -0
  8. data/examples/steps/dragon_steps.rb +41 -0
  9. data/examples/{knight_steps.rb → steps/knight_steps.rb} +3 -1
  10. data/examples/{more_steps.rb → steps/more_steps.rb} +0 -0
  11. data/examples/{step_calling_steps.rb → steps/step_calling_steps.rb} +0 -0
  12. data/examples/{steps.rb → steps/steps.rb} +25 -1
  13. data/examples/steps_for.feature +2 -2
  14. data/examples/steps_with_variations.feature +17 -0
  15. data/lib/turnip.rb +19 -34
  16. data/lib/turnip/builder.rb +26 -24
  17. data/lib/turnip/define.rb +9 -0
  18. data/lib/turnip/dsl.rb +11 -17
  19. data/lib/turnip/execute.rb +15 -0
  20. data/lib/turnip/rspec.rb +80 -0
  21. data/lib/turnip/step_definition.rb +7 -32
  22. data/lib/turnip/version.rb +1 -1
  23. data/spec/builder_spec.rb +1 -40
  24. data/spec/define_and_execute.rb +38 -0
  25. data/spec/dsl_spec.rb +36 -19
  26. data/spec/integration_spec.rb +5 -1
  27. data/spec/spec_helper.rb +1 -3
  28. data/spec/step_definition_spec.rb +37 -51
  29. metadata +25 -55
  30. data/examples/alignment_steps.rb +0 -7
  31. data/examples/backtick_steps.rb +0 -4
  32. data/examples/dragon_steps.rb +0 -17
  33. data/examples/evil_steps.rb +0 -7
  34. data/examples/neutral_steps.rb +0 -7
  35. data/examples/red_dragon_steps.rb +0 -18
  36. data/lib/turnip/config.rb +0 -18
  37. data/lib/turnip/feature_file.rb +0 -20
  38. data/lib/turnip/loader.rb +0 -16
  39. data/lib/turnip/runner_dsl.rb +0 -9
  40. data/lib/turnip/scenario_context.rb +0 -41
  41. data/lib/turnip/scenario_runner.rb +0 -35
  42. data/lib/turnip/step_loader.rb +0 -27
  43. data/lib/turnip/step_module.rb +0 -89
  44. data/spec/feature_file_spec.rb +0 -18
  45. data/spec/runner_dsl_spec.rb +0 -23
  46. data/spec/scenario_context_spec.rb +0 -51
  47. data/spec/scenario_runner_spec.rb +0 -79
  48. data/spec/step_loader_spec.rb +0 -29
  49. data/spec/step_module_spec.rb +0 -106
@@ -4,31 +4,8 @@ module Turnip
4
4
  def expression; step_definition.expression; end
5
5
  end
6
6
 
7
- class Pending < StandardError; end
8
- class Ambiguous < StandardError; end
9
-
10
7
  attr_reader :expression, :block
11
8
 
12
- class << self
13
- def execute(context, available_steps, step)
14
- match = find(available_steps, step.description)
15
- params = match.params
16
- params << step.extra_arg if step.extra_arg
17
- context.instance_exec(*params, &match.block)
18
- rescue Pending
19
- context.pending "the step '#{step.description}' is not implemented"
20
- end
21
-
22
- def find(available_steps, description)
23
- found = available_steps.map do |step|
24
- step.match(description)
25
- end.compact
26
- raise Pending, description if found.length == 0
27
- raise Ambiguous, description if found.length > 1
28
- found[0]
29
- end
30
- end
31
-
32
9
  def initialize(expression, &block)
33
10
  @expression = expression
34
11
  @block = block
@@ -42,7 +19,7 @@ module Turnip
42
19
  result = description.match(regexp)
43
20
  if result
44
21
  params = result.captures
45
- result.names.each_with_index do |name, index|
22
+ @placeholder_names.each_with_index do |name, index|
46
23
  params[index] = Turnip::Placeholder.apply(name.to_sym, params[index])
47
24
  end
48
25
  Match.new(self, params, block)
@@ -54,21 +31,19 @@ module Turnip
54
31
  OPTIONAL_WORD_REGEXP = /(\\\s)?\\\(([^)]+)\\\)(\\\s)?/
55
32
  PLACEHOLDER_REGEXP = /:([\w]+)/
56
33
  ALTERNATIVE_WORD_REGEXP = /(\w+)((\/\w+)+)/
57
- COMMAND_REGEXP = /`([^`]+)`/
58
34
 
59
35
  def compile_regexp
36
+ @placeholder_names = []
60
37
  regexp = Regexp.escape(expression)
61
- regexp.gsub!(COMMAND_REGEXP) do |_|
62
- "(?:[`]([^`]+)[`])"
38
+ regexp.gsub!(PLACEHOLDER_REGEXP) do |_|
39
+ @placeholder_names << "#{$1}"
40
+ "(?<#{$1}>#{Placeholder.resolve($1.to_sym)})"
63
41
  end
64
42
  regexp.gsub!(OPTIONAL_WORD_REGEXP) do |_|
65
- [$1, $2, $3].compact.map { |m| "(#{m})?" }.join
43
+ [$1, $2, $3].compact.map { |m| "(?:#{m})?" }.join
66
44
  end
67
45
  regexp.gsub!(ALTERNATIVE_WORD_REGEXP) do |_|
68
- "(#{$1}#{$2.tr('/', '|')})"
69
- end
70
- regexp.gsub!(PLACEHOLDER_REGEXP) do |_|
71
- "(?<#{$1}>#{Placeholder.resolve($1.to_sym)})"
46
+ "(?:#{$1}#{$2.tr('/', '|')})"
72
47
  end
73
48
  Regexp.new("^#{regexp}$")
74
49
  end
@@ -1,3 +1,3 @@
1
1
  module Turnip
2
- VERSION = "0.3.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Turnip::Builder do
4
4
  context "with scenario outlines" do
5
- let(:feature_file) { Turnip::FeatureFile.new(File.expand_path('../examples/scenario_outline.feature', File.dirname(__FILE__))) }
5
+ let(:feature_file) { File.expand_path('../examples/scenario_outline.feature', File.dirname(__FILE__)) }
6
6
  let(:builder) { Turnip::Builder.build(feature_file) }
7
7
  let(:feature) { builder.features.first }
8
8
 
@@ -27,43 +27,4 @@ describe Turnip::Builder do
27
27
  ])
28
28
  end
29
29
  end
30
-
31
- describe "taggings" do
32
- let(:feature_file) { Turnip::FeatureFile.new(File.expand_path('../examples/autoload_steps.feature', File.dirname(__FILE__))) }
33
- let(:builder) { Turnip::Builder.build(feature_file) }
34
- let(:feature) { builder.features.first }
35
-
36
- context "for features" do
37
- it 'should automatically include the :global tag for features' do
38
- feature.active_tags.should include(:global)
39
- end
40
-
41
- it 'should automatically include the feature name tag for features' do
42
- feature.active_tags.should include(:autoload_steps)
43
- end
44
- end
45
-
46
- context "for scenarios" do
47
- it 'should only include scenario tags' do
48
- feature.scenarios.first.active_tags.should eq([:scenario_tag])
49
- end
50
- end
51
-
52
- context "autotag features disabled" do
53
- before(:each) { Turnip::Config.autotag_features = false }
54
- after(:each) { Turnip::Config.autotag_features = true }
55
-
56
- let(:feature_file) { Turnip::FeatureFile.new(File.expand_path('../examples/autoload_steps.feature', File.dirname(__FILE__))) }
57
- let(:builder) { Turnip::Builder.build(feature_file) }
58
- let(:feature) { builder.features.first }
59
-
60
- it 'should automatically include the :global tag for features' do
61
- feature.active_tags.should include(:global)
62
- end
63
-
64
- it 'should not automatically include the feature name tag for features' do
65
- feature.active_tags.should_not include(:autoload_steps)
66
- end
67
- end
68
- end
69
30
  end
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+
3
+ describe Turnip::Execute do
4
+ let(:mod) { Module.new }
5
+ let(:obj) { Object.new.tap { |o| o.extend Turnip::Execute; o.extend mod } }
6
+
7
+ it "defines a step method and makes it callable" do
8
+ mod.step("a test step") { "monkey" }
9
+ obj.step("a test step").should == "monkey"
10
+ end
11
+
12
+ it "allows placeholders to be filled and passed as arguments" do
13
+ mod.step("a :test step") { |test| test.upcase }
14
+ obj.step("a cool step").should == "COOL"
15
+ end
16
+
17
+ it "allows step to be called as a method via `send`" do
18
+ mod.step("a :test step") { |test| test.upcase }
19
+ obj.send("a :test step", "cool").should == "COOL"
20
+ end
21
+
22
+ it "sends in extra arg from a builder step" do
23
+ mod.step("a :test step") { |test, foo| test.upcase + foo }
24
+ obj.step("a cool step", "foo").should == "COOLfoo"
25
+ end
26
+
27
+ it "can be executed with a builder step" do
28
+ builder_step = stub(:to_s => "a cool step", :extra_args => [])
29
+ mod.step("a :test step") { |test| test.upcase }
30
+ obj.step(builder_step).should == "COOL"
31
+ end
32
+
33
+ it "sends in extra arg from a builder step" do
34
+ builder_step = stub(:to_s => "a cool step", :extra_args => ["foo"])
35
+ mod.step("a :test step") { |test, foo| test.upcase + foo }
36
+ obj.step(builder_step).should == "COOLfoo"
37
+ end
38
+ end
@@ -1,33 +1,50 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Turnip::DSL do
4
- before do
5
- Turnip::StepModule.clear_module_registry
6
- end
7
-
8
4
  let(:context) { stub.tap { |s| s.extend(Turnip::DSL) }}
9
-
5
+ let(:an_object) { Object.new.tap { |o| o.extend(Turnip::Execute) }}
10
6
  describe '.steps_for' do
11
- it 'delegates to StepModule' do
12
- Turnip::StepModule.should_receive(:steps_for).with(:example)
13
- context.steps_for(:example) {}
7
+ before do
8
+ ::RSpec.stub(:configure)
14
9
  end
15
- end
16
10
 
17
- describe '.step' do
18
- context 'first step defined globally' do
19
- it 'creates a new global entry' do
20
- context.step('this is a test') {}
21
- Turnip::StepModule.should be_registered(:global)
11
+ it 'creates a new module and adds steps to it' do
12
+ mod = context.steps_for(:foo) do
13
+ step("foo") { "foo" }
22
14
  end
15
+ an_object.extend mod
16
+ an_object.step("foo").should == "foo"
17
+ end
18
+
19
+ it 'remembers the name of the module' do
20
+ mod = context.steps_for(:foo) {}
21
+ mod.tag.should == :foo
23
22
  end
24
23
 
25
- context 'all other steps defined globally' do
26
- it 'adds more steps to the :global step module' do
27
- context.step('this is a test') {}
28
- context.step('this is another test') {}
29
- Turnip::StepModule.module_registry[:global].first.step_module.steps.size.should eq(2)
24
+ it 'tells RSpec to include the module' do
25
+ config = stub
26
+ RSpec.should_receive(:configure).and_yield(config)
27
+ config.should_receive(:include)
28
+
29
+ context.steps_for(:foo) {}
30
+ end
31
+
32
+ it 'warns of deprecation when called with :global' do
33
+ context.should_receive(:warn)
34
+ mod = context.steps_for(:global) do
35
+ step("foo") { "foo" }
30
36
  end
37
+ an_object.extend Turnip::Steps
38
+ an_object.step("foo").should == "foo"
39
+ end
40
+ end
41
+
42
+ describe '.step' do
43
+ it 'adds steps to Turnip::Steps' do
44
+ context.step('this is a test') { "foo" }
45
+ context.step('this is another test') { "bar" }
46
+ an_object.extend Turnip::Steps
47
+ an_object.step("this is a test").should == "foo"
31
48
  end
32
49
  end
33
50
 
@@ -11,6 +11,10 @@ describe 'The CLI', :type => :integration do
11
11
  end
12
12
 
13
13
  it "prints out failures and successes" do
14
- @result.should include('26 examples, 1 failure, 2 pending')
14
+ @result.should include('33 examples, 3 failures, 3 pending')
15
+ end
16
+
17
+ it "includes features in backtraces" do
18
+ @result.should include('examples/errors.feature:5:in `raise error')
15
19
  end
16
20
  end
@@ -1,3 +1 @@
1
- RSpec.configure do |config|
2
- Turnip::Config.step_dirs = 'examples'
3
- end
1
+ Dir.glob("examples/**/*steps.rb") { |f| load f, true }
@@ -1,50 +1,6 @@
1
1
  describe Turnip::StepDefinition do
2
2
  let(:all_steps) { [] }
3
3
 
4
- describe ".find" do
5
- it "returns a step definition that matches the description" do
6
- all_steps << Turnip::StepDefinition.new("there are :count monsters")
7
- Turnip::StepDefinition.find(all_steps, "there are 23 monsters").expression.should eq("there are :count monsters")
8
- end
9
-
10
- it "raises an error if the match is ambiguous" do
11
- all_steps << Turnip::StepDefinition.new("there are :count monsters")
12
- all_steps << Turnip::StepDefinition.new("there are 23 monsters")
13
- expect { Turnip::StepDefinition.find(all_steps, "there are 23 monsters") }.to raise_error(Turnip::StepDefinition::Ambiguous)
14
- end
15
-
16
- it "raises an error if there is no match" do
17
- expect { Turnip::StepDefinition.find(all_steps, "there are 23 monsters") }.to raise_error(Turnip::StepDefinition::Pending)
18
- end
19
- end
20
-
21
- describe ".execute" do
22
- let(:context) { stub }
23
-
24
- it "executes a step in the given context" do
25
- all_steps << Turnip::StepDefinition.new("there are :count monsters") { @testing = 123 }
26
- Turnip::StepDefinition.execute(context, all_steps, stub(:description => "there are 23 monsters", :extra_arg => nil))
27
- context.instance_variable_get(:@testing).should == 123
28
- end
29
-
30
- it "tells the context that the step is pending" do
31
- context.should_receive(:pending).with("the step 'there are 23 monsters' is not implemented")
32
- Turnip::StepDefinition.execute(context, all_steps, stub(:description => "there are 23 monsters", :extra_arg => nil))
33
- end
34
-
35
- it "sends along arguments" do
36
- all_steps << Turnip::StepDefinition.new("there are :count monsters") { |count| @testing = count.to_i }
37
- Turnip::StepDefinition.execute(context, all_steps, stub(:description => "there are 23 monsters", :extra_arg => nil))
38
- context.instance_variable_get(:@testing).should == 23
39
- end
40
-
41
- it "sends along extra arguments" do
42
- all_steps << Turnip::StepDefinition.new("there are :count monsters") { |count, extra| @testing = extra }
43
- Turnip::StepDefinition.execute(context, all_steps, stub(:description => "there are 23 monsters", :extra_arg => 'foo'))
44
- context.instance_variable_get(:@testing).should == 'foo'
45
- end
46
- end
47
-
48
4
  describe "#match" do
49
5
  it "matches a simple step" do
50
6
  step = Turnip::StepDefinition.new("there are monsters") {}
@@ -60,19 +16,49 @@ describe Turnip::StepDefinition do
60
16
  step.should match("there are 324 monsters")
61
17
  step.should_not match("there are no monsters")
62
18
  end
63
-
19
+
20
+ it "extracts arguments from matched steps" do
21
+ step = Turnip::StepDefinition.new("a :age year old monster called :name") {}
22
+ match = step.match("a 3 year old monster called John")
23
+ match.params.should eq(["3", "John"])
24
+ end
25
+
26
+ it "can reuse the same placeholder multiple times" do
27
+ step = Turnip::StepDefinition.new("a the monsters :name and :name") {}
28
+ match = step.match("a the monsters John and Trudy")
29
+ match.params.should eq(["John", "Trudy"])
30
+ end
31
+
32
+ it "can reuse the same custom placeholder multiple times" do
33
+ Turnip::Placeholder.stub(:resolve).with(:count).and_return(/\d+/)
34
+ step = Turnip::StepDefinition.new(":count monsters and :count knights") {}
35
+ match = step.match("3 monsters and 2 knights")
36
+ match.params.should eq(["3", "2"])
37
+ end
38
+
39
+ it "does search for the same custom placeholder several times" do
40
+ placeholder = Turnip::Placeholder.add(:count) { match(/\d/) { |count| count.to_i } }
41
+ Turnip::Placeholder.stub(:resolve).with(:count).and_return(/\d+/)
42
+ Turnip::Placeholder.should_receive(:find).with(:count).twice.and_return(placeholder)
43
+ step = Turnip::StepDefinition.new(":count monsters and :count knights") {}
44
+ match = step.match("3 monsters and 2 knights")
45
+ #match.params.should eq([3, 2])
46
+ end
47
+
48
+ it "does apply the same custom placeholder several times" do
49
+ placeholder = Turnip::Placeholder.add(:count) { match(/\d/) { |count| count.to_i } }
50
+ Turnip::Placeholder.stub(:resolve).with(:count).and_return(/\d+/)
51
+ placeholder.should_receive(:apply).twice
52
+ step = Turnip::StepDefinition.new(":count monsters and :count knights") {}
53
+ match = step.match("3 monsters and 2 knights")
54
+ end
55
+
64
56
  it "matches quoted placeholders" do
65
57
  step = Turnip::StepDefinition.new("there is a monster named :name") {}
66
58
  step.should match("there is a monster named 'Scary'")
67
59
  step.should match('there is a monster named "Hairy"')
68
60
  end
69
61
 
70
- it "matches backticked placeholders" do
71
- step = Turnip::StepDefinition.new("I run `:cmd`") {}
72
- step.should match("I run `echo foo`")
73
- step.should match(%q{I run `echo "foo 'bar' baz"`})
74
- end
75
-
76
62
  it "matches alternative words" do
77
63
  step = Turnip::StepDefinition.new("there is/are monsters") {}
78
64
  step.should match("there are monsters")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turnip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-17 00:00:00.000000000 Z
12
+ date: 2012-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &2153019360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: '2.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '2.0'
24
+ version_requirements: *2153019360
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: gherkin
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &2153018640 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ! '>='
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: '2.5'
38
33
  type: :runtime
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '2.5'
35
+ version_requirements: *2153018640
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: rake
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &2153018120 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ! '>='
@@ -53,12 +43,7 @@ dependencies:
53
43
  version: '0'
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
46
+ version_requirements: *2153018120
62
47
  description: Provides the ability to define steps and run Gherkin files from with
63
48
  RSpec
64
49
  email:
@@ -73,28 +58,27 @@ files:
73
58
  - Gemfile
74
59
  - README.md
75
60
  - Rakefile
76
- - examples/alignment_steps.rb
77
61
  - examples/ambiguous.feature
78
62
  - examples/autoload_steps.feature
79
- - examples/autoload_steps.rb
80
63
  - examples/backgrounds.feature
81
- - examples/backtick_steps.rb
82
- - examples/dragon_steps.rb
83
- - examples/evil_steps.rb
64
+ - examples/errors.feature
84
65
  - examples/interpolation.feature
85
- - examples/knight_steps.rb
86
- - examples/more_steps.rb
87
66
  - examples/multiline_string.feature
88
- - examples/neutral_steps.rb
89
67
  - examples/pending.feature
90
- - examples/red_dragon_steps.rb
91
68
  - examples/scenario_outline.feature
92
69
  - examples/simple_feature.feature
93
70
  - examples/step_calling.feature
94
- - examples/step_calling_steps.rb
95
- - examples/steps.rb
71
+ - examples/steps/alignment_steps.rb
72
+ - examples/steps/autoload_steps.rb
73
+ - examples/steps/backtick_steps.rb
74
+ - examples/steps/dragon_steps.rb
75
+ - examples/steps/knight_steps.rb
76
+ - examples/steps/more_steps.rb
77
+ - examples/steps/step_calling_steps.rb
78
+ - examples/steps/steps.rb
96
79
  - examples/steps_for.feature
97
80
  - examples/steps_for_super.feature
81
+ - examples/steps_with_variations.feature
98
82
  - examples/table.feature
99
83
  - examples/tags.feature
100
84
  - examples/with_backticks.feature
@@ -102,31 +86,21 @@ files:
102
86
  - lib/turnip.rb
103
87
  - lib/turnip/builder.rb
104
88
  - lib/turnip/capybara.rb
105
- - lib/turnip/config.rb
89
+ - lib/turnip/define.rb
106
90
  - lib/turnip/dsl.rb
107
- - lib/turnip/feature_file.rb
108
- - lib/turnip/loader.rb
91
+ - lib/turnip/execute.rb
109
92
  - lib/turnip/placeholder.rb
110
- - lib/turnip/runner_dsl.rb
111
- - lib/turnip/scenario_context.rb
112
- - lib/turnip/scenario_runner.rb
93
+ - lib/turnip/rspec.rb
113
94
  - lib/turnip/step_definition.rb
114
- - lib/turnip/step_loader.rb
115
- - lib/turnip/step_module.rb
116
95
  - lib/turnip/table.rb
117
96
  - lib/turnip/version.rb
118
97
  - spec/builder_spec.rb
98
+ - spec/define_and_execute.rb
119
99
  - spec/dsl_spec.rb
120
- - spec/feature_file_spec.rb
121
100
  - spec/integration_spec.rb
122
101
  - spec/placeholder_spec.rb
123
- - spec/runner_dsl_spec.rb
124
- - spec/scenario_context_spec.rb
125
- - spec/scenario_runner_spec.rb
126
102
  - spec/spec_helper.rb
127
103
  - spec/step_definition_spec.rb
128
- - spec/step_loader_spec.rb
129
- - spec/step_module_spec.rb
130
104
  - spec/table_spec.rb
131
105
  - turnip.gemspec
132
106
  homepage: ''
@@ -149,21 +123,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
123
  version: '0'
150
124
  requirements: []
151
125
  rubyforge_project: turnip
152
- rubygems_version: 1.8.22
126
+ rubygems_version: 1.8.16
153
127
  signing_key:
154
128
  specification_version: 3
155
129
  summary: Gherkin extension for RSpec
156
130
  test_files:
157
131
  - spec/builder_spec.rb
132
+ - spec/define_and_execute.rb
158
133
  - spec/dsl_spec.rb
159
- - spec/feature_file_spec.rb
160
134
  - spec/integration_spec.rb
161
135
  - spec/placeholder_spec.rb
162
- - spec/runner_dsl_spec.rb
163
- - spec/scenario_context_spec.rb
164
- - spec/scenario_runner_spec.rb
165
136
  - spec/spec_helper.rb
166
137
  - spec/step_definition_spec.rb
167
- - spec/step_loader_spec.rb
168
- - spec/step_module_spec.rb
169
138
  - spec/table_spec.rb
139
+ has_rdoc: