aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-11-02 15:13:10 +0100
committerPiotr Sarnacki <drogus@gmail.com>2010-11-02 17:14:53 +0100
commitf9e33fc09a6731ad56ff8cfe24b49532ed65039c (patch)
tree74e60eb0b4f7d2c62cbb129ec142f7fea944613c
parentfadad11f9056a0166ee490a5eb0a4d9a01120d38 (diff)
downloadrails-f9e33fc09a6731ad56ff8cfe24b49532ed65039c.tar.gz
rails-f9e33fc09a6731ad56ff8cfe24b49532ed65039c.tar.bz2
rails-f9e33fc09a6731ad56ff8cfe24b49532ed65039c.zip
create_dummy_app method that allows to easily create dummy application from template
-rw-r--r--railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb61
-rw-r--r--railties/lib/rails/generators/rails/plugin_new/templates/Rakefile6
-rw-r--r--railties/lib/rails/generators/rails/plugin_new/templates/script/rails.tt2
-rw-r--r--railties/test/fixtures/lib/create_test_dummy_template.rb1
-rw-r--r--railties/test/fixtures/lib/plugin_builders/spec_builder.rb14
-rw-r--r--railties/test/generators/plugin_new_generator_test.rb9
6 files changed, 51 insertions, 42 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 29a92c9388..eac4f76510 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
@@ -37,13 +37,19 @@ module Rails
def test
template "test/test_helper.rb"
template "test/%name%_test.rb"
+ append_file "Rakefile", <<-EOF
+#{rakefile_test_tasks}
+
+task :default => :test
+ EOF
if full?
template "test/integration/navigation_test.rb"
end
end
- def generate_test_dummy
+ def generate_test_dummy(force = false)
opts = (options || {}).slice(:skip_active_record, :skip_javascript, :database, :javascript)
+ opts[:force] = force
invoke Rails::Generators::AppGenerator,
[ File.expand_path(dummy_path, destination_root) ], opts
@@ -70,33 +76,12 @@ module Rails
end
end
- def script
- directory "script" do |content|
+ def script(force = false)
+ directory "script", :force => force do |content|
"#{shebang}\n" + content
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
@@ -143,7 +128,7 @@ end
def create_test_dummy_files
return if options[:skip_test_unit]
- create_test_dummy(dummy_path)
+ create_dummy_app
end
def finish_template
@@ -153,13 +138,17 @@ end
public_task :apply_rails_template, :bundle_if_dev_or_edge
protected
- def create_test_dummy(dummy_path)
+ def create_dummy_app(path = nil)
+ dummy_path(path) if path
+
say_status :vendor_app, dummy_path
mute do
build(:generate_test_dummy)
store_application_definition!
build(:test_dummy_config)
build(:test_dummy_clean)
+ # ensure that script/rails has proper dummy_path
+ build(:script, true)
end
end
@@ -205,10 +194,22 @@ end
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
+ 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(path = nil)
+ @dummy_path = path if path
+ @dummy_path || "test/dummy"
end
def mute(&block)
diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile b/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile
index dd7c11622d..88f50f9f04 100644
--- a/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile
+++ b/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile
@@ -9,12 +9,6 @@ end
require 'rake'
require 'rake/rdoctask'
-<% unless options[:skip_test_unit] -%>
-<%= rakefile_test_tasks %>
-
-task :default => :test
-<% end -%>
-
Rake::RDocTask.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = '<%= camelized %>'
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 91d9cf079d..ebd5a77dd5 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_path %>/dummy/script/rails', __FILE__)
+load File.expand_path('../../<%= dummy_path %>/script/rails', __FILE__)
diff --git a/railties/test/fixtures/lib/create_test_dummy_template.rb b/railties/test/fixtures/lib/create_test_dummy_template.rb
new file mode 100644
index 0000000000..e4378bbd1a
--- /dev/null
+++ b/railties/test/fixtures/lib/create_test_dummy_template.rb
@@ -0,0 +1 @@
+create_dummy_app("spec/dummy")
diff --git a/railties/test/fixtures/lib/plugin_builders/spec_builder.rb b/railties/test/fixtures/lib/plugin_builders/spec_builder.rb
index bdaa1fb8e1..aa18c7ddaa 100644
--- a/railties/test/fixtures/lib/plugin_builders/spec_builder.rb
+++ b/railties/test/fixtures/lib/plugin_builders/spec_builder.rb
@@ -1,13 +1,19 @@
class PluginBuilder < Rails::PluginBuilder
def test
create_file "spec/spec_helper.rb"
+ append_file "Rakefile", <<-EOF
+# spec tasks in rakefile
+
+task :default => :spec
+ EOF
end
- def test_path
- "spec"
+ def generate_test_dummy
+ dummy_path("spec/dummy")
+ super
end
- def rakefile_test_tasks
- "# spec tasks in rakefile"
+ def skip_test_unit?
+ true
end
end
diff --git a/railties/test/generators/plugin_new_generator_test.rb b/railties/test/generators/plugin_new_generator_test.rb
index 6b7095ba78..f7f4f0261f 100644
--- a/railties/test/generators/plugin_new_generator_test.rb
+++ b/railties/test/generators/plugin_new_generator_test.rb
@@ -56,6 +56,13 @@ class PluginNewGeneratorTest < Rails::Generators::TestCase
assert_no_match /It works from file!.*It works_from_file/, run_generator([destination_root, "-m", "lib/template.rb"])
end
+ def test_ensure_that_test_dummy_can_be_generated_from_a_template
+ FileUtils.cd(Rails.root)
+ run_generator([destination_root, "-m", "lib/create_test_dummy_template.rb", "--skip-test-unit"])
+ assert_file "spec/dummy"
+ assert_no_file "test"
+ end
+
def test_database_entry_is_assed_by_default_in_full_mode
run_generator([destination_root, "--full"])
assert_file "test/dummy/config/database.yml", /sqlite/
@@ -143,9 +150,9 @@ class CustomPluginGeneratorTest < Rails::Generators::TestCase
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 'spec/dummy'
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