ruote-cukes 2.1.9
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.
- data/CHANGELOG.txt +8 -0
- data/CREDITS.txt +11 -0
- data/README.rdoc +78 -0
- data/Rakefile +43 -0
- data/TODO.txt +7 -0
- data/features/basic.feature +14 -0
- data/features/embedded.feature +20 -0
- data/features/fields_and_json.feature +21 -0
- data/features/initial_fields.feature +17 -0
- data/features/over.feature +13 -0
- data/features/reply.feature +14 -0
- data/features/step_definitions/requiring.rb +5 -0
- data/features/update.feature +18 -0
- data/features/when.feature +12 -0
- data/features/whole.feature +24 -0
- data/flows/a.rb +8 -0
- data/flows/a_to_b.rb +8 -0
- data/lib/ruote/cukes.rb +213 -0
- data/lib/ruote/cukes/version.rb +8 -0
- data/ruote-cukes.gemspec +71 -0
- metadata +131 -0
data/CHANGELOG.txt
ADDED
data/CREDITS.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
|
2
|
+
= ruote-cukes
|
3
|
+
|
4
|
+
Cucumber helpers (steps) for testing ruote process definitions and participants.
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
When I launch the flow
|
10
|
+
"""
|
11
|
+
Ruote.process_definition do
|
12
|
+
sequence do
|
13
|
+
alpha
|
14
|
+
participant :ref => '${f:next}'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
Then the process should reach alpha
|
19
|
+
When I get the first workitem of participant alpha
|
20
|
+
And I update the workitem with
|
21
|
+
| next | charly |
|
22
|
+
And I reply with the workitem
|
23
|
+
Then the process should reach charly
|
24
|
+
|
25
|
+
Note the usage of two columns cucumber tables for storing fields (or variables). The first column hold the keys, while the second one the values.
|
26
|
+
|
27
|
+
Look at features/ for the whole range of examples.
|
28
|
+
|
29
|
+
|
30
|
+
== using them
|
31
|
+
|
32
|
+
gem install ruote-cukes
|
33
|
+
|
34
|
+
then make sure to include
|
35
|
+
|
36
|
+
require 'ruote-cukes'
|
37
|
+
|
38
|
+
in your feature support or step definitions.
|
39
|
+
|
40
|
+
|
41
|
+
== complex fields
|
42
|
+
|
43
|
+
When using cucumber tables to represent fields (or variables), ruote-cukes will always try to decode the values via JSON. This thus becomes possible :
|
44
|
+
|
45
|
+
Scenario: alpha to bravo
|
46
|
+
Given I have a ruote engine
|
47
|
+
And the catchall participant is registered
|
48
|
+
And the initial fields are
|
49
|
+
| targets | ["alice","bob"] |
|
50
|
+
When I launch the flow
|
51
|
+
"""
|
52
|
+
Ruote.process_definition do
|
53
|
+
concurrent_iterator :on_field => 'targets', :to_f => 'f' do
|
54
|
+
participant :ref => '${f:f}'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
"""
|
58
|
+
Then the process should reach alice
|
59
|
+
And the process should reach bob
|
60
|
+
|
61
|
+
|
62
|
+
== running the example features
|
63
|
+
|
64
|
+
Make sure the ruote and cucumber gems are installed and run
|
65
|
+
|
66
|
+
cucumber
|
67
|
+
|
68
|
+
|
69
|
+
== author
|
70
|
+
|
71
|
+
John Mettraux
|
72
|
+
http://jmettraux.wordpress.com
|
73
|
+
|
74
|
+
|
75
|
+
== license
|
76
|
+
|
77
|
+
MIT
|
78
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
require 'lib/ruote/cukes/version.rb'
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rake'
|
6
|
+
|
7
|
+
|
8
|
+
begin
|
9
|
+
|
10
|
+
require 'jeweler'
|
11
|
+
|
12
|
+
Jeweler::Tasks.new do |gem|
|
13
|
+
|
14
|
+
gem.version = Ruote::Cukes::VERSION
|
15
|
+
gem.name = 'ruote-cukes'
|
16
|
+
gem.summary = 'cucumber helpers for testing ruote definitions and participants'
|
17
|
+
gem.description = %{
|
18
|
+
cucumber helpers (steps) for testing ruote process definitions and participants
|
19
|
+
}
|
20
|
+
gem.email = 'jmettraux@gmail.com'
|
21
|
+
gem.homepage = 'http://ruote.rubyforge.org'
|
22
|
+
gem.authors = [ 'John Mettraux' ]
|
23
|
+
gem.rubyforge_project = 'ruote'
|
24
|
+
#gem.test_file = 'test/test.rb'
|
25
|
+
|
26
|
+
gem.add_dependency 'ruote', '>= 2.1.9'
|
27
|
+
gem.add_dependency 'cucumber'
|
28
|
+
|
29
|
+
gem.add_development_dependency 'rake'
|
30
|
+
gem.add_development_dependency 'jeweler'
|
31
|
+
|
32
|
+
# Gem::Specification http://www.rubygems.org/read/chapter/20
|
33
|
+
end
|
34
|
+
Jeweler::GemcutterTasks.new
|
35
|
+
rescue LoadError
|
36
|
+
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
37
|
+
end
|
38
|
+
|
39
|
+
require 'rake/clean'
|
40
|
+
CLEAN.include('pkg')
|
41
|
+
|
42
|
+
task :default => [ :clean ]
|
43
|
+
|
data/TODO.txt
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
Feature: basic
|
3
|
+
|
4
|
+
a basic feature example
|
5
|
+
|
6
|
+
Scenario: from a to b
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
And I launch the flow at flows/a_to_b.rb
|
10
|
+
When I get the first workitem of participant alpha
|
11
|
+
Then I should have a workitem
|
12
|
+
And the process should be alive
|
13
|
+
And the process should have no errors
|
14
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
Feature: I launch the flow
|
3
|
+
|
4
|
+
the process definition is embedded in the feature
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
And I launch the flow
|
10
|
+
"""
|
11
|
+
Ruote.process_definition do
|
12
|
+
sequence do
|
13
|
+
alpha
|
14
|
+
bravo
|
15
|
+
end
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
When I get the first workitem of participant alpha
|
19
|
+
Then I should have a workitem
|
20
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
Feature: the fields table can hold json values
|
3
|
+
|
4
|
+
the second column of
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
And the initial fields are
|
10
|
+
| targets | ["alice","bob"] |
|
11
|
+
When I launch the flow
|
12
|
+
"""
|
13
|
+
Ruote.process_definition do
|
14
|
+
concurrent_iterator :on_field => 'targets', :to_f => 'f' do
|
15
|
+
participant :ref => '${f:f}'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
"""
|
19
|
+
Then the process should reach alice
|
20
|
+
And the process should reach bob
|
21
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
Feature: When the initial fields are
|
3
|
+
|
4
|
+
using a cucumber table to set the initial fields of a workitem (launchitem)
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
And the initial fields are
|
10
|
+
| customer | Alain-san |
|
11
|
+
| company | super asia exchange |
|
12
|
+
And I launch the flow at flows/a_to_b.rb
|
13
|
+
When I get the first workitem of participant alpha
|
14
|
+
Then the workitem should include
|
15
|
+
| customer | Alain-san |
|
16
|
+
| company | super asia exchange |
|
17
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
Feature: When I launch
|
3
|
+
|
4
|
+
of course, launch may be a Given or a When
|
5
|
+
|
6
|
+
Scenario: from alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
When I launch the flow at flows/a.rb
|
10
|
+
Then the process should reach alpha
|
11
|
+
When I reply
|
12
|
+
Then the process should be over
|
13
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
Feature: When I reply with the workitem
|
3
|
+
|
4
|
+
a step definition for letting a workitem resume in its flow
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
When I launch the flow at flows/a_to_b.rb
|
10
|
+
Then the process should reach alpha
|
11
|
+
When I get the first workitem of alpha
|
12
|
+
And I reply with the workitem
|
13
|
+
Then the process should reach bravo
|
14
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
Feature: When I update the workitem with
|
3
|
+
|
4
|
+
changing the fields (payload) of a workitem
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
When I launch the flow at flows/a_to_b.rb
|
10
|
+
Then the process should reach alpha
|
11
|
+
When I get the first workitem of alpha
|
12
|
+
And I update the workitem with
|
13
|
+
| customer | Alf |
|
14
|
+
And I reply with the workitem
|
15
|
+
Then the process should reach bravo
|
16
|
+
And the workitem should include
|
17
|
+
| customer | Alf |
|
18
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
Feature: When I launch
|
3
|
+
|
4
|
+
of course, launch may be a Given or a When
|
5
|
+
|
6
|
+
Scenario: from alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
When I launch the flow at flows/a_to_b.rb
|
10
|
+
Then the process should reach alpha
|
11
|
+
And the process should reach participant alpha
|
12
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
Feature: ruote-cukes features
|
3
|
+
|
4
|
+
showing a rather complete example
|
5
|
+
|
6
|
+
Scenario: alpha to bravo
|
7
|
+
Given I have a ruote engine
|
8
|
+
And the catchall participant is registered
|
9
|
+
When I launch the flow
|
10
|
+
"""
|
11
|
+
Ruote.process_definition do
|
12
|
+
sequence do
|
13
|
+
alpha
|
14
|
+
participant :ref => '${f:next}'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
Then the process should reach alpha
|
19
|
+
When I get the first workitem of participant alpha
|
20
|
+
And I update the workitem with
|
21
|
+
| next | charly |
|
22
|
+
And I reply with the workitem
|
23
|
+
Then the process should reach charly
|
24
|
+
|
data/flows/a.rb
ADDED
data/flows/a_to_b.rb
ADDED
data/lib/ruote/cukes.rb
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010, John Mettraux, jmettraux@gmail.com
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
# THE SOFTWARE.
|
21
|
+
#
|
22
|
+
# Made in Japan.
|
23
|
+
#++
|
24
|
+
|
25
|
+
|
26
|
+
require 'test/unit/assertions'
|
27
|
+
include Test::Unit::Assertions
|
28
|
+
# not sure about that for now...
|
29
|
+
|
30
|
+
require 'json'
|
31
|
+
require 'ruote'
|
32
|
+
|
33
|
+
require 'ruote/cukes/version'
|
34
|
+
|
35
|
+
|
36
|
+
#
|
37
|
+
# a variable container in a singleton, or something like that
|
38
|
+
#
|
39
|
+
module Ruote::Cukes
|
40
|
+
|
41
|
+
def self.method_missing (m, *args)
|
42
|
+
m = m.to_s
|
43
|
+
if args.size == 1 && mm = m.match(/^(.+)=$/)
|
44
|
+
(@vars ||= {})[mm[1]] = args.first
|
45
|
+
elsif args.size == 0
|
46
|
+
(@vars ||= {})[m]
|
47
|
+
else
|
48
|
+
super
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.workitem
|
53
|
+
|
54
|
+
if wi = @vars['workitem']
|
55
|
+
return wi
|
56
|
+
end
|
57
|
+
|
58
|
+
wi = @vars['storage_participant'].first
|
59
|
+
|
60
|
+
@vars['workitem'] = wi
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
#
|
65
|
+
# re-opening the cucumber table class to add a fancy to_hash method
|
66
|
+
#
|
67
|
+
class Cucumber::Ast::Table
|
68
|
+
|
69
|
+
def to_hash
|
70
|
+
|
71
|
+
self.raw.inject({}) do |h, (k, v)|
|
72
|
+
h[k] = (Rufus::Json.decode(v) rescue v)
|
73
|
+
h
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
#
|
80
|
+
# ENGINE
|
81
|
+
|
82
|
+
Given /I have a ruote engine/ do
|
83
|
+
|
84
|
+
Ruote::Cukes.engine =
|
85
|
+
Ruote::Engine.new(
|
86
|
+
Ruote::Worker.new(
|
87
|
+
Ruote::HashStorage.new(
|
88
|
+
's_logger' => [ 'ruote/log/test_logger', 'Ruote::TestLogger' ])))
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
#
|
93
|
+
# PARTICIPANTS
|
94
|
+
|
95
|
+
Given /the catch[- ]?all participant is registered/ do
|
96
|
+
|
97
|
+
Ruote::Cukes.storage_participant =
|
98
|
+
Ruote::Cukes.engine.register_participant('.+', Ruote::StorageParticipant)
|
99
|
+
|
100
|
+
Ruote::Cukes.storage_participant.context = Ruote::Cukes.engine.context
|
101
|
+
# due to a bug in ruote 2.1.7, remove when 2.1.8 is out
|
102
|
+
end
|
103
|
+
|
104
|
+
Given /I get the first workitem of (?:participant )?(.+)$/ do |pname|
|
105
|
+
|
106
|
+
sleep 0.100 # give some time to the engine
|
107
|
+
|
108
|
+
Ruote::Cukes.workitem =
|
109
|
+
Ruote::Cukes.storage_participant.by_participant(pname).first
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
#
|
114
|
+
# LAUNCH
|
115
|
+
|
116
|
+
Given /the initial fields are$/ do |table|
|
117
|
+
|
118
|
+
Ruote::Cukes.launch_fields = table.to_hash
|
119
|
+
end
|
120
|
+
|
121
|
+
Given /the initial variables are (.+)$/ do |table|
|
122
|
+
|
123
|
+
Ruote::Cukes.launch_variables = table.to_hash
|
124
|
+
end
|
125
|
+
|
126
|
+
Given /I launch the flow at (.+)$/ do |path|
|
127
|
+
|
128
|
+
Ruote::Cukes.last_wfid = Ruote::Cukes.engine.launch(
|
129
|
+
path,
|
130
|
+
Ruote::Cukes.launch_fields || {},
|
131
|
+
Ruote::Cukes.launch_variables || {})
|
132
|
+
end
|
133
|
+
|
134
|
+
Given /I launch the flow$/ do |process_definition|
|
135
|
+
|
136
|
+
Ruote::Cukes.last_wfid = Ruote::Cukes.engine.launch(
|
137
|
+
process_definition,
|
138
|
+
Ruote::Cukes.launch_fields || {},
|
139
|
+
Ruote::Cukes.launch_variables || {})
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
#
|
144
|
+
# WORKITEMS
|
145
|
+
|
146
|
+
When /^I reply with the workitem$/ do
|
147
|
+
|
148
|
+
Ruote::Cukes.storage_participant.reply(Ruote::Cukes.workitem)
|
149
|
+
Ruote::Cukes.workitem = nil
|
150
|
+
end
|
151
|
+
|
152
|
+
When /^I update the workitem with$/ do |table|
|
153
|
+
|
154
|
+
Ruote::Cukes.workitem.fields.merge!(table.to_hash)
|
155
|
+
end
|
156
|
+
|
157
|
+
When /^I reply$/ do
|
158
|
+
|
159
|
+
sleep 0.100 # give some time to the engine
|
160
|
+
|
161
|
+
Ruote::Cukes.storage_participant.reply(
|
162
|
+
Ruote::Cukes.storage_participant.all.first)
|
163
|
+
end
|
164
|
+
|
165
|
+
Then /I should have a workitem/ do
|
166
|
+
|
167
|
+
assert_not_nil Ruote::Cukes.workitem
|
168
|
+
end
|
169
|
+
|
170
|
+
Then /^the workitem (?:fields )?should include$/ do |table|
|
171
|
+
|
172
|
+
fields = table.to_hash
|
173
|
+
|
174
|
+
assert_nil fields.find { |k, v|
|
175
|
+
Ruote::Cukes.workitem.fields[k] != v
|
176
|
+
}
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
#
|
182
|
+
# PROCESSES
|
183
|
+
|
184
|
+
Then /^the process should be alive$/ do
|
185
|
+
|
186
|
+
assert_not_nil Ruote::Cukes.engine.process(Ruote::Cukes.last_wfid)
|
187
|
+
end
|
188
|
+
|
189
|
+
Then /^the process should have no errors$/ do
|
190
|
+
|
191
|
+
assert_equal [], Ruote::Cukes.engine.process(Ruote::Cukes.last_wfid).errors
|
192
|
+
end
|
193
|
+
|
194
|
+
Then /^the process should reach (?:participant )?(.+)$/ do |pname|
|
195
|
+
|
196
|
+
sleep 0.100 # give some time to the engine
|
197
|
+
|
198
|
+
assert_not_nil Ruote::Cukes.storage_participant.all.find { |wi|
|
199
|
+
wi.fei.wfid == Ruote::Cukes.last_wfid && wi.participant_name == pname
|
200
|
+
}
|
201
|
+
end
|
202
|
+
|
203
|
+
Then /^the process should be over$/ do
|
204
|
+
|
205
|
+
sleep 0.100 # give some time to the engine
|
206
|
+
|
207
|
+
assert_not_nil Ruote::Cukes.engine.context.logger.log.find do |r|
|
208
|
+
r['action'] == 'terminated' && r['wfid'] == Ruote::Cukes.last_wfid
|
209
|
+
end
|
210
|
+
|
211
|
+
assert_nil Ruote::Cukes.engine.process(Ruote::Cukes.last_wfid)
|
212
|
+
end
|
213
|
+
|
data/ruote-cukes.gemspec
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{ruote-cukes}
|
8
|
+
s.version = "2.1.9"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["John Mettraux"]
|
12
|
+
s.date = %q{2010-06-14}
|
13
|
+
s.description = %q{
|
14
|
+
cucumber helpers (steps) for testing ruote process definitions and participants
|
15
|
+
}
|
16
|
+
s.email = %q{jmettraux@gmail.com}
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
"CHANGELOG.txt",
|
22
|
+
"CREDITS.txt",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"TODO.txt",
|
26
|
+
"features/basic.feature",
|
27
|
+
"features/embedded.feature",
|
28
|
+
"features/fields_and_json.feature",
|
29
|
+
"features/initial_fields.feature",
|
30
|
+
"features/over.feature",
|
31
|
+
"features/reply.feature",
|
32
|
+
"features/step_definitions/requiring.rb",
|
33
|
+
"features/update.feature",
|
34
|
+
"features/when.feature",
|
35
|
+
"features/whole.feature",
|
36
|
+
"flows/a.rb",
|
37
|
+
"flows/a_to_b.rb",
|
38
|
+
"lib/ruote/cukes.rb",
|
39
|
+
"lib/ruote/cukes/version.rb",
|
40
|
+
"ruote-cukes.gemspec"
|
41
|
+
]
|
42
|
+
s.homepage = %q{http://ruote.rubyforge.org}
|
43
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
44
|
+
s.require_paths = ["lib"]
|
45
|
+
s.rubyforge_project = %q{ruote}
|
46
|
+
s.rubygems_version = %q{1.3.6}
|
47
|
+
s.summary = %q{cucumber helpers for testing ruote definitions and participants}
|
48
|
+
|
49
|
+
if s.respond_to? :specification_version then
|
50
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
51
|
+
s.specification_version = 3
|
52
|
+
|
53
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
|
+
s.add_runtime_dependency(%q<ruote>, [">= 2.1.9"])
|
55
|
+
s.add_runtime_dependency(%q<cucumber>, [">= 0"])
|
56
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<ruote>, [">= 2.1.9"])
|
60
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
61
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
62
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
63
|
+
end
|
64
|
+
else
|
65
|
+
s.add_dependency(%q<ruote>, [">= 2.1.9"])
|
66
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
67
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
68
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruote-cukes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 2
|
7
|
+
- 1
|
8
|
+
- 9
|
9
|
+
version: 2.1.9
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- John Mettraux
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-06-14 00:00:00 +09:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: ruote
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 1
|
30
|
+
- 9
|
31
|
+
version: 2.1.9
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: cucumber
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
version: "0"
|
56
|
+
type: :development
|
57
|
+
version_requirements: *id003
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: jeweler
|
60
|
+
prerelease: false
|
61
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id004
|
70
|
+
description: "\n\
|
71
|
+
cucumber helpers (steps) for testing ruote process definitions and participants\n "
|
72
|
+
email: jmettraux@gmail.com
|
73
|
+
executables: []
|
74
|
+
|
75
|
+
extensions: []
|
76
|
+
|
77
|
+
extra_rdoc_files:
|
78
|
+
- README.rdoc
|
79
|
+
files:
|
80
|
+
- CHANGELOG.txt
|
81
|
+
- CREDITS.txt
|
82
|
+
- README.rdoc
|
83
|
+
- Rakefile
|
84
|
+
- TODO.txt
|
85
|
+
- features/basic.feature
|
86
|
+
- features/embedded.feature
|
87
|
+
- features/fields_and_json.feature
|
88
|
+
- features/initial_fields.feature
|
89
|
+
- features/over.feature
|
90
|
+
- features/reply.feature
|
91
|
+
- features/step_definitions/requiring.rb
|
92
|
+
- features/update.feature
|
93
|
+
- features/when.feature
|
94
|
+
- features/whole.feature
|
95
|
+
- flows/a.rb
|
96
|
+
- flows/a_to_b.rb
|
97
|
+
- lib/ruote/cukes.rb
|
98
|
+
- lib/ruote/cukes/version.rb
|
99
|
+
- ruote-cukes.gemspec
|
100
|
+
has_rdoc: true
|
101
|
+
homepage: http://ruote.rubyforge.org
|
102
|
+
licenses: []
|
103
|
+
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options:
|
106
|
+
- --charset=UTF-8
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
123
|
+
requirements: []
|
124
|
+
|
125
|
+
rubyforge_project: ruote
|
126
|
+
rubygems_version: 1.3.6
|
127
|
+
signing_key:
|
128
|
+
specification_version: 3
|
129
|
+
summary: cucumber helpers for testing ruote definitions and participants
|
130
|
+
test_files: []
|
131
|
+
|