Skip to content
Browse files

Updated cucumber to 0.4.3.

Instead of `rake features` now run `rake cucumber`

Also, no need to add "-p default" when running individual features
  • Loading branch information...
1 parent b90e8a2 commit 9518200a0326dcfaac722c22e8663987b70546c6 @danielmorrison danielmorrison committed Oct 29, 2009
View
2 Rakefile
@@ -9,5 +9,5 @@ require 'rake/rdoctask'
require 'tasks/rails'
-task :build => %w(db:migrate spec features)
+task :build => %w(db:migrate spec cucumber)
task :db => %w(db:migrate db:test:prepare)
View
12 config/environments/cucumber.rb
@@ -1,3 +1,7 @@
+# IMPORTANT: This file was generated by Cucumber 0.4.3
+# Edit at your own peril - it's recommended to regenerate this file
+# in the future when you upgrade to a newer version of Cucumber.
+
config.cache_classes = true # This must be true for Cucumber to operate correctly!
# Log error messages when you accidentally call methods on nil.
@@ -21,9 +25,11 @@
end.flatten.map{|p| p.name.to_sym}
config.plugins -= [:backgroundrb]
-config.gem "cucumber", :lib => false, :version => "=0.3.11"
-config.gem "rspec", :lib => false, :version => ">=1.2.7"
-config.gem "rspec-rails", :lib => false, :version => ">=1.2.7"
+config.gem 'cucumber', :lib => false, :version => '>=0.4.3' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber'))
+config.gem 'webrat', :lib => false, :version => '>=0.5.3' unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))
+config.gem 'rspec', :lib => false, :version => '>=1.2.9' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
+config.gem 'rspec-rails', :lib => false, :version => '>=1.2.9' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
+
config.gem "nokogiri", :version => "=1.3.2"
config.gem "thoughtbot-factory_girl",
:lib => "factory_girl",
View
6 config/environments/test.rb
@@ -29,9 +29,9 @@
end.flatten.map{|p| p.name.to_sym}
config.plugins -= [:backgroundrb]
-config.gem "rspec", :lib => false, :version => ">=1.2.7"
-config.gem "rspec-rails", :lib => false, :version => ">=1.2.7"
-config.gem "webrat"
+config.gem 'rspec', :lib => false, :version => '>=1.2.9'
+config.gem 'rspec-rails', :lib => false, :version => '>=1.2.9'
+config.gem 'webrat', :lib => false, :version => '>=0.5.3'
config.gem "thoughtbot-factory_girl",
:lib => "factory_girl",
:source => "http://gems.github.com"
View
96 features/step_definitions/webrat_steps.rb
@@ -1,3 +1,8 @@
+# IMPORTANT: This file was generated by Cucumber 0.4.3
+# Edit at your own peril - it's recommended to regenerate this file
+# in the future when you upgrade to a newer version of Cucumber.
+# Consider adding your own code to a new file instead of editing this one.
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
# Commonly used webrat steps
@@ -19,21 +24,46 @@
click_link(link)
end
+When /^I follow "([^\"]*)" within "([^\"]*)"$/ do |link, parent|
+ click_link_within(parent, link)
+end
+
When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
- fill_in(field, :with => value)
+ fill_in(field, :with => value)
+end
+
+When /^I fill in "([^\"]*)" for "([^\"]*)"$/ do |value, field|
+ fill_in(field, :with => value)
+end
+
+# Use this to fill in an entire form with data from a table. Example:
+#
+# When I fill in the following:
+# | Account Number | 5002 |
+# | Expiry date | 2009-11-01 |
+# | Note | Nice guy |
+# | Wants Email? | |
+#
+# TODO: Add support for checkbox, select og option
+# based on naming conventions.
+#
+When /^I fill in the following:$/ do |fields|
+ fields.rows_hash.each do |name, value|
+ When %{I fill in "#{name}" with "#{value}"}
+ end
end
When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field|
- select(value, :from => field)
+ select(value, :from => field)
end
# Use this step in conjunction with Rail's datetime_select helper. For example:
-# When I select "December 25, 2008 10:00" as the date and time
+# When I select "December 25, 2008 10:00" as the date and time
When /^I select "([^\"]*)" as the date and time$/ do |time|
select_datetime(time)
end
-# Use this step when using multiple datetime_select helpers on a page or
+# Use this step when using multiple datetime_select helpers on a page or
# you want to specify which datetime to select. Given the following view:
# <%= f.label :preferred %><br />
# <%= f.datetime_select :preferred %>
@@ -49,7 +79,7 @@
# Use this step in conjunction with Rail's time_select helper. For example:
# When I select "2:20PM" as the time
# Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
-# will convert the 2:20PM to 14:20 and then select it.
+# will convert the 2:20PM to 14:20 and then select it.
When /^I select "([^\"]*)" as the time$/ do |time|
select_time(time)
end
@@ -75,11 +105,11 @@
end
When /^I check "([^\"]*)"$/ do |field|
- check(field)
+ check(field)
end
When /^I uncheck "([^\"]*)"$/ do |field|
- uncheck(field)
+ uncheck(field)
end
When /^I choose "([^\"]*)"$/ do |field|
@@ -90,48 +120,70 @@
attach_file(field, path)
end
-When /^I attach the "([^\"]*)" file at "([^\"]*)" to "([^\"]*)"$/ do |mime, path, field|
- attach_file(field, path, mime)
+Then /^I should see "([^\"]*)"$/ do |text|
+ response.should contain(text)
end
-When /^I load (.*) for "([^\"]*)"$/ do |page, title|
- visit path_to(page, title)
+Then /^I should see "([^\"]*)" within "([^\"]*)"$/ do |text, selector|
+ within(selector) do |content|
+ content.should contain(text)
+ end
end
-Then /^I should see "([^\"]*)"$/ do |text|
- response.should contain(text)
+Then /^I should see \/([^\/]*)\/$/ do |regexp|
+ regexp = Regexp.new(regexp)
+ response.should contain(regexp)
end
-Then /^I should see:$/ do |table|
- table.raw.each do |row|
- response.should contain(row.join)
+Then /^I should see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector|
+ within(selector) do |content|
+ regexp = Regexp.new(regexp)
+ content.should contain(regexp)
end
end
Then /^I should not see "([^\"]*)"$/ do |text|
response.should_not contain(text)
end
+Then /^I should not see "([^\"]*)" within "([^\"]*)"$/ do |text, selector|
+ within(selector) do |content|
+ content.should_not contain(text)
+ end
+end
+
+Then /^I should not see \/([^\/]*)\/$/ do |regexp|
+ regexp = Regexp.new(regexp)
+ response.should_not contain(regexp)
+end
+
+Then /^I should not see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector|
+ within(selector) do |content|
+ regexp = Regexp.new(regexp)
+ content.should_not contain(regexp)
+ end
+end
+
Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value|
field_labeled(field).value.should =~ /#{value}/
end
Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value|
field_labeled(field).value.should_not =~ /#{value}/
end
-
+
Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
field_labeled(label).should be_checked
end
-Then /^I should be on (.+)$/ do |page_name|
- URI.parse(current_url).path.should == path_to(page_name)
+Then /^the "([^\"]*)" checkbox should not be checked$/ do |label|
+ field_labeled(label).should_not be_checked
end
-Then /^I should be redirected to (.+)$/ do |page_name|
+Then /^I should be on (.+)$/ do |page_name|
URI.parse(current_url).path.should == path_to(page_name)
end
-Then /^I have loaded (.*) for "([^\"]*)"$/ do |page, title|
- URI.parse(current_url).path.should == path_to(page,title)
+Then /^show me the page$/ do
+ save_and_open_page
end
View
34 features/support/env.rb
@@ -1,27 +1,43 @@
-require 'rubygems'
-require 'spork'
+ENV["RAILS_ENV"] = "cucumber"
+# Sets up the Rails environment for Cucumber
+require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
Spork.prefork do
# Loading more in this block will cause your tests to run faster. However,
# if you change any configuration or code from libraries loaded here, you'll
# need to restart spork for it take effect.
- ENV["RAILS_ENV"] = "cucumber"
-# Sets up the Rails environment for Cucumber
- require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
require 'cucumber/rails/world'
require 'cucumber/formatter/unicode' # Comment out this line if you don't want Cucumber Unicode support
# Cucumber::Rails.use_transactional_fixtures
# Cucumber::Rails.bypass_rescue # Comment out this line if you want Rails own error handling
# (e.g. rescue_action_in_public / rescue_responses / rescue_from)
Cucumber::Rails::World.use_transactional_fixtures = false
- require 'webrat'
+ # If you set this to true, each scenario will run in a database transaction.
+ # You can still turn off transactions on a per-scenario basis, simply tagging
+ # a feature or scenario with the @no-txn tag.
+ #
+ # If you set this to false, transactions will be off for all scenarios,
+ # regardless of whether you use @no-txn or not.
+ # If you set this to false, any error raised from within your app will bubble
+ # up to your step definition and out to cucumber unless you catch it somewhere
+ # on the way. You can make Rails rescue errors and render error pages on a
+ # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
+ #
+ # If you set this to true, Rails will rescue all errors and render error
+ # pages, more or less in the same way your application would behave in the
+ # default production environment. It's not recommended to do this for all
+ # of your scenarios, as this makes it hard to discover errors in your application.
+ ActionController::Base.allow_rescue = false
+
+ require 'webrat'
+ require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table)
+ require 'webrat/core/matchers'
Webrat.configure do |config|
config.mode = :rails
+ config.open_error_files = false # Set to true if you want error pages to pop up in the browser
end
-
require 'cucumber/rails/rspec'
- require 'webrat/core/matchers'
require "#{Rails.root}/spec/factories"
@@ -44,7 +60,6 @@
Before do
ts.controller.index
end
-
end
Spork.each_run do
@@ -64,3 +79,4 @@
Dir[File.join(RAILS_ROOT, "features/fixtures", '*.rb')].sort.each { |fixture| load fixture }
end
end
+
View
31 features/support/version_check.rb
@@ -0,0 +1,31 @@
+require 'cucumber/formatter/ansicolor'
+extend Cucumber::Formatter::ANSIColor
+if Cucumber::VERSION != '0.4.3'
+warning = <<-WARNING
+#{red_cukes(15)}
+
+ #{red_cukes(1)} R O T T E N C U C U M B E R A L E R T #{red_cukes(1)}
+
+Your #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} file was generated with Cucumber 0.4.3,
+but you seem to be running Cucumber #{Cucumber::VERSION}. If you're running an older
+version than #{Cucumber::VERSION}, just upgrade your gem. If you're running a newer
+version than #{Cucumber::VERSION} you should:
+
+ 1) Read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
+
+ 2) Regenerate your cucumber environment with the following command:
+
+ ruby script/generate cucumber
+
+If you get prompted to replace a file, hit 'd' to see the difference.
+When you're sure you have captured any personal edits, confirm that you
+want to overwrite #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} by pressing 'y'. Then reapply any
+personal changes that may have been overwritten, preferably in separate files.
+
+This message will then self destruct.
+
+#{red_cukes(15)}
+WARNING
+warn(warning)
+at_exit {warn(warning)}
+end
View
41 lib/tasks/cucumber.rake
@@ -1,17 +1,44 @@
+# This file was generated by
$LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib')
+unless ARGV.any? {|a| a =~ /^gems/}
+
begin
require 'cucumber/rake/task'
- Cucumber::Rake::Task.new(:features) do |t|
- t.fork = true
- t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
- t.rcov = true
+ # Use vendored cucumber binary if possible. If it's not vendored,
+ # Cucumber::Rake::Task will automatically use installed gem's cucumber binary
+ vendored_cucumber_binary = Dir["#{RAILS_ROOT}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
+
+ namespace :cucumber do
+ Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
+ t.binary = vendored_cucumber_binary
+ t.fork = true # You may get faster startup if you set this to false
+ t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
+ end
+
+ Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
+ t.binary = vendored_cucumber_binary
+ t.fork = true # You may get faster startup if you set this to false
+ t.cucumber_opts = "--color --tags @wip:2 --wip --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
+ end
+
+ desc 'Run all features'
+ task :all => [:ok, :wip]
+ end
+ desc 'Alias for cucumber:ok'
+ task :cucumber => 'cucumber:ok'
+
+ task :default => :cucumber
+
+ task :features => :cucumber do
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
end
- task :features => 'db:test:prepare'
rescue LoadError
- desc 'Cucumber rake task not available'
- task :features do
+ desc 'cucumber rake task not available (cucumber not installed)'
+ task :cucumber do
abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
end
end
+
+end
View
23 script/cucumber
@@ -1,8 +1,17 @@
#!/usr/bin/env ruby
-begin
- load File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/cucumber/bin/cucumber")
-rescue LoadError => e
- raise unless e.to_s =~ /cucumber/
- require "rubygems"
- load File.join(Gem.bindir, "cucumber")
-end
+
+vendored_cucumber_binary = Dir[File.join(File.dirname(__FILE__),
+ '..',
+ 'vendor',
+ '{gems,plugins}',
+ 'cucumber*',
+ 'bin',
+ 'cucumber')].first
+
+if vendored_cucumber_binary
+ load File.expand_path(vendored_cucumber_binary)
+else
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
+ require 'cucumber'
+ load Cucumber::BINARY
+end

0 comments on commit 9518200

Please sign in to comment.
Something went wrong with that request. Please try again.