pickle 0.2.1 → 0.2.2
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/History.txt +8 -0
- data/README.rdoc +18 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/features/email/email.feature +22 -1
- data/features/step_definitions/email_steps.rb +8 -0
- data/features/step_definitions/generator_steps.rb +1 -1
- data/features/step_definitions/pickle_steps.rb +17 -1
- data/features/support/env.rb +34 -29
- data/features/support/paths.rb +2 -2
- data/features/support/pickle_app.rb +0 -6
- data/garlic.rb +5 -3
- data/lib/pickle/email.rb +37 -1
- data/lib/pickle/world.rb +1 -1
- data/pickle.gemspec +6 -5
- data/rails_generators/pickle/templates/email_steps.rb +8 -0
- data/rails_generators/pickle/templates/pickle_steps.rb +17 -1
- data/spec/lib/pickle_email_spec.rb +22 -0
- metadata +12 -5
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.2.2 - 25 Feb 2010
|
2
|
+
|
3
|
+
* 3 improvements
|
4
|
+
* Added ability to follow links in emails (see email_steps.rb) [Michael Moen]
|
5
|
+
* Added a step definition for doing stuff like: Then the user's name should be "Tobi" [Tobi Knaup]
|
6
|
+
* Docfixes, mostly about testing [Nicholas Rutherford]
|
7
|
+
|
8
|
+
|
1
9
|
== 0.2.1 - 1 Dec 2009
|
2
10
|
|
3
11
|
* 2 minor improvements
|
data/README.rdoc
CHANGED
@@ -13,7 +13,7 @@ building complex givens which require a bunch of models collaborating
|
|
13
13
|
|
14
14
|
<b>Gemcutter</b> for the gem: http://gemcutter.org/gems/pickle
|
15
15
|
|
16
|
-
<b>API</b> docs: http://ianwhite.github.com/pickle/doc
|
16
|
+
<b>API</b> docs: {Pickle rdoc on github}[http://ianwhite.github.com/pickle/doc/]
|
17
17
|
|
18
18
|
<b>Google group</b> for questions: http://groups.google.com/group/pickle-cucumber
|
19
19
|
|
@@ -43,13 +43,29 @@ Install pickle either as a rails plugin, or a gem
|
|
43
43
|
|
44
44
|
It's tested against all stable branches of 2.x rails, and edge, with the latest versions of rspec, cucumber, factory_girl, machinist.
|
45
45
|
|
46
|
+
== Run the tests
|
47
|
+
|
48
|
+
You can run the test with <b>garlic</b> http://github.com/ianwhite/garlic, which tests against different versions of rails.
|
49
|
+
|
50
|
+
Or, you can make a test rails app:
|
51
|
+
|
52
|
+
cd ~/wherever_you_work
|
53
|
+
rails pickle_test_project; cd pickle_test_project
|
54
|
+
script/generate rspec
|
55
|
+
script/generate cucumber --rspec
|
56
|
+
script/plugin install git://github.com/ianwhite/pickle.git
|
57
|
+
cd vendor/plugins/pickle
|
58
|
+
rake spec
|
59
|
+
cucumber features
|
60
|
+
|
46
61
|
== Contributors
|
47
62
|
|
48
63
|
The following people have made Pickle better:
|
49
64
|
|
50
65
|
* {Nick Rutherford}[http://github.com/nruth]
|
51
|
-
* Tobi Knaup
|
66
|
+
* {Tobi Knaup}[http://github.com/guenter]
|
52
67
|
* {Michael MacDonald}[http://github.com/schlick]
|
68
|
+
* {Michael Moen}[http://github.com/UnderpantsGnome]
|
53
69
|
|
54
70
|
== Get Started
|
55
71
|
|
data/Rakefile
CHANGED
@@ -23,7 +23,7 @@ Spec::Rake::SpecTask.new(:rcov) do |t|
|
|
23
23
|
t.spec_files = FileList['spec/**/*_spec.rb']
|
24
24
|
t.rcov = true
|
25
25
|
t.rcov_dir = 'doc/coverage'
|
26
|
-
t.rcov_opts = ['--text-report', '--exclude', "spec/,rcov.rb,#{File.expand_path(File.join(File.dirname(__FILE__),'../../..'))}"]
|
26
|
+
t.rcov_opts = ['--text-report', '--exclude', "gems/,features/,/Library,spec/,rcov.rb,#{File.expand_path(File.join(File.dirname(__FILE__),'../../..'))}"]
|
27
27
|
end
|
28
28
|
|
29
29
|
namespace :rcov do
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
@@ -36,4 +36,25 @@ Feature: I can test emails are sent
|
|
36
36
|
And the user's email is delivered
|
37
37
|
Then 1 email should be delivered to the user
|
38
38
|
And the email should contain "Dear Fred"
|
39
|
-
And the email should link to the user's page
|
39
|
+
And the email should link to the user's page
|
40
|
+
|
41
|
+
Scenario: Following the first link in an email
|
42
|
+
Given a user exists with name: "Fred", email: "fred@gmail.com"
|
43
|
+
And an email "cool" with body: "some text <a href='http://example.com/users/1'>example page</a> more text" is delivered to fred@gmail.com
|
44
|
+
Then 1 email should be delivered to the user
|
45
|
+
And I click the first link in the email
|
46
|
+
Then I should be at the user's page
|
47
|
+
|
48
|
+
Scenario: Following a link in an email by url
|
49
|
+
Given a user exists with name: "Fred", email: "fred@gmail.com"
|
50
|
+
And an email "cool" with body: "some text <a href='http://example.com/users/1'>example page</a> more text" is delivered to fred@gmail.com
|
51
|
+
Then 1 email should be delivered to the user
|
52
|
+
And I follow "example.com/" in the email
|
53
|
+
Then I should be at the user's page
|
54
|
+
|
55
|
+
Scenario: Following a link in an email by the text
|
56
|
+
Given a user exists with name: "Fred", email: "fred@gmail.com"
|
57
|
+
And an email "cool" with body: "some text <a href='http://example.com/users/1'>example page</a> more text" is delivered to fred@gmail.com
|
58
|
+
Then 1 email should be delivered to the user
|
59
|
+
And I follow "example page" in the email
|
60
|
+
Then I should be at the user's page
|
@@ -18,6 +18,14 @@ Given(/^(\d)+ emails? should be delivered$/) do |count|
|
|
18
18
|
emails.size.should == count.to_i
|
19
19
|
end
|
20
20
|
|
21
|
+
When(/^(?:I|they) follow "([^"]*?)" in #{capture_email}$/) do |link, email_ref|
|
22
|
+
visit_in_email(email(email_ref), link)
|
23
|
+
end
|
24
|
+
|
25
|
+
When(/^(?:I|they) click the first link in #{capture_email}$/) do |email_ref|
|
26
|
+
click_first_link_in_email(email(email_ref))
|
27
|
+
end
|
28
|
+
|
21
29
|
Then(/^(\d)+ emails? should be delivered to (.*)$/) do |count, to|
|
22
30
|
emails("to: \"#{email_for(to)}\"").size.should == count.to_i
|
23
31
|
end
|
@@ -70,4 +70,20 @@ end
|
|
70
70
|
# assert not model.predicate?
|
71
71
|
Then(/^#{capture_model} should not (?:be|have) (?:an? )?#{capture_predicate}$/) do |name, predicate|
|
72
72
|
model!(name).should_not send("be_#{predicate.gsub(' ', '_')}")
|
73
|
-
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# model.attribute.should eql(value)
|
76
|
+
# model.attribute.should_not eql(value)
|
77
|
+
Then(/^#{capture_model}'s (\w+) (should(?: not)?) be #{capture_value}$/) do |name, attribute, expectation, expected|
|
78
|
+
actual_value = model(name).send(attribute)
|
79
|
+
expectation = expectation.gsub(' ', '_')
|
80
|
+
|
81
|
+
case expected
|
82
|
+
when 'nil', 'true', 'false'
|
83
|
+
actual_value.send(expectation, send("be_#{expected}"))
|
84
|
+
when /^-?[0-9_]+$/
|
85
|
+
actual_value.send(expectation, eql(expected.to_i))
|
86
|
+
else
|
87
|
+
actual_value.to_s.send(expectation, eql(expected))
|
88
|
+
end
|
89
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
# IMPORTANT: This file
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
2
|
+
# It is recommended to regenerate this file in the future when you upgrade to a
|
3
|
+
# newer version of cucumber-rails. Consider adding your own code to a new file
|
4
|
+
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
5
|
+
# files.
|
5
6
|
|
6
|
-
# Sets up the Rails environment for Cucumber
|
7
7
|
ENV["RAILS_ENV"] ||= "cucumber"
|
8
8
|
require File.expand_path(File.dirname(__FILE__) + '/../../../../../config/environment')
|
9
|
+
|
10
|
+
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
9
11
|
require 'cucumber/rails/world'
|
12
|
+
require 'cucumber/rails/active_record'
|
13
|
+
require 'cucumber/web/tableish'
|
14
|
+
|
15
|
+
require 'webrat'
|
16
|
+
require 'webrat/core/matchers'
|
17
|
+
|
18
|
+
Webrat.configure do |config|
|
19
|
+
config.mode = :rails
|
20
|
+
config.open_error_files = false # Set to true if you want error pages to pop up in the browser
|
21
|
+
end
|
10
22
|
|
11
|
-
# If you set this to true, each scenario will run in a database transaction.
|
12
|
-
# You can still turn off transactions on a per-scenario basis, simply tagging
|
13
|
-
# a feature or scenario with the @no-txn tag.
|
14
|
-
#
|
15
|
-
# If you set this to false, transactions will be off for all scenarios,
|
16
|
-
# regardless of whether you use @no-txn or not.
|
17
|
-
#
|
18
|
-
# Beware that turning transactions off will leave data in your database
|
19
|
-
# after each scenario, which can lead to hard-to-debug failures in
|
20
|
-
# subsequent scenarios. If you do this, we recommend you create a Before
|
21
|
-
# block that will explicitly put your database in a known state.
|
22
|
-
Cucumber::Rails::World.use_transactional_fixtures = true
|
23
23
|
|
24
24
|
# If you set this to false, any error raised from within your app will bubble
|
25
25
|
# up to your step definition and out to cucumber unless you catch it somewhere
|
@@ -32,16 +32,21 @@ Cucumber::Rails::World.use_transactional_fixtures = true
|
|
32
32
|
# of your scenarios, as this makes it hard to discover errors in your application.
|
33
33
|
ActionController::Base.allow_rescue = false
|
34
34
|
|
35
|
-
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
# If you set this to true, each scenario will run in a database transaction.
|
36
|
+
# You can still turn off transactions on a per-scenario basis, simply tagging
|
37
|
+
# a feature or scenario with the @no-txn tag. If you are using Capybara,
|
38
|
+
# tagging with @culerity or @javascript will also turn transactions off.
|
39
|
+
#
|
40
|
+
# If you set this to false, transactions will be off for all scenarios,
|
41
|
+
# regardless of whether you use @no-txn or not.
|
42
|
+
#
|
43
|
+
# Beware that turning transactions off will leave data in your database
|
44
|
+
# after each scenario, which can lead to hard-to-debug failures in
|
45
|
+
# subsequent scenarios. If you do this, we recommend you create a Before
|
46
|
+
# block that will explicitly put your database in a known state.
|
47
|
+
Cucumber::Rails::World.use_transactional_fixtures = true
|
47
48
|
|
49
|
+
# How to clean your database when transactions are turned off. See
|
50
|
+
# http://github.com/bmabey/database_cleaner for more info.
|
51
|
+
require 'database_cleaner'
|
52
|
+
DatabaseCleaner.strategy = :truncation
|
data/features/support/paths.rb
CHANGED
@@ -3,7 +3,7 @@ module NavigationHelpers
|
|
3
3
|
#
|
4
4
|
# When /^I go to (.+)$/ do |page_name|
|
5
5
|
#
|
6
|
-
# step definition in
|
6
|
+
# step definition in web_steps.rb
|
7
7
|
#
|
8
8
|
def path_to(page_name)
|
9
9
|
case page_name
|
@@ -12,7 +12,7 @@ module NavigationHelpers
|
|
12
12
|
'/'
|
13
13
|
|
14
14
|
# Add more mappings here.
|
15
|
-
# Here is
|
15
|
+
# Here is an example that pulls values out of the Regexp:
|
16
16
|
#
|
17
17
|
# when /^(.*)'s profile page$/i
|
18
18
|
# user_profile_path(User.find_by_login($1))
|
@@ -1,9 +1,3 @@
|
|
1
|
-
# test app setup
|
2
|
-
__APP__ = File.expand_path(File.join(File.dirname(__FILE__), '../app'))
|
3
|
-
require "#{__APP__}/app"
|
4
|
-
require "#{__APP__}/factories"
|
5
|
-
require "#{__APP__}/blueprints"
|
6
|
-
|
7
1
|
Pickle.configure do |c|
|
8
2
|
c.map 'I', :to => 'user: "me"'
|
9
3
|
c.map 'killah fork', :to => 'fancy fork: "of cornwood"'
|
data/garlic.rb
CHANGED
@@ -5,6 +5,7 @@ garlic do
|
|
5
5
|
repo 'factory_girl', :url => 'git://github.com/thoughtbot/factory_girl'
|
6
6
|
repo 'machinist', :url => 'git://github.com/notahat/machinist'
|
7
7
|
repo 'cucumber', :url => 'git://github.com/aslakhellesoy/cucumber'
|
8
|
+
repo 'cucumber-rails', :url => 'git://github.com/aslakhellesoy/cucumber-rails'
|
8
9
|
repo 'webrat', :url => 'git://github.com/brynary/webrat'
|
9
10
|
repo 'pickle', :path => '.'
|
10
11
|
|
@@ -18,11 +19,12 @@ garlic do
|
|
18
19
|
`script/generate rspec -f`
|
19
20
|
end
|
20
21
|
plugin 'factory_girl'
|
21
|
-
plugin 'cucumber'
|
22
|
-
`script/generate cucumber -f`
|
23
|
-
end
|
22
|
+
plugin 'cucumber'
|
24
23
|
plugin 'machinist'
|
25
24
|
plugin 'webrat'
|
25
|
+
plugin 'cucumber-rails' do
|
26
|
+
`script/generate cucumber --webrat -f`
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
run do
|
data/lib/pickle/email.rb
CHANGED
@@ -18,7 +18,17 @@ module Pickle
|
|
18
18
|
end
|
19
19
|
true
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
|
+
def visit_in_email(email, link_text)
|
23
|
+
visit(parse_email_for_link(email, link_text))
|
24
|
+
end
|
25
|
+
|
26
|
+
def click_first_link_in_email(email)
|
27
|
+
link = links_in_email(email).first
|
28
|
+
request_uri = URI::parse(link).request_uri
|
29
|
+
visit request_uri
|
30
|
+
end
|
31
|
+
|
22
32
|
protected
|
23
33
|
# Saves the emails out to RAILS_ROOT/tmp/ and opens it in the default
|
24
34
|
# web browser if on OS X. (depends on webrat)
|
@@ -32,5 +42,31 @@ module Pickle
|
|
32
42
|
end
|
33
43
|
open_in_browser(filename)
|
34
44
|
end
|
45
|
+
|
46
|
+
def parse_email_for_link(email, text_or_regex)
|
47
|
+
url = parse_email_for_explicit_link(email, text_or_regex)
|
48
|
+
url ||= parse_email_for_anchor_text_link(email, text_or_regex)
|
49
|
+
raise "No link found matching #{text_or_regex.inspect} in #{email}" unless url
|
50
|
+
url
|
51
|
+
end
|
52
|
+
|
53
|
+
# e.g. confirm in http://confirm
|
54
|
+
def parse_email_for_explicit_link(email, regex)
|
55
|
+
regex = /#{Regexp.escape(regex)}/ unless regex.is_a?(Regexp)
|
56
|
+
url = links_in_email(email).detect { |link| link =~ regex }
|
57
|
+
URI::parse(url).request_uri if url
|
58
|
+
end
|
59
|
+
|
60
|
+
# e.g. Click here in <a href="http://confirm">Click here</a>
|
61
|
+
def parse_email_for_anchor_text_link(email, link_text)
|
62
|
+
email.body =~ %r{<a[^>]*href=['"]?([^'"]*)['"]?[^>]*?>[^<]*?#{link_text}[^<]*?</a>}
|
63
|
+
URI.split($~[1])[5..-1].compact!.join("?").gsub("&", "&")
|
64
|
+
# sub correct ampersand after rails switches it (http://dev.rubyonrails.org/ticket/4002)
|
65
|
+
end
|
66
|
+
|
67
|
+
def links_in_email(email, protos=['http', 'https'])
|
68
|
+
URI.extract(email.body, protos)
|
69
|
+
end
|
70
|
+
|
35
71
|
end
|
36
72
|
end
|
data/lib/pickle/world.rb
CHANGED
@@ -5,5 +5,5 @@ World(Pickle::Session)
|
|
5
5
|
|
6
6
|
# shortcuts to regexps for use in step definition regexps
|
7
7
|
class << self
|
8
|
-
delegate :capture_model, :capture_fields, :capture_factory, :capture_plural_factory, :capture_predicate, :to => 'Pickle.parser'
|
8
|
+
delegate :capture_model, :capture_fields, :capture_factory, :capture_plural_factory, :capture_predicate, :capture_value, :to => 'Pickle.parser'
|
9
9
|
end
|
data/pickle.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{pickle}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ian White"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-02-27}
|
13
13
|
s.description = %q{Easy model creation and reference in your cucumber features}
|
14
14
|
s.email = %q{ian.w.white@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -83,7 +83,7 @@ Gem::Specification.new do |s|
|
|
83
83
|
s.homepage = %q{http://github.com/ianwhite/pickle/tree}
|
84
84
|
s.rdoc_options = ["--charset=UTF-8"]
|
85
85
|
s.require_paths = ["lib"]
|
86
|
-
s.rubygems_version = %q{1.3.
|
86
|
+
s.rubygems_version = %q{1.3.6}
|
87
87
|
s.summary = %q{Easy model creation and reference in your cucumber features}
|
88
88
|
s.test_files = [
|
89
89
|
"spec/lib/pickle_adapter_spec.rb",
|
@@ -108,3 +108,4 @@ Gem::Specification.new do |s|
|
|
108
108
|
else
|
109
109
|
end
|
110
110
|
end
|
111
|
+
|
@@ -18,6 +18,14 @@ Given(/^(\d)+ emails? should be delivered$/) do |count|
|
|
18
18
|
emails.size.should == count.to_i
|
19
19
|
end
|
20
20
|
|
21
|
+
When(/^(?:I|they) follow "([^"]*?)" in #{capture_email}$/) do |link, email_ref|
|
22
|
+
visit_in_email(email(email_ref), link)
|
23
|
+
end
|
24
|
+
|
25
|
+
When(/^(?:I|they) click the first link in #{capture_email}$/) do |email_ref|
|
26
|
+
click_first_link_in_email(email(email_ref))
|
27
|
+
end
|
28
|
+
|
21
29
|
Then(/^(\d)+ emails? should be delivered to (.*)$/) do |count, to|
|
22
30
|
emails("to: \"#{email_for(to)}\"").size.should == count.to_i
|
23
31
|
end
|
@@ -70,4 +70,20 @@ end
|
|
70
70
|
# assert not model.predicate?
|
71
71
|
Then(/^#{capture_model} should not (?:be|have) (?:an? )?#{capture_predicate}$/) do |name, predicate|
|
72
72
|
model!(name).should_not send("be_#{predicate.gsub(' ', '_')}")
|
73
|
-
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# model.attribute.should eql(value)
|
76
|
+
# model.attribute.should_not eql(value)
|
77
|
+
Then(/^#{capture_model}'s (\w+) (should(?: not)?) be #{capture_value}$/) do |name, attribute, expectation, expected|
|
78
|
+
actual_value = model(name).send(attribute)
|
79
|
+
expectation = expectation.gsub(' ', '_')
|
80
|
+
|
81
|
+
case expected
|
82
|
+
when 'nil', 'true', 'false'
|
83
|
+
actual_value.send(expectation, send("be_#{expected}"))
|
84
|
+
when /^-?[0-9_]+$/
|
85
|
+
actual_value.send(expectation, eql(expected.to_i))
|
86
|
+
else
|
87
|
+
actual_value.to_s.send(expectation, eql(expected))
|
88
|
+
end
|
89
|
+
end
|
@@ -128,4 +128,26 @@ describe Pickle::Email do
|
|
128
128
|
save_and_open_emails
|
129
129
|
end
|
130
130
|
end
|
131
|
+
|
132
|
+
describe "following links in emails" do
|
133
|
+
before do
|
134
|
+
stub!(:open_in_browser)
|
135
|
+
@email1.stub!(:body).and_return('some text <a href="http://example.com/page">example page</a> more text')
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should find a link for http://example.com/page" do
|
139
|
+
should_receive(:visit).with('/page')
|
140
|
+
visit_in_email(@email1, 'http://example.com/page')
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should find a link for \"example page\"" do
|
144
|
+
should_receive(:visit).with('/page')
|
145
|
+
visit_in_email(@email1, 'example page')
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should follow the first link in an email" do
|
149
|
+
should_receive(:visit).with('/page')
|
150
|
+
click_first_link_in_email(@email1)
|
151
|
+
end
|
152
|
+
end
|
131
153
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pickle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Ian White
|
@@ -9,7 +14,7 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-02-27 00:00:00 +00:00
|
13
18
|
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
@@ -98,18 +103,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
103
|
requirements:
|
99
104
|
- - ">="
|
100
105
|
- !ruby/object:Gem::Version
|
106
|
+
segments:
|
107
|
+
- 0
|
101
108
|
version: "0"
|
102
|
-
version:
|
103
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
110
|
requirements:
|
105
111
|
- - ">="
|
106
112
|
- !ruby/object:Gem::Version
|
113
|
+
segments:
|
114
|
+
- 0
|
107
115
|
version: "0"
|
108
|
-
version:
|
109
116
|
requirements: []
|
110
117
|
|
111
118
|
rubyforge_project:
|
112
|
-
rubygems_version: 1.3.
|
119
|
+
rubygems_version: 1.3.6
|
113
120
|
signing_key:
|
114
121
|
specification_version: 3
|
115
122
|
summary: Easy model creation and reference in your cucumber features
|