cucumber_tricks 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.travis.yml +6 -0
- data/Guardfile +6 -0
- data/README.md +94 -2
- data/Rakefile +7 -0
- data/cucumber_tricks.gemspec +3 -0
- data/features/either.feature +85 -0
- data/features/pronouns.feature +67 -0
- data/features/step_definitions/steps.rb +15 -0
- data/features/support/hooks.rb +3 -0
- data/features/tables.feature +115 -0
- data/lib/cucumber_tricks/dsl_extensions.rb +15 -9
- data/lib/cucumber_tricks/table_extensions.rb +13 -0
- data/lib/cucumber_tricks/version.rb +1 -1
- data/push.sh +4 -0
- metadata +91 -43
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YjBiNWM0M2Y1YjFhOWM1MmVjZDAwODQxMzM5OWZkZjU3NzhlZTkyNWNlYWFm
|
10
|
-
OGU2OTI1MTcwNzJkYjgwMjU0ZTkzNTY1MGZiM2ZhNTg2NmNiNjgzOGU5YmUz
|
11
|
-
ZGNiMDc1MjlhZjc5NzcwMDgyYWM1YjBjOTNjYjg1NTI1ZGJmMzE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzI4NmRlYmVlY2RiMjEyNzBiOTY3MTg3NDhlMjMyODY2ODhkMTcwYzEzYjVm
|
14
|
-
OWFmNjhiYzE3Mjg2MjVlZWRlMDBlMWE1M2NlNzQ1MDY1MzM2ZWY2MDk1YTRm
|
15
|
-
YTA0OTI3M2M4NGIzZDg2OWJkNzYxYjM2ODliMWFiN2Q2NDk5YTA=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1ac6c24b722d27946f99e5eb1db8ae12ae948aa2
|
4
|
+
data.tar.gz: f1136506115f98af5b5af81c2a3a4976f02ebede
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c99f129e4c8c841bfad792fcfd4e6a8c9d411495903e18ec3b7070ab9c88ad4be47925c592cf9605c2b29593a8936b67b4fd8428f5a2eef0b12cd2e9d4ac39c7
|
7
|
+
data.tar.gz: aa02a1381309c547c5198c42deb6c500c8c7ce324075031b9fd1a24a77507b7ad3cb7edce0f8bf8ec4b1ecf2d614902063bc491af4a0650eba8fdf65e0b88a28
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.travis.yml
ADDED
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Cucumber step definition dsl extension to easily define more readable steps.
|
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'cucumber_tricks'
|
9
|
+
gem 'cucumber_tricks', :require => false
|
10
10
|
|
11
11
|
And then execute:
|
12
12
|
|
@@ -18,7 +18,99 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
Detailed usage examples can be found on [relish](https://www.relishapp.com/philou/cucumber-tricks/docs)
|
22
|
+
|
23
|
+
### Requiring the files
|
24
|
+
|
25
|
+
Add `require 'cucumber_tricks' from every steps definition file where you use
|
26
|
+
it. This will make cucumber work in normal mode as well as in dry-run mode.
|
27
|
+
|
28
|
+
### Use pronouns to reference previously introduced items
|
29
|
+
|
30
|
+
foo.feature
|
31
|
+
|
32
|
+
```gherkin
|
33
|
+
Given the tool 'screwdriver'
|
34
|
+
When this tool is used
|
35
|
+
```
|
36
|
+
|
37
|
+
steps.rb
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
A_TOOL = NameOrPronounTransform('tool', 'hammer')
|
41
|
+
|
42
|
+
Given /^(#{A_TOOL})$/ do |tool|
|
43
|
+
...
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
### Use the same step implementation to handle an inline arg as a 1-cell table
|
48
|
+
|
49
|
+
steps.rb
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
GivenEither /^the dog named "(.*)"$)$/,
|
53
|
+
/^the following dogs$/ do |dogs_table|
|
54
|
+
...
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
foo.feature
|
59
|
+
|
60
|
+
```gherkin
|
61
|
+
Given the dog "Rolphy"
|
62
|
+
...
|
63
|
+
Given the following dogs
|
64
|
+
| Rex |
|
65
|
+
| King |
|
66
|
+
| Volt |
|
67
|
+
```
|
68
|
+
|
69
|
+
### Add default values to the hashes of a table
|
70
|
+
|
71
|
+
foo.feature
|
72
|
+
|
73
|
+
```gherkin
|
74
|
+
Given the following dogs
|
75
|
+
| names | color |
|
76
|
+
| Rex | white |
|
77
|
+
| King | Sand |
|
78
|
+
```
|
79
|
+
|
80
|
+
steps.rb
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
Given /^the following dogs$$/ do |dogs|
|
84
|
+
hashes = dogs.hashes_with_defaults('names', 'tail' => 'wagging', 'smell' => 'not nice')
|
85
|
+
|
86
|
+
# hashes.each do |hash|
|
87
|
+
# expect(hash['smell']).to eq('not nice')
|
88
|
+
# end
|
89
|
+
|
90
|
+
...
|
91
|
+
end
|
92
|
+
```
|
93
|
+
|
94
|
+
### Define named lists from a table
|
95
|
+
|
96
|
+
foo.feature
|
97
|
+
|
98
|
+
```gherkin
|
99
|
+
Given the following dishes
|
100
|
+
| Spaghetti Bolognaise | => | Spaghetti | Bolognaise sauce | | |
|
101
|
+
| Burger | => | Bread | Meat | Salad | Ketchup |
|
102
|
+
```
|
103
|
+
|
104
|
+
steps.rb
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
Given /^the following dishes$$/ do |dishes|
|
108
|
+
name_2_dishes = dishes.hash_2_lists
|
109
|
+
|
110
|
+
# expect(name_2_dishes['Burger']).to eq(['Bread','Meat','Salad','Ketchup'])
|
111
|
+
|
112
|
+
...
|
113
|
+
end
|
22
114
|
|
23
115
|
## Contributing
|
24
116
|
|
data/Rakefile
CHANGED
data/cucumber_tricks.gemspec
CHANGED
@@ -22,4 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler"
|
24
24
|
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "guard-cucumber"
|
26
|
+
spec.add_development_dependency "rspec"
|
27
|
+
spec.add_development_dependency "relish"
|
25
28
|
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
Feature: Either
|
2
|
+
|
3
|
+
As a developper tester
|
4
|
+
In order to factorize code and support english readable steps
|
5
|
+
I want a one liner to define a step that can take either a 1-cell table or a string
|
6
|
+
|
7
|
+
Background: Step defintions
|
8
|
+
|
9
|
+
Given a file named "features/step_definitions/steps.rb" with
|
10
|
+
"""
|
11
|
+
require 'cucumber_tricks'
|
12
|
+
|
13
|
+
GivenEither /^the dish with "(.*)"$/,
|
14
|
+
/^the dish with the following ingredients$/ do |ingredients|
|
15
|
+
@ingredients = ingredients
|
16
|
+
end
|
17
|
+
|
18
|
+
Then /^the dish should contain$/ do |ingredients|
|
19
|
+
expect(@ingredients.raw).to eq(ingredients.raw)
|
20
|
+
end
|
21
|
+
|
22
|
+
"""
|
23
|
+
|
24
|
+
Scenario: The inline step definition
|
25
|
+
|
26
|
+
The inline regex transforms it's argument to a 1-cell raw table
|
27
|
+
|
28
|
+
Given a file named "features/foo.feature" with
|
29
|
+
"""
|
30
|
+
Feature:
|
31
|
+
Scenario:
|
32
|
+
Given the dish with "peanuts"
|
33
|
+
Then the dish should contain
|
34
|
+
| peanuts |
|
35
|
+
"""
|
36
|
+
When I run cucumber "features/foo.feature"
|
37
|
+
Then it should pass
|
38
|
+
|
39
|
+
Scenario: The table step definition
|
40
|
+
|
41
|
+
The table step definition is as any table step definitions.
|
42
|
+
|
43
|
+
Given a file named "features/foo.feature" with
|
44
|
+
"""
|
45
|
+
Feature:
|
46
|
+
Scenario:
|
47
|
+
Given the dish with the following ingredients
|
48
|
+
| pasta |
|
49
|
+
| tomatoes |
|
50
|
+
Then the dish should contain
|
51
|
+
| pasta |
|
52
|
+
| tomatoes |
|
53
|
+
"""
|
54
|
+
When I run cucumber "features/foo.feature"
|
55
|
+
Then it should pass
|
56
|
+
|
57
|
+
Scenario: With When and Then
|
58
|
+
|
59
|
+
This also works for 'When' and 'Then'
|
60
|
+
|
61
|
+
Given a file named "features/step_definitions/steps.rb" with
|
62
|
+
"""
|
63
|
+
require 'cucumber_tricks'
|
64
|
+
|
65
|
+
WhenEither /^the dish contains "(.*)"$/,
|
66
|
+
/^the dish contains the following ingredients$/ do |ingredients|
|
67
|
+
@ingredients = ingredients
|
68
|
+
end
|
69
|
+
|
70
|
+
ThenEither /^the dish should contain "(.*)"$/,
|
71
|
+
/^the dish should contain$/ do |ingredients|
|
72
|
+
expect(@ingredients.raw).to eq(ingredients.raw)
|
73
|
+
end
|
74
|
+
|
75
|
+
"""
|
76
|
+
And a file named "features/foo.feature" with
|
77
|
+
"""
|
78
|
+
Feature:
|
79
|
+
Scenario:
|
80
|
+
When the dish contains "peanuts"
|
81
|
+
Then the dish should contain
|
82
|
+
| peanuts |
|
83
|
+
"""
|
84
|
+
When I run cucumber "features/foo.feature"
|
85
|
+
Then it should pass
|
@@ -0,0 +1,67 @@
|
|
1
|
+
Feature: Pronouns
|
2
|
+
|
3
|
+
As a developper tester
|
4
|
+
In order to factorize code and support english readable steps
|
5
|
+
I want a special textual transform that can be referenced with a pronoun
|
6
|
+
|
7
|
+
Special NameOrPronounTransform creates special transform that can have a default
|
8
|
+
value.
|
9
|
+
|
10
|
+
Background: Step definitions
|
11
|
+
|
12
|
+
Given a file named "features/step_definitions/steps.rb" with
|
13
|
+
"""
|
14
|
+
require 'cucumber_tricks'
|
15
|
+
|
16
|
+
A_TOOL = NameOrPronounTransform('tool','hammer')
|
17
|
+
|
18
|
+
Given /^(#{A_TOOL})$/ do |tool|
|
19
|
+
end
|
20
|
+
|
21
|
+
Then /^(#{A_TOOL}) should be a "(.*)"$/ do |tool, expected|
|
22
|
+
expect(tool).to eq(expected)
|
23
|
+
end
|
24
|
+
"""
|
25
|
+
|
26
|
+
Scenario Outline: Referencing a previously declared thing
|
27
|
+
|
28
|
+
After the first usage of the transform in the scenario, later steps can
|
29
|
+
then use it without repeating its name.
|
30
|
+
|
31
|
+
For readability reason, it is possible to reference this value using many
|
32
|
+
different pronouns.
|
33
|
+
|
34
|
+
Given a file named "features/foo.feature" with
|
35
|
+
"""
|
36
|
+
Feature:
|
37
|
+
Scenario:
|
38
|
+
Given the tool "screwdriver"
|
39
|
+
Then <this> tool should be a "screwdriver"
|
40
|
+
"""
|
41
|
+
|
42
|
+
When I run cucumber "features/foo.feature"
|
43
|
+
Then it should pass
|
44
|
+
|
45
|
+
Examples:
|
46
|
+
| this |
|
47
|
+
| this |
|
48
|
+
| a |
|
49
|
+
| an |
|
50
|
+
| the |
|
51
|
+
| of |
|
52
|
+
|
53
|
+
Scenario: Default value for a thing
|
54
|
+
|
55
|
+
If no value is specified at the first usage of a transform in a scenario
|
56
|
+
it automaticaly gets the value specified in the transform definition.
|
57
|
+
|
58
|
+
Given a file named "features/foo.feature" with
|
59
|
+
"""
|
60
|
+
Feature:
|
61
|
+
Scenario:
|
62
|
+
Then the tool should be a "hammer"
|
63
|
+
"""
|
64
|
+
|
65
|
+
When I run cucumber "features/foo.feature"
|
66
|
+
Then it should pass
|
67
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
Given(/^a file named "(.*?)" with$/) do |file_path, content|
|
4
|
+
full_path = File.join('tmp', file_path)
|
5
|
+
FileUtils.makedirs(File.dirname(full_path))
|
6
|
+
IO.write(full_path, content)
|
7
|
+
end
|
8
|
+
|
9
|
+
When(/^I run cucumber "(.*?)"$/) do |args|
|
10
|
+
@cucumber_success = system("cucumber tmp/#{args}")
|
11
|
+
end
|
12
|
+
|
13
|
+
Then(/^it should pass$/) do
|
14
|
+
expect(@cucumber_success).to be(true), "cucumber sub process failed"
|
15
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
Feature: Special tables
|
2
|
+
|
3
|
+
As a feature writer
|
4
|
+
In order to have more readable scenarios
|
5
|
+
I want to be able to use different forms of data tables
|
6
|
+
|
7
|
+
Scenario: Hashes with extra values
|
8
|
+
|
9
|
+
It is possible to simply extend all hashes from a scenario table with
|
10
|
+
default values. As scenario given values override the default, it is
|
11
|
+
possible to specify more or less columns in different scenarios, while
|
12
|
+
using the same step defintion.
|
13
|
+
|
14
|
+
Given a file named "features/step_definitions/steps.rb" with
|
15
|
+
"""
|
16
|
+
require 'cucumber_tricks'
|
17
|
+
|
18
|
+
Given(/^the fishes$/) do |table|
|
19
|
+
@hashes = table.hashes_with_defaults('name', 'size' => 'normal')
|
20
|
+
end
|
21
|
+
|
22
|
+
Then(/^(.*) should be (.*) and have a (.*) size$/) do |name, color, size|
|
23
|
+
@hashes.select { |fish| fish['name'] == name }.each do |fish|
|
24
|
+
expect(fish['color']).to eq(color)
|
25
|
+
expect(fish['size']).to eq(size)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
"""
|
30
|
+
And a file named "features/foo.feature" with
|
31
|
+
"""
|
32
|
+
Feature:
|
33
|
+
Scenario:
|
34
|
+
Given the fishes
|
35
|
+
| name | color |
|
36
|
+
| Whity | white |
|
37
|
+
| Blacky | black |
|
38
|
+
| Reddy | red |
|
39
|
+
Then Whity should be white and have a normal size
|
40
|
+
And Blacky should be black and have a normal size
|
41
|
+
And Reddy should be red and have a normal size
|
42
|
+
"""
|
43
|
+
When I run cucumber "features/foo.feature"
|
44
|
+
Then it should pass
|
45
|
+
|
46
|
+
Scenario: Default hashes with a one column raw table
|
47
|
+
|
48
|
+
For readability reasons, With a one column table it is possible to omit the
|
49
|
+
name of that column from the scenario.
|
50
|
+
|
51
|
+
Given a file named "features/step_definitions/steps.rb" with
|
52
|
+
"""
|
53
|
+
require 'cucumber_tricks'
|
54
|
+
|
55
|
+
Given(/^the fishes$/) do |names|
|
56
|
+
@hashes = names.hashes_with_defaults('name', 'size' => 'normal')
|
57
|
+
end
|
58
|
+
|
59
|
+
Then(/^(.*) should have a (.*) size$/) do |name, size|
|
60
|
+
@hashes.select { |fish| fish['name'] == name }.each do |fish|
|
61
|
+
expect(fish['size']).to eq(size)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
"""
|
66
|
+
And a file named "features/foo.feature" with
|
67
|
+
"""
|
68
|
+
Feature:
|
69
|
+
Scenario:
|
70
|
+
Given the fishes
|
71
|
+
| Whity |
|
72
|
+
| Reddy |
|
73
|
+
Then Whity should have a normal size
|
74
|
+
And Reddy should have a normal size
|
75
|
+
"""
|
76
|
+
When I run cucumber "features/foo.feature"
|
77
|
+
Then it should pass
|
78
|
+
|
79
|
+
Scenario: Tables to named lists
|
80
|
+
|
81
|
+
Using the '=>' notation in a scenario data table, one can define a set of
|
82
|
+
named lists.
|
83
|
+
|
84
|
+
Given a file named "features/step_definitions/steps.rb" with
|
85
|
+
"""
|
86
|
+
require 'cucumber_tricks'
|
87
|
+
|
88
|
+
Given(/^the dishes$/) do |dishes|
|
89
|
+
@dishes = dishes.hash_2_lists
|
90
|
+
end
|
91
|
+
|
92
|
+
Then(/^(.*) should be made of$/) do |dish, table|
|
93
|
+
ingredients = table.raw.map {|row| row.first}
|
94
|
+
|
95
|
+
expect(@dishes[dish]).to eq(ingredients)
|
96
|
+
end
|
97
|
+
|
98
|
+
"""
|
99
|
+
And a file named "features/foo.feature" with
|
100
|
+
"""
|
101
|
+
Feature:
|
102
|
+
Scenario:
|
103
|
+
Given the dishes
|
104
|
+
| Burger | => | Bread | Meat | Ketchup |
|
105
|
+
| Spaghetti Bolognaise | => | Spaghetti | Bolognaise sauce | |
|
106
|
+
Then Burger should be made of
|
107
|
+
| Bread |
|
108
|
+
| Meat |
|
109
|
+
| Ketchup |
|
110
|
+
And Spaghetti Bolognaise should be made of
|
111
|
+
| Spaghetti |
|
112
|
+
| Bolognaise sauce |
|
113
|
+
"""
|
114
|
+
When I run cucumber "features/foo.feature"
|
115
|
+
Then it should pass
|
@@ -6,10 +6,9 @@
|
|
6
6
|
# /^(a|an|the|this) tool( "([^"]*)")?$/
|
7
7
|
#
|
8
8
|
# Allowing to match things like
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
# * this tool
|
9
|
+
# * the tool "saw"
|
10
|
+
# * a tool
|
11
|
+
# * this tool
|
13
12
|
#
|
14
13
|
# The first time this capture is matched in a scenario, the given value
|
15
14
|
# is stored for any subsequent capture where no value is specified.
|
@@ -17,6 +16,8 @@
|
|
17
16
|
# If ever the first capture does not provide an explicit value, then
|
18
17
|
# the given default value is used (aka 'hammer' in the previous example)
|
19
18
|
#
|
19
|
+
# * kind : the kind of things to match (ex: 'tool')
|
20
|
+
# * default_value : the default value to use if none is given at first usage
|
20
21
|
def NameOrPronounTransform(kind, default_value)
|
21
22
|
|
22
23
|
knows_this_kind_of_things = Module.new do
|
@@ -41,11 +42,8 @@ def NameOrPronounTransform(kind, default_value)
|
|
41
42
|
end
|
42
43
|
|
43
44
|
|
44
|
-
# GivenEither, WhenEither and ThenEither
|
45
|
-
#
|
46
|
-
# * table_regex : is the regex with no arguments, matching the table
|
47
|
-
# * inline_regex : is a regex matching a single textual argument, that
|
48
|
-
# will be embedded in a one cell table before calling the block
|
45
|
+
# Implementation of #GivenEither, #WhenEither and #ThenEither.
|
46
|
+
# Defines 2 steps in 1 call.
|
49
47
|
#
|
50
48
|
# example:
|
51
49
|
#
|
@@ -54,18 +52,26 @@ end
|
|
54
52
|
# create_animals(table)
|
55
53
|
# end
|
56
54
|
#
|
55
|
+
# * adverb : 'Given' | 'When' | 'Then', implementation purpose
|
56
|
+
# * inline_regex : is a regex matching a single textual argument, that
|
57
|
+
# will be embedded in a one cell table before calling the block
|
58
|
+
# * table_regex : is the regex with no arguments, matching the table
|
59
|
+
# * &bloc : is the implementation of the step, taking a table as argument
|
57
60
|
def register_either_step_definitions(adverb, inline_regex, table_regex, &block)
|
58
61
|
send(adverb,inline_regex) do |arg|
|
59
62
|
self.instance_exec(cucumber_table(arg), &block)
|
60
63
|
end
|
61
64
|
send(adverb,table_regex, &block)
|
62
65
|
end
|
66
|
+
# see #register_either_step_definitions
|
63
67
|
def GivenEither(inline_regex, table_regex, &block)
|
64
68
|
register_either_step_definitions('Given', inline_regex, table_regex, &block)
|
65
69
|
end
|
70
|
+
# see #register_either_step_definitions
|
66
71
|
def WhenEither(inline_regex, table_regex, &block)
|
67
72
|
register_either_step_definitions('When', inline_regex, table_regex, &block)
|
68
73
|
end
|
74
|
+
# see #register_either_step_definitions
|
69
75
|
def ThenEither(inline_regex, table_regex, &block)
|
70
76
|
register_either_step_definitions('Then', inline_regex, table_regex, &block)
|
71
77
|
end
|
@@ -1,13 +1,26 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
+
# Extension to the Cucumber::Ast::Table class providing table transformation
|
4
|
+
# goodies
|
3
5
|
class Cucumber::Ast::Table
|
4
6
|
|
7
|
+
# Similar to the #hashes method, but merges every hash into a default
|
8
|
+
# hash of values. It can also create a hash from an untitled 1-column
|
9
|
+
# table.
|
10
|
+
#
|
11
|
+
# * main_column : name of the given column in case of an untitled 1-column
|
12
|
+
# table
|
13
|
+
# * defaults : the default values to merge into every hash
|
5
14
|
def hashes_with_defaults(main_column, defaults = {})
|
6
15
|
hashes_with_default_column(main_column).map do |hash|
|
7
16
|
defaults.merge(hash)
|
8
17
|
end
|
9
18
|
end
|
10
19
|
|
20
|
+
# Transforms the table into a collection of named lists. More precisely, this
|
21
|
+
# is a hash from the value in the first column to a list of all the values
|
22
|
+
# from the successive columns. Empty cells are simply ignored.
|
23
|
+
# As a visual hint, the second column should only contain the '=>' marker.
|
11
24
|
def hash_2_lists
|
12
25
|
result = {}
|
13
26
|
raw.each do |row|
|
data/push.sh
ADDED
metadata
CHANGED
@@ -1,85 +1,120 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber_tricks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
|
-
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
UUhxSnpuUXJ2YVlUb1pMeEdBUkRmM013ejRtRlNoNFcKc25TZXA1M0RaMXZy
|
36
|
-
WTJHem1pZy80UHVCRjRxM25od1BneFY2SDNTSDQvUHk3UUY1Q09aUFFsQ2RC
|
37
|
-
d1BZY3pxVwpYeEliWGhSVlhjZ2pCSFQwdzJIc1hrT3dtbVl2QnpicmZxdFR4
|
38
|
-
NU5zd3dIY0llUVpCL05JRDdiZXJJZjlhd3gzCnlMY2wxY21tNUFMdEovK0Jr
|
39
|
-
a21wMGk0YW1YZVRETXZxOXI4UEJzVnNRd3hZT1lKQlArVW14ejNQWDZIakZI
|
40
|
-
clEKWGRrWHgzb1oKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
41
|
-
date: 2014-06-03 00:00:00.000000000 Z
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDkjCCAnqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMRkwFwYDVQQDDBBwaGls
|
14
|
+
aXBwZS5ib3VyZ2F1MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/Is
|
15
|
+
ZAEZFgNjb20wHhcNMTMwOTIzMTEwOTA3WhcNMTQwOTIzMTEwOTA3WjBHMRkwFwYD
|
16
|
+
VQQDDBBwaGlsaXBwZS5ib3VyZ2F1MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzAR
|
17
|
+
BgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
18
|
+
AQC8CpoqZwEbzXr55EUxdSplgn0MYZ9xPGO/XmRa8bD63n+JYWF0AS+mj452ZY18
|
19
|
+
rwM+yKrKhtsA+aJJdlOafgIUnY5SrZOr7v7kgc6T2YNoUj+M00Um2jv+shQbOtV6
|
20
|
+
qGp0Jw1HfPNUMVa+3pXZyAGCecN6rTnsZJIuW6KNaJUq6lEMVXanoTHgAKrH5aHd
|
21
|
+
Y6ofwQL86d6LDkC1S4p86iMUWvF34w8h5ItVo+JKlPRR22rzsK/ZKgNH3lfjbS6i
|
22
|
+
JWqPva70rL2xz5kCVn6DL7XhNZtqnAO4kvCQyQeWezvcoGXEnbHacKky7B+/WKec
|
23
|
+
OIWEwedl6j+X0OD5OYki3QaTAgMBAAGjgYgwgYUwCQYDVR0TBAIwADALBgNVHQ8E
|
24
|
+
BAMCBLAwHQYDVR0OBBYEFJnLz40Onu/dfpLSipU5FgTy6WLmMCUGA1UdEQQeMByB
|
25
|
+
GnBoaWxpcHBlLmJvdXJnYXVAZ21haWwuY29tMCUGA1UdEgQeMByBGnBoaWxpcHBl
|
26
|
+
LmJvdXJnYXVAZ21haWwuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQBGoH72KWYACGZl
|
27
|
+
cMHMJ9d/DRU7rynJ8c4xuuM4c3Ri8bGPqI/a1BAp4QPJApS4+ANXXJ220hslrekP
|
28
|
+
9/ExEKFiqiywh1clih9ttuN4cHqJzCP6QHqJznQrvaYToZLxGARDf3Mwz4mFSh4W
|
29
|
+
snSep53DZ1vrY2Gzmig/4PuBF4q3nhwPgxV6H3SH4/Py7QF5COZPQlCdBwPYczqW
|
30
|
+
XxIbXhRVXcgjBHT0w2HsXkOwmmYvBzbrfqtTx5NswwHcIeQZB/NID7berIf9awx3
|
31
|
+
yLcl1cmm5ALtJ/+Bkkmp0i4amXeTDMvq9r8PBsVsQwxYOYJBP+Umxz3PX6HjFHrQ
|
32
|
+
XdkXx3oZ
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2014-06-11 00:00:00.000000000 Z
|
42
35
|
dependencies:
|
43
36
|
- !ruby/object:Gem::Dependency
|
44
37
|
name: cucumber
|
45
38
|
requirement: !ruby/object:Gem::Requirement
|
46
39
|
requirements:
|
47
|
-
- -
|
40
|
+
- - ">="
|
48
41
|
- !ruby/object:Gem::Version
|
49
42
|
version: '0'
|
50
43
|
type: :runtime
|
51
44
|
prerelease: false
|
52
45
|
version_requirements: !ruby/object:Gem::Requirement
|
53
46
|
requirements:
|
54
|
-
- -
|
47
|
+
- - ">="
|
55
48
|
- !ruby/object:Gem::Version
|
56
49
|
version: '0'
|
57
50
|
- !ruby/object:Gem::Dependency
|
58
51
|
name: bundler
|
59
52
|
requirement: !ruby/object:Gem::Requirement
|
60
53
|
requirements:
|
61
|
-
- -
|
54
|
+
- - ">="
|
62
55
|
- !ruby/object:Gem::Version
|
63
56
|
version: '0'
|
64
57
|
type: :development
|
65
58
|
prerelease: false
|
66
59
|
version_requirements: !ruby/object:Gem::Requirement
|
67
60
|
requirements:
|
68
|
-
- -
|
61
|
+
- - ">="
|
69
62
|
- !ruby/object:Gem::Version
|
70
63
|
version: '0'
|
71
64
|
- !ruby/object:Gem::Dependency
|
72
65
|
name: rake
|
73
66
|
requirement: !ruby/object:Gem::Requirement
|
74
67
|
requirements:
|
75
|
-
- -
|
68
|
+
- - ">="
|
76
69
|
- !ruby/object:Gem::Version
|
77
70
|
version: '0'
|
78
71
|
type: :development
|
79
72
|
prerelease: false
|
80
73
|
version_requirements: !ruby/object:Gem::Requirement
|
81
74
|
requirements:
|
82
|
-
- -
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: guard-cucumber
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
type: :development
|
86
|
+
prerelease: false
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rspec
|
94
|
+
requirement: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: relish
|
108
|
+
requirement: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
83
118
|
- !ruby/object:Gem::Version
|
84
119
|
version: '0'
|
85
120
|
description: Cucumber step definition dsl extension to easily define more readable
|
@@ -90,16 +125,24 @@ executables: []
|
|
90
125
|
extensions: []
|
91
126
|
extra_rdoc_files: []
|
92
127
|
files:
|
93
|
-
- .gitignore
|
128
|
+
- ".gitignore"
|
129
|
+
- ".travis.yml"
|
94
130
|
- Gemfile
|
131
|
+
- Guardfile
|
95
132
|
- LICENSE.txt
|
96
133
|
- README.md
|
97
134
|
- Rakefile
|
98
135
|
- cucumber_tricks.gemspec
|
136
|
+
- features/either.feature
|
137
|
+
- features/pronouns.feature
|
138
|
+
- features/step_definitions/steps.rb
|
139
|
+
- features/support/hooks.rb
|
140
|
+
- features/tables.feature
|
99
141
|
- lib/cucumber_tricks.rb
|
100
142
|
- lib/cucumber_tricks/dsl_extensions.rb
|
101
143
|
- lib/cucumber_tricks/table_extensions.rb
|
102
144
|
- lib/cucumber_tricks/version.rb
|
145
|
+
- push.sh
|
103
146
|
homepage: https://github.com/philou/cucumber_tricks
|
104
147
|
licenses:
|
105
148
|
- MIT
|
@@ -110,19 +153,24 @@ require_paths:
|
|
110
153
|
- lib
|
111
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
112
155
|
requirements:
|
113
|
-
- -
|
156
|
+
- - ">="
|
114
157
|
- !ruby/object:Gem::Version
|
115
158
|
version: '0'
|
116
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
160
|
requirements:
|
118
|
-
- -
|
161
|
+
- - ">="
|
119
162
|
- !ruby/object:Gem::Version
|
120
163
|
version: '0'
|
121
164
|
requirements: []
|
122
165
|
rubyforge_project:
|
123
|
-
rubygems_version: 2.
|
166
|
+
rubygems_version: 2.2.2
|
124
167
|
signing_key:
|
125
168
|
specification_version: 4
|
126
169
|
summary: Allows to reference entities with pronouns in gherkin, and to have dual steps,
|
127
170
|
taking a single parameter, or a more detailed table.
|
128
|
-
test_files:
|
171
|
+
test_files:
|
172
|
+
- features/either.feature
|
173
|
+
- features/pronouns.feature
|
174
|
+
- features/step_definitions/steps.rb
|
175
|
+
- features/support/hooks.rb
|
176
|
+
- features/tables.feature
|
metadata.gz.sig
CHANGED
Binary file
|