aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-10-20 21:21:14 +0200
committerPiotr Sarnacki <drogus@gmail.com>2010-11-02 17:14:50 +0100
commitb36fa51a3f56431d8e46c1fff6a6493d3c10607a (patch)
treea446299bd74918c0942b64a38b5f74404eccb94d /railties
parentfd1562af8c662fee8a44d244eaed3350ce10e7da (diff)
downloadrails-b36fa51a3f56431d8e46c1fff6a6493d3c10607a.tar.gz
rails-b36fa51a3f56431d8e46c1fff6a6493d3c10607a.tar.bz2
rails-b36fa51a3f56431d8e46c1fff6a6493d3c10607a.zip
Allow easy overriding of test framework in 'rake plugin new' generator, using PluginBuilder
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb35
-rw-r--r--railties/lib/rails/generators/rails/plugin_new/templates/Rakefile11
-rw-r--r--railties/lib/rails/generators/rails/plugin_new/templates/script/rails.tt2
-rw-r--r--railties/test/fixtures/lib/plugin_builders/spec_builder.rb13
-rw-r--r--railties/test/generators/plugin_new_generator_test.rb10
5 files changed, 55 insertions, 16 deletions
diff --git a/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb b/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb
index 3c710b8908..6067c5d87e 100644
--- a/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb
+++ b/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb
@@ -35,7 +35,7 @@ module Rails
directory "test"
end
- def test_dummy
+ def generate_test_dummy
invoke Rails::Generators::AppGenerator,
[ File.expand_path(dummy_path, destination_root) ], {}
end
@@ -68,6 +68,27 @@ module Rails
end
chmod "script", 0755, :verbose => false
end
+
+ def rakefile_test_tasks
+ <<-RUBY
+require 'rake/testtask'
+
+Rake::TestTask.new(:test) do |t|
+ t.libs << 'lib'
+ t.libs << 'test'
+ t.pattern = 'test/**/*_test.rb'
+ t.verbose = false
+end
+ RUBY
+ end
+
+ def dummy_path
+ "#{test_path}/dummy"
+ end
+
+ def test_path
+ "test"
+ end
end
module Generators
@@ -141,7 +162,7 @@ module Rails
say_step "Vendoring Rails application at test/dummy"
def create_test_dummy_files
- build(:test_dummy)
+ build(:generate_test_dummy)
end
say_step "Configuring Rails application"
@@ -192,10 +213,6 @@ module Rails
end
end
- def dummy_path
- "test/dummy"
- end
-
def application_definition
@application_definition ||= begin
unless options[:pretend]
@@ -209,6 +226,12 @@ module Rails
def get_builder_class
defined?(::PluginBuilder) ? ::PluginBuilder : Rails::PluginBuilder
end
+
+ [:test_path, :dummy_path, :rakefile_test_tasks].each do |name|
+ define_method name do
+ builder.send(name) if builder.respond_to?(name)
+ end
+ end
end
end
end
diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile b/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile
index c0e6185ddc..af5f672396 100644
--- a/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile
+++ b/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile
@@ -10,16 +10,9 @@ require 'rake'
require 'rake/rdoctask'
require 'rake/gempackagetask'
-require 'rake/testtask'
+<%= rakefile_test_tasks %>
-Rake::TestTask.new(:test) do |t|
- t.libs << 'lib'
- t.libs << 'test'
- t.pattern = 'test/**/*_test.rb'
- t.verbose = false
-end
-
-task :default => :test
+task :default => :<%= test_path %>
Rake::RDocTask.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/script/rails.tt b/railties/lib/rails/generators/rails/plugin_new/templates/script/rails.tt
index cd4f7f6ab3..91d9cf079d 100644
--- a/railties/lib/rails/generators/rails/plugin_new/templates/script/rails.tt
+++ b/railties/lib/rails/generators/rails/plugin_new/templates/script/rails.tt
@@ -2,4 +2,4 @@
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
ENGINE_PATH = File.expand_path('../..', __FILE__)
-load File.expand_path('../../test/dummy/script/rails', __FILE__)
+load File.expand_path('../../<%= test_path %>/dummy/script/rails', __FILE__)
diff --git a/railties/test/fixtures/lib/plugin_builders/spec_builder.rb b/railties/test/fixtures/lib/plugin_builders/spec_builder.rb
new file mode 100644
index 0000000000..bdaa1fb8e1
--- /dev/null
+++ b/railties/test/fixtures/lib/plugin_builders/spec_builder.rb
@@ -0,0 +1,13 @@
+class PluginBuilder < Rails::PluginBuilder
+ def test
+ create_file "spec/spec_helper.rb"
+ end
+
+ def test_path
+ "spec"
+ end
+
+ def rakefile_test_tasks
+ "# spec tasks in rakefile"
+ end
+end
diff --git a/railties/test/generators/plugin_new_generator_test.rb b/railties/test/generators/plugin_new_generator_test.rb
index 0d88d36971..a7177914e1 100644
--- a/railties/test/generators/plugin_new_generator_test.rb
+++ b/railties/test/generators/plugin_new_generator_test.rb
@@ -217,6 +217,16 @@ class CustomPluginGeneratorTest < Rails::Generators::TestCase
DEFAULT_PLUGIN_FILES.each{ |path| assert_no_file path }
end
+ def test_overriding_test_framework
+ FileUtils.cd(destination_root)
+ run_generator([destination_root, "-b", "#{Rails.root}/lib/plugin_builders/spec_builder.rb"])
+ assert_file 'spec/spec_helper.rb'
+ assert_file 'Rakefile', /task :default => :spec/
+ assert_file 'Rakefile', /# spec tasks in rakefile/
+ assert_file 'spec/dummy'
+ assert_file 'script/rails', %r{spec/dummy}
+ end
+
protected
def action(*args, &block)