1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

create_dummy_app method that allows to easily create dummy application from template

This commit is contained in:
Piotr Sarnacki 2010-11-02 15:13:10 +01:00
parent fadad11f90
commit f9e33fc09a
6 changed files with 51 additions and 42 deletions

View file

@ -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)

View file

@ -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 %>'

View file

@ -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__)

View file

@ -0,0 +1 @@
create_dummy_app("spec/dummy")

View file

@ -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

View file

@ -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