Skip to content

Commit

Permalink
[merb_cucumber] Updated to support Cucumber 0.4 and Merb 1.1. Install…
Browse files Browse the repository at this point in the history
… and run merb-gen cucumber in order to refresh. Also, delete the cucumber.yml at your root as it will conflict with the new one being generated at config/cucumber.yml.
  • Loading branch information
merbjedi committed Oct 10, 2009
1 parent a42e179 commit 215c607
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 88 deletions.
2 changes: 1 addition & 1 deletion README.textile
Expand Up @@ -10,7 +10,7 @@ merb_cucumber 0.5.0 now requires a version greater than cucumber 0.1.13, which i

Cucumber::CLI.execute ARGV

* Add a cucumber.yml to your Merb.root with the following contents:
* Add a config/cucumber.yml to your Merb.root with the following contents:

default: --format pretty features

Expand Down
12 changes: 6 additions & 6 deletions Rakefile
Expand Up @@ -5,10 +5,10 @@ require 'merb-core'
require 'merb-core/tasks/merb'

GEM_NAME = "merb_cucumber"
GEM_VERSION = "0.5.1.2"
AUTHOR = ["Roman Gonzalez", "David Leal"]
EMAIL = ["romanandreg@gmail.com", "dgleal@gmail.com"]
HOMEPAGE = "http://github.com/david/merb_cucumber"
GEM_VERSION = "0.6"
AUTHOR = ["Roman Gonzalez", "David Leal", "Jacques Crocker"]
EMAIL = ["merbjedi@gmail.com"]
HOMEPAGE = "http://github.com/merbjedi/merb_cucumber"
SUMMARY = "Cucumber integration for Merb"

spec = Gem::Specification.new do |s|
Expand All @@ -23,8 +23,8 @@ spec = Gem::Specification.new do |s|
s.authors = AUTHOR
s.email = EMAIL
s.homepage = HOMEPAGE
s.add_dependency('merb-core', '~> 1.0')
s.add_dependency('cucumber', '>= 0.1.14')
s.add_dependency('merb-core', '>= 1.1')
s.add_dependency('cucumber', '>= 0.4.0')
s.require_path = 'lib'
s.files = %w(LICENSE README.textile Rakefile TODO Generators) + Dir.glob("{lib,spec}/**/*")
end
Expand Down
6 changes: 3 additions & 3 deletions lib/generators/cucumber.rb
Expand Up @@ -9,9 +9,9 @@ class CucumberGenerator < Generator
def self.source_root
File.join(File.dirname(__FILE__), 'cucumber', 'templates')
end

option :orm, :desc => 'Object-Relation Mapper to use (one of: none, activerecord, datamapper, sequel)'
option :session_type, :default => :simple, :desc => 'Session type to use (one of: simple, webrat)'
option :session_type, :default => :webrat, :desc => 'Session type to use (one of: simple, webrat)'

template(:env) { |t| t.source = t.destination = "features/support/env.rb" }
template(:rake) { |t| t.source = t.destination = "lib/tasks/cucumber.rake" }
Expand All @@ -25,7 +25,7 @@ def self.source_root
template(:webrat_steps, :session_type => :webrat) do |t|
t.source = t.destination = "features/steps/webrat_steps.rb"
end
template(:cucumber_yml) { |t| t.source = t.destination = "cucumber.yml" }
template(:cucumber_yml) { |t| t.source = t.destination = "config/cucumber.yml" }

def chmod(action)
File.chmod(0755, action.destination)
Expand Down
1 change: 1 addition & 0 deletions lib/generators/cucumber/templates/config/cucumber.yml
@@ -0,0 +1 @@
default: -r features/support --format pretty features
1 change: 0 additions & 1 deletion lib/generators/cucumber/templates/cucumber.yml

This file was deleted.

14 changes: 7 additions & 7 deletions lib/generators/cucumber/templates/features/support/env.rb
@@ -1,12 +1,6 @@
# Sets up the Merb environment for Cucumber (thanks to krzys and roman)
require "rubygems"

# Add the local gems dir if found within the app root; any dependencies loaded
# hereafter will try to load from the local gems before loading system gems.
if (local_gem_dir = File.join(File.dirname(__FILE__), '..', 'gems')) && $BUNDLE.nil?
$BUNDLE = true; Gem.clear_paths; Gem.path.unshift(local_gem_dir)
end

