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 +4 -4
- data/.github/workflows/ci.yml +4 -5
- data/.ruby-version +1 -1
- data/.tool-versions +1 -0
- data/Gemfile +0 -1
- data/README.markdown +5 -7
- data/bin/spinach +1 -1
- data/features/feature_hooks_and_tags.feature +22 -0
- data/features/steps/automatic_feature_generation.rb +1 -1
- data/features/steps/feature_hooks_and_tags.rb +55 -0
- data/features/support/env.rb +0 -13
- data/lib/spinach/cli.rb +1 -1
- data/lib/spinach/runner.rb +4 -2
- data/lib/spinach/tags_matcher.rb +11 -2
- data/lib/spinach/version.rb +1 -1
- data/spinach.gemspec +1 -4
- data/test/spinach/cli_test.rb +5 -5
- data/test/spinach/dsl_test.rb +1 -1
- data/test/spinach/generators/feature_generator_test.rb +1 -1
- data/test/spinach/reporter_test.rb +2 -2
- data/test/spinach/runner_test.rb +24 -7
- data/test/test_helper.rb +0 -13
- metadata +11 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13ae199ec9413a41d2f1ea007433f4ca9acf8750811468e320927c55cc6ae80d
|
4
|
+
data.tar.gz: 37383a9a6e243a01d113cbe64139ce7119af7c571dcb12589846b8737115ac9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16007d35b6d52765c78a9e82e7f08e484d6d8f6ddc8ff4de765472ec11c7e236d6dd92de7cb5e89f8d8bda7ddc042fddbc2480ba92b00793784ca5d2d22c0e12
|
7
|
+
data.tar.gz: ff6aad6deac02d61cf3f932afacf62bedb0f16aaa07e415ea1a675c7ac79e815d030ebb86f039e4d726bd5481226f12326c9d9060d0c4f999c820e5226a1a118
|
data/.github/workflows/ci.yml
CHANGED
@@ -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@
|
23
|
+
- uses: actions/checkout@v3
|
24
24
|
with:
|
25
25
|
fetch-depth: 1
|
26
|
-
- uses: ruby/setup-ruby@
|
26
|
+
- uses: ruby/setup-ruby@v1
|
27
27
|
with:
|
28
28
|
ruby-version: ${{ matrix.ruby }}
|
29
|
-
|
30
|
-
name: Install Ruby deps
|
29
|
+
bundler-cache: true
|
31
30
|
- run: bundle exec rake
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
3.2.0
|
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 3.2.1
|
data/Gemfile
CHANGED
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
|
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
|
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
|
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
|
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-
|
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
@@ -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.
|
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
|
data/features/support/env.rb
CHANGED
@@ -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
data/lib/spinach/runner.rb
CHANGED
@@ -151,7 +151,7 @@ module Spinach
|
|
151
151
|
end
|
152
152
|
|
153
153
|
def features_to_run
|
154
|
-
unordered_features = filenames.
|
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)
|
data/lib/spinach/tags_matcher.rb
CHANGED
@@ -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
|
data/lib/spinach/version.rb
CHANGED
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 = ["
|
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"
|
data/test/spinach/cli_test.rb
CHANGED
@@ -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(:
|
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(:
|
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(:
|
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(:
|
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(:
|
340
|
+
File.stubs(:exist?).returns(true)
|
341
341
|
|
342
342
|
cli.feature_files.must_equal ['several features', 'some_feature.feature']
|
343
343
|
end
|
data/test/spinach/dsl_test.rb
CHANGED
@@ -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
|
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.
|
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
|
-
|
92
|
+
Spinach.hooks.run_around_scenario(anything) do |&block|
|
93
|
+
block.call
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
data/test/spinach/runner_test.rb
CHANGED
@@ -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
|
-
|
82
|
-
|
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
|
-
|
178
|
-
|
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.
|
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:
|
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.
|
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
|