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:
parent
fadad11f90
commit
f9e33fc09a
6 changed files with 51 additions and 42 deletions
|
@ -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)
|
||||
|
|
|
@ -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 %>'
|
||||
|
|
|
@ -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__)
|
||||
|
|
1
railties/test/fixtures/lib/create_test_dummy_template.rb
vendored
Normal file
1
railties/test/fixtures/lib/create_test_dummy_template.rb
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
create_dummy_app("spec/dummy")
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue