spinach 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66296e07e2af7b9daa268623eb0e59ac1e90ee16855a3baf9eb63801be1338d2
4
- data.tar.gz: b2239f90a08a88a7b9c0ca93d16103b816249122c60176ea094405f8d1f8ebf8
3
+ metadata.gz: 13ae199ec9413a41d2f1ea007433f4ca9acf8750811468e320927c55cc6ae80d
4
+ data.tar.gz: 37383a9a6e243a01d113cbe64139ce7119af7c571dcb12589846b8737115ac9e
5
5
  SHA512:
6
- metadata.gz: 909a2ec0656f8991d9ab05a3a26864544da914475de5d8205ada4a20b3041c8cddb81d33319329252a440ec53e32852ff2daf0a0364fe9d87b2c1bff815725c4
7
- data.tar.gz: b08372a0eb16eb49f0ca4972f8a412307ea9cd0eba8eab48c848ff849700bad2dc79444f6eb73d3830ed67941c0ce3efa44803658aa71da453a10fa00fa114c1
6
+ metadata.gz: 16007d35b6d52765c78a9e82e7f08e484d6d8f6ddc8ff4de765472ec11c7e236d6dd92de7cb5e89f8d8bda7ddc042fddbc2480ba92b00793784ca5d2d22c0e12
7
+ data.tar.gz: ff6aad6deac02d61cf3f932afacf62bedb0f16aaa07e415ea1a675c7ac79e815d030ebb86f039e4d726bd5481226f12326c9d9060d0c4f999c820e5226a1a118
@@ -17,15 +17,14 @@ jobs:
17
17
  runs-on: ubuntu-latest
18
18
  strategy:
19
19
  matrix:
20
- ruby: [2.4, 2.5, 2.6, 2.7, jruby]
20
+ ruby: [2.4, 2.5, 2.6, 2.7, "3.0", 3.1, 3.2, jruby]
21
21
  fail-fast: false
22
22
  steps:
23
- - uses: actions/checkout@v2.0.0
23
+ - uses: actions/checkout@v3
24
24
  with:
25
25
  fetch-depth: 1
26
- - uses: ruby/setup-ruby@master
26
+ - uses: ruby/setup-ruby@v1
27
27
  with:
28
28
  ruby-version: ${{ matrix.ruby }}
29
- - run: bundle install --jobs 4 --retry 3
30
- name: Install Ruby deps
29
+ bundler-cache: true
31
30
  - run: bundle exec rake
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.1
1
+ 3.2.0
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.2.1
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'http://rubygems.org'
3
3
  # Specify your gem's dependencies in spinach.gemspec
4
4
  gemspec
5
5
 
6
- gem 'coveralls', require: false
7
6
  gem 'pry-byebug', platforms: [:ruby]
8
7
 
9
8
  group :docs do