require "merb-core"
require 'spec/expectations'
require "merb_cucumber/world/<%= session_type %>"
Expand All @@ -16,6 +10,9 @@
require "merb_cucumber/helpers/activerecord"
<% end -%>
# Recursively Load all steps defined within features/**/*_steps.rb
Dir["#{Merb.root}" / "features" / "**" / "*_steps.rb"].each { |f| require f }
# Uncomment if you want transactional fixtures
# Merb::Test::World::Base.use_transactional_fixtures
Expand All @@ -24,4 +21,7 @@
def Spec.run? ; true; end
Merb.start_environment(:testing => true, :adapter => 'runner', :environment => ENV['MERB_ENV'] || 'test')


<% if orm == :datamapper -%>
DataMapper.auto_migrate!
<% end -%>
61 changes: 33 additions & 28 deletions lib/generators/cucumber/templates/lib/tasks/cucumber.rake
@@ -1,33 +1,38 @@
require 'cucumber/rake/task'
begin
require 'cucumber/rake/task'

cucumber_options = lambda do |t|
# if you want to pass some custom options to cucumber, pass them here
t.binary = Merb.root / 'bin' / 'cucumber' if File.exist?(Merb.root / 'bin' / 'cucumber')
# We need use fork cucumber since cucumber > 0.3.4
t.fork = 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 = Merb.root / 'bin' / 'cucumber' if File.exist?(Merb.root / 'bin' / 'cucumber')

namespace :cucumber do
Cucumber::Rake::Task.new(:ok, 'Run features that should pass') do |t|
t.binary = vendored_cucumber_binary if 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

# Add all requirement like before cucumber<0.3.4
t.cucumber_opts = ''
require_list = Array(FileList[File.join(File.dirname(__FILE__),"../../features/**/*.rb")])
require_list.each do |step_file|
t.cucumber_opts << '--require'
t.cucumber_opts << step_file
end
end
Cucumber::Rake::Task.new(:wip, 'Run features that are being worked on') do |t|
t.binary = vendored_cucumber_binary if 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

Cucumber::Rake::Task.new(:features, &cucumber_options)
Cucumber::Rake::FeatureTask.new(:feature, &cucumber_options)
namespace :merb_cucumber do
task :test_env do
Merb.start_environment(:environment => "test", :adapter => 'runner')
desc 'Run all features'
task :all => [:ok, :wip]
end
end
desc 'Alias for cucumber:ok'
task :cucumber => 'cucumber:ok'

task :default => :cucumber

<% if orm == :datamapper %>
dependencies = ['merb_cucumber:test_env', 'db:automigrate']
task :features => dependencies
task :feature => dependencies
<% else %>
task :features => 'merb_cucumber:test_env'
task :feature => 'merb_cucumber:test_env'
<% end %>
task :features => :cucumber do
STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
end

rescue LoadError
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
1 change: 0 additions & 1 deletion lib/merb_cucumber/world/webrat.rb
@@ -1,6 +1,5 @@
require File.join(File.dirname(__FILE__), 'base')
require 'webrat'
require 'webrat/adapters/merb'

module Merb
module Test
Expand Down
37 changes: 0 additions & 37 deletions merb_cucumber.gemspec

This file was deleted.

8 changes: 4 additions & 4 deletions spec/cucumber_setup_generator_spec.rb
Expand Up @@ -7,8 +7,8 @@
@generator.should create('/tmp/features/support/env.rb')
end

it "should generate the cucumber.yml file" do
@generator.should create('/tmp/cucumber.yml')
it "should generate the config/cucumber.yml file" do
@generator.should create('/tmp/config/cucumber.yml')
end

it "should generate the autotest/cucumber_merb_rspec.rb file" do
Expand Down Expand Up @@ -63,7 +63,7 @@
describe "on simple session" do

before(:each) do
@generator = Merb::Generators::CucumberGenerator.new('/tmp', {:orm => :datamapper})
@generator = Merb::Generators::CucumberGenerator.new('/tmp', {:orm => :datamapper, :session_type => :simple})
end

it_should_behave_like "common files generator"
Expand All @@ -87,7 +87,7 @@
describe "on webrat session" do

before(:each) do
@generator = Merb::Generators::CucumberGenerator.new('/tmp', {:orm => :datamapper, :session_type => :webrat})
@generator = Merb::Generators::CucumberGenerator.new('/tmp', {:orm => :datamapper})
end

it_should_behave_like "common files generator"
Expand Down

0 comments on commit 215c607

Please sign in to comment.