data/README.markdown CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/spinach.svg)](https://badge.fury.io/rb/spinach)
4
4
  ![Tests](https://github.com/codegram/spinach/workflows/Tests/badge.svg)
5
- [![Coverage Status](https://coveralls.io/repos/codegram/spinach/badge.png?branch=master)](https://coveralls.io/r/codegram/spinach)
6
- ![](https://ruby-gem-downloads-badge.herokuapp.com/rails)
7
5
 
8
6
  Spinach is a high-level BDD framework that leverages the expressive
9
7
  [Gherkin language][gherkin] (used by [Cucumber][cucumber]) to help you define
@@ -17,7 +15,7 @@ Conceived as an alternative to Cucumber, here are some of its design goals:
17
15
  - Step reusability: In case you want to reuse steps across features, you can
18
16
  always wrap those in plain ol' Ruby modules.
19
17
 
20
- Spinach is tested against Ruby MRI **2.4, 2.5, 2.6 and 2.7** as well as **latest JRuby 9000**.
18
+ Spinach is tested against Ruby MRI **2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2** as well as **JRuby **.
21
19
 
22
20
  ## Getting started
23
21
 
@@ -238,19 +236,19 @@ Feature: So something great
238
236
  Scenario: Ensure no regression on this
239
237
  ```
240
238
 
241
- Then you can run all Scenarios in your suite related to `@feat-1` using:
239
+ Then you can run all Scenarios in your suite tagged `@feat-1` using:
242
240
 
243
241
  ```shell
244
242
  $ spinach --tags @feat-1
245
243
  ```
246
244
 
247
- Or only Scenarios related to `@feat-1` and `@bug-12` using:
245
+ Or only Scenarios tagged either `@feat-1` or `@bug-12` using:
248
246
 
249
247
  ```shell
250
248
  $ spinach --tags @feat-1,@bug-12
251
249
  ```
252
250
 
253
- Or only Scenarios related to `@feat-1` excluding `@bug-12` using:
251
+ Or only Scenarios tagged `@feat-1` that aren't tagged `@bug-12` using:
254
252
 
255
253
  ```shell
256
254
  $ spinach --tags @feat-1,~@bug-12
@@ -380,7 +378,7 @@ You can easily contribute to Spinach. Its codebase is simple and
380
378
 
381
379
  ## License
382
380
 
383
- MIT (Expat) License. Copyright 2011-2016 [Codegram Technologies](http://codegram.com)
381
+ MIT (Expat) License. Copyright 2011-2023 [Codegram Technologies](http://codegram.com)
384
382
 
385
383
  [gherkin]: http://github.com/codegram/gherkin-ruby
386
384
  [cucumber]: http://github.com/cucumber/cucumber
data/bin/spinach CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  begin
4
- require "bundler/setup"
4
+ require "bundler/setup"
5
5
  rescue LoadError
6
6
  end
7
7
 
@@ -0,0 +1,22 @@
1
+ Feature: Feature Hooks and Tags
2
+ In order to run only the appropriate setup and teardown code
3
+ As a developer
4
+ I want spinach to only run feature hooks if those features would be run under the tags I provided
5
+
6
+ Scenario: No tags specified
7
+ Given I have a tagged feature with an untagged scenario
8
+ And I have an untagged feature with a tagged scenario
9
+ When I don't specify tags
10
+ Then all the feature hooks should have run
11
+
12
+ Scenario: Tags specified
13
+ Given I have a tagged feature with an untagged scenario
14
+ And I have an untagged feature with a tagged scenario
15
+ When I specify a tag the features and scenarios are tagged with
16
+ Then all the feature hooks should have run
17
+
18
+ Scenario: Tags excluded
19
+ Given I have a tagged feature with an untagged scenario
20
+ And I have an untagged feature with a tagged scenario
21
+ When I exclude a tag the features and scenarios are tagged with
22
+ Then no feature hooks should have run
@@ -20,7 +20,7 @@ Feature: Cheezburger can I has
20
20
  Then 'I a feature should exist named "features/steps/cheezburger_can_i_has.rb"' do
21
21
  in_current_dir do
22
22
  @file = 'features/steps/cheezburger_can_i_has.rb'
23
- File.exists?(@file).must_equal true
23
+ File.exist?(@file).must_equal true
24
24
  end
25
25
  end
26
26
 
@@ -0,0 +1,55 @@
1
+ class Spinach::Features::FeatureHooksAndTags < Spinach::FeatureSteps
2
+ include Integration::SpinachRunner
3
+
4
+ step 'I have a tagged feature with an untagged scenario' do
5
+ write_file 'features/a.feature', <<-FEATURE
6
+ @tag
7
+ Feature: A
8
+ Scenario: A1
9
+ Then a1
10
+ FEATURE
11
+
12
+ write_file 'features/steps/a.rb', <<-STEPS
13
+ class Spinach::Features::A < Spinach::FeatureSteps
14
+ step 'a1' do; end
15
+ end
16
+ STEPS
17
+ end
18
+
19
+ step 'I have an untagged feature with a tagged scenario' do
20
+ write_file 'features/b.feature', <<-FEATURE
21
+ Feature: B
22
+ @tag
23
+ Scenario: B1
24
+ Then b1
25
+ FEATURE
26
+
27
+ write_file 'features/steps/b.rb', <<-STEPS
28
+ class Spinach::Features::B < Spinach::FeatureSteps
29
+ step 'b1' do; end
30
+ end
31
+ STEPS
32
+ end
33
+
34
+ step "I don't specify tags" do
35
+ run_spinach
36
+ end
37
+
38
+ step 'I specify a tag the features and scenarios are tagged with' do
39
+ run_spinach({append: "--tags @tag"})
40
+ end
41
+
42
+ step 'I exclude a tag the features and scenarios are tagged with' do
43
+ run_spinach({append: "--tags ~@tag"})
44
+ end
45
+
46
+ step 'all the feature hooks should have run' do
47
+ @stdout.must_match("Feature: A")
48
+ @stdout.must_match("Feature: B")
49
+ end
50
+
51
+ step 'no feature hooks should have run' do
52
+ @stdout.wont_match("Feature: A")
53
+ @stdout.wont_match("Feature: B")
54
+ end
55
+ end
@@ -1,19 +1,6 @@
1
1
  require 'minitest/autorun'
2
2
  require 'minitest/spec'
3
3
  require_relative 'filesystem'
4
- require 'simplecov'
5
-
6
- if ENV['CI'] && !defined?(Rubinius)
7
- require 'coveralls'
8
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
9
- require 'simplecov'
10
-
11
- SimpleCov.start do
12
- add_filter '/test/'
13
- add_filter '/features/'
14
- end
15
- end
16
-
17
4
 
18
5
  Spinach.hooks.after_scenario do |scenario|
19
6
  FileUtils.rm_rf(Filesystem.dirs)
data/lib/spinach/cli.rb CHANGED
@@ -56,7 +56,7 @@ module Spinach
56
56
 
57
57
  @args.each do |arg|
58
58
  if arg.match(/\.feature/)
59
- if File.exists? arg.gsub(/:\d*/, '')
59
+ if File.exist? arg.gsub(/:\d*/, '')
60
60
  files_to_run << arg
61
61
  else
62
62
  fail! "#{arg} could not be found"
@@ -151,7 +151,7 @@ module Spinach
151
151
  end
152
152
 
153
153
  def features_to_run
154
- unordered_features = filenames.map do |filename|
154
+ unordered_features = filenames.reduce([]) do |features, filename|
155
155
  file, *lines = filename.split(":") # little more complex than just a "filename"
156
156
 
157
157
  # FIXME Feature should be instantiated directly, not through an unrelated class method
@@ -160,7 +160,9 @@ module Spinach
160
160
 
161
161
  feature.lines_to_run = lines if lines.any?
162
162
 
163
- feature
163
+ features << feature if TagsMatcher.match_feature(feature)
164
+
165
+ features
164
166
  end
165
167
 
166
168
  orderer.order(unordered_features)
@@ -6,9 +6,9 @@ module Spinach
6
6
  class << self
7
7
 
8
8
  # Matches an array of tags (e.g. of a scenario) against the tags present
9
- # in Spinach' runtime options.
9
+ # in Spinach's runtime options.
10
10
  #
11
- # Spinach' tag option is an array which consists of (possibly) multiple
11
+ # Spinach's tag option is an array which consists of (possibly) multiple
12
12
  # arrays containing tags provided by the user running the features and
13
13
  # scenarios. Each of these arrays is considered a tag group.
14
14
  #
@@ -23,6 +23,15 @@ module Spinach
23
23
  }
24
24
  end
25
25
 
26
+ # Matches the tags of a feature (and its scenarios) against the tags present
27
+ # in Spinach's runtime options.
28
+ #
29
+ # A feature matches when, for any of its scenarios, the combination of the
30
+ # feature's tags and that scenario's tags match the configured tags.
31
+ def match_feature(feature)
32
+ feature.scenarios.any? { |scenario| match(feature.tags + scenario.tags) }
33
+ end
34
+
26
35
  private
27
36
 
28
37
  def tag_groups
@@ -1,4 +1,4 @@
1
1
  module Spinach
2
2
  # Spinach version.
3
- VERSION = "0.11.0"
3
+ VERSION = "0.12.0"
4
4
  end
data/spinach.gemspec CHANGED
@@ -3,8 +3,7 @@ require File.expand_path('../lib/spinach/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Josep Jaume Rey", "Josep M. Bach", "Oriol Gual", "Marc Divins Castellvi"]
6
- gem.email = ["info@codegram.com", "josep.m.bach@gmail.com",
7
- "oriolgual@gmail.com", "josepjaume@gmail.com", "marcdivc@gmail.com"]
6
+ gem.email = ["josep.m.bach@gmail.com", "oriolgual@gmail.com", "josepjaume@gmail.com", "marcdivc@gmail.com"]
8
7
  gem.description = %q{Spinach is a BDD framework on top of gherkin}
9
8
  gem.summary = %q{Spinach is a BDD framework on top of gherkin}
10
9
  gem.homepage = "http://github.com/codegram/spinach"
@@ -12,13 +11,11 @@ Gem::Specification.new do |gem|
12
11
 
13
12
  gem.add_runtime_dependency 'gherkin-ruby', '>= 0.3.2'
14
13
  gem.add_runtime_dependency 'colorize'
15
- gem.add_runtime_dependency 'json'
16
14
  gem.add_development_dependency 'rake'
17
15
  gem.add_development_dependency 'mocha', "~> 1.5.0"
18
16
  gem.add_development_dependency 'sinatra'
19
17
  gem.add_development_dependency 'capybara'
20
18
  gem.add_development_dependency 'pry'
21
- gem.add_development_dependency 'simplecov'
22
19
  gem.add_development_dependency 'rspec'
23
20
  gem.add_development_dependency 'minitest', '< 5.0'
24
21
  gem.add_development_dependency 'fakefs', ">= 0.5.2"
@@ -276,14 +276,14 @@ tags:
276
276
  describe 'the feature really exists' do
277
277
  it 'runs the feature' do
278
278
  cli = Spinach::Cli.new(['features/some_feature.feature'])
279
- File.stubs(:exists?).returns(true)
279
+ File.stubs(:exist?).returns(true)
280
280
  cli.feature_files.must_equal ['features/some_feature.feature']
281
281
  end
282
282
  end
283
283
 
284
284
  it 'it fails if the feature does not exist' do
285
285
  cli = Spinach::Cli.new(['features/some_feature.feature'])
286
- File.stubs(:exists?).returns(false)
286
+ File.stubs(:exist?).returns(false)
287
287
  cli.expects(:fail!).with('features/some_feature.feature could not be found')
288
288
 
289
289
  cli.feature_files
@@ -293,7 +293,7 @@ tags:
293
293
  describe 'when a particular feature list is passed with line' do
294
294
  it 'returns the feature with the line number' do
295
295
  cli = Spinach::Cli.new(['features/some_feature.feature:10'])
296
- File.stubs(:exists?).returns(true)
296
+ File.stubs(:exist?).returns(true)
297
297
 
298
298
  cli.feature_files.must_equal ['features/some_feature.feature:10']
299
299
  end
@@ -302,7 +302,7 @@ tags:
302
302
  describe "when a particular feature list is passed with multiple lines" do
303
303
  it "returns the feature with the line numbers" do
304
304
  cli = Spinach::Cli.new(['features/some_feature.feature:10:20'])
305
- File.stubs(:exists?).returns(true)
305
+ File.stubs(:exist?).returns(true)
306
306
 
307
307
  cli.feature_files.must_equal ["features/some_feature.feature:10:20"]
308
308
  end
@@ -337,7 +337,7 @@ tags:
337
337
  Dir.expects(:glob).with('path/to/features/**/*.feature')
338
338
  .returns(['several features'])
339
339
 
340
- File.stubs(:exists?).returns(true)
340
+ File.stubs(:exist?).returns(true)
341
341
 
342
342
  cli.feature_files.must_equal ['several features', 'some_feature.feature']
343
343
  end
@@ -157,7 +157,7 @@ describe Spinach::DSL do
157
157
  end
158
158
 
159
159
  @feature.new.step_location_for('I say goodbye').first.must_include '/dsl_test.rb'
160
- @feature.new.step_location_for('I say goodbye').last.must_be_kind_of Fixnum
160
+ @feature.new.step_location_for('I say goodbye').last.must_be_kind_of Integer
161
161
  end
162
162
  end
163
163
  end
@@ -71,7 +71,7 @@ Feature: Cheezburger can I has
71
71
  in_current_dir do
72
72
  subject.store
73
73
  File.directory?("features/steps/").must_equal true
74
- File.exists?("features/steps/cheezburger_can_i_has.rb").must_equal true
74
+ File.exist?("features/steps/cheezburger_can_i_has.rb").must_equal true
75
75
  File.read("features/steps/cheezburger_can_i_has.rb").strip.must_equal(
76
76
  subject.generate.strip
77
77
  )
@@ -89,8 +89,8 @@ module Spinach
89
89
 
90
90
  it "binds a callback around every scenario" do
91
91
  @reporter.expects(:around_scenario_run)
92
- Spinach.hooks.run_around_scenario(anything) do
93
- yield
92
+ Spinach.hooks.run_around_scenario(anything) do |&block|
93
+ block.call
94
94
  end
95
95
  end
96
96
 
@@ -77,15 +77,21 @@ describe Spinach::Runner do
77
77
  describe '#run' do
78
78
  before(:each) do
79
79
  @feature_runner = stub
80
+ @feature_runner.stubs(:run).returns(true)
81
+
80
82
  filenames.each do |filename|
81
- Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub
82
- parser.stubs(:parse).returns feature = Spinach::Feature.new
83
+ parser = stub
84
+ Spinach::Parser.stubs(:open_file).with(filename).returns(parser)
85
+
86
+ feature = Spinach::Feature.new
87
+ feature.scenarios << Spinach::Scenario.new(feature)
88
+ parser.stubs(:parse).returns(feature)
89
+
83
90
  Spinach::Runner::FeatureRunner.stubs(:new).
84
91
  with(feature, anything).
85
92
  returns(@feature_runner)
86
93
  end
87
94
 
88
- @feature_runner.stubs(:run).returns(true)
89
95
  runner.stubs(required_files: [])
90
96
  end
91
97
 
@@ -133,12 +139,18 @@ describe Spinach::Runner do
133
139
  let(:runner) { Spinach::Runner.new(filenames) }
134
140
 
135
141
  before(:each) do
142
+ parser = stub
143
+ Spinach::Parser.stubs(:open_file).with(filename).returns(parser)
144
+
145
+ @feature = Spinach::Feature.new
146
+ @feature.scenarios << Spinach::Scenario.new(@feature)
147
+ parser.stubs(:parse).returns(@feature)
148
+
136
149
  @feature_runner = stub
137
- Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub
138
- parser.stubs(:parse).returns @feature = Spinach::Feature.new
139
150
  Spinach::Runner::FeatureRunner.stubs(:new).
140
151
  with(@feature, anything).
141
152
  returns(@feature_runner)
153
+
142
154
  runner.stubs(required_files: [])
143
155
  end
144
156
 
@@ -174,8 +186,13 @@ describe Spinach::Runner do
174
186
 
175
187
  before(:each) do
176
188
  filenames.each_with_index do |filename, i|
177
- Spinach::Parser.stubs(:open_file).with(filename).returns parser = stub
178
- parser.stubs(:parse).returns feature = Spinach::Feature.new
189
+ parser = stub
190
+ Spinach::Parser.stubs(:open_file).with(filename).returns(parser)
191
+
192
+ feature = Spinach::Feature.new
193
+ feature.scenarios << Spinach::Scenario.new(feature)
194
+ parser.stubs(:parse).returns(feature)
195
+
179
196
  Spinach::Runner::FeatureRunner.stubs(:new).
180
197
  with(feature, anything).
181
198
  returns(feature_runners[i])
data/test/test_helper.rb CHANGED
@@ -1,16 +1,3 @@
1
- require 'simplecov'
2
- require 'coveralls'
3
-
4
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
5
- if ENV['CI'] && !defined?(Rubinius)
6
- require 'simplecov'
7
-
8
- SimpleCov.start do
9
- add_filter '/test/'
10
- add_filter '/features/'
11
- end
12
- end
13
-
14
1
  require 'minitest/autorun'
15
2
  require 'minitest/spec'
16
3
  require 'mocha/minitest'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spinach
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey
8
8
  - Josep M. Bach
9
9
  - Oriol Gual
10
10
  - Marc Divins Castellvi
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-04-20 00:00:00.000000000 Z
14
+ date: 2023-02-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: gherkin-ruby
@@ -41,20 +41,6 @@ dependencies:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
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'
58
44
  - !ruby/object:Gem::Dependency
59
45
  name: rake
60
46
  requirement: !ruby/object:Gem::Requirement
@@ -125,20 +111,6 @@ dependencies:
125
111
  - - ">="
126
112
  - !ruby/object:Gem::Version
127
113
  version: '0'
128
- - !ruby/object:Gem::Dependency
129
- name: simplecov
130
- requirement: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- version: '0'
135
- type: :development
136
- prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
114
  - !ruby/object:Gem::Dependency
143
115
  name: rspec
144
116
  requirement: !ruby/object:Gem::Requirement
@@ -183,7 +155,6 @@ dependencies:
183
155
  version: 0.5.2
184
156
  description: Spinach is a BDD framework on top of gherkin
185
157
  email:
186
- - info@codegram.com
187
158
  - josep.m.bach@gmail.com
188
159
  - oriolgual@gmail.com
189
160
  - josepjaume@gmail.com
@@ -198,6 +169,7 @@ files:
198
169
  - ".gitignore"
199
170
  - ".ruby-gemset"
200
171
  - ".ruby-version"
172
+ - ".tool-versions"
201
173
  - CHANGELOG.md
202
174
  - Gemfile
203
175
  - Guardfile
@@ -211,6 +183,7 @@ files:
211
183
  - features/before_and_after_hooks_inheritance.feature
212
184
  - features/exit_status.feature
213
185
  - features/fail_fast.feature
186
+ - features/feature_hooks_and_tags.feature
214
187
  - features/feature_name_guessing.feature
215
188
  - features/pending_steps.feature
216
189
  - features/randomization.feature
@@ -229,6 +202,7 @@ files:
229
202
  - features/steps/before_and_after_hooks_inheritance.rb
230
203
  - features/steps/exit_status.rb
231
204
  - features/steps/fail_fast_option.rb
205
+ - features/steps/feature_hooks_and_tags.rb
232
206
  - features/steps/feature_name_guessing.rb
233
207
  - features/steps/pending_steps.rb
234
208
  - features/steps/randomizing_features_scenarios.rb
@@ -321,7 +295,7 @@ homepage: http://github.com/codegram/spinach
321
295
  licenses:
322
296
  - MIT
323
297
  metadata: {}
324
- post_install_message:
298
+ post_install_message:
325
299
  rdoc_options: []
326
300
  require_paths:
327
301
  - lib
@@ -336,8 +310,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
310
  - !ruby/object:Gem::Version
337
311
  version: '0'
338
312
  requirements: []
339
- rubygems_version: 3.0.3
340
- signing_key:
313
+ rubygems_version: 3.4.6
314
+ signing_key:
341
315
  specification_version: 4
342
316
  summary: Spinach is a BDD framework on top of gherkin
343
317
  test_files:
@@ -347,6 +321,7 @@ test_files:
347
321
  - features/before_and_after_hooks_inheritance.feature
348
322
  - features/exit_status.feature
349
323
  - features/fail_fast.feature
324
+ - features/feature_hooks_and_tags.feature
350
325
  - features/feature_name_guessing.feature
351
326
  - features/pending_steps.feature
352
327
  - features/randomization.feature
@@ -365,6 +340,7 @@ test_files:
365
340
  - features/steps/before_and_after_hooks_inheritance.rb
366
341
  - features/steps/exit_status.rb
367
342
  - features/steps/fail_fast_option.rb
343
+ - features/steps/feature_hooks_and_tags.rb
368
344
  - features/steps/feature_name_guessing.rb
369
345
  - features/steps/pending_steps.rb
370
346
  - features/steps/randomizing_features_scenarios.rb