From 2e0e558d92c7a160135c3dbe10b78f84a4198bd2 Mon Sep 17 00:00:00 2001 From: Marcello Nuccio Date: Fri, 26 Dec 2008 18:33:48 +0100 Subject: [PATCH] Rails::TemplateRunner lib method should have a &block. --- .../generators/applications/app/template_runner.rb | 6 +- .../test/generators/rails_template_runner_test.rb | 51 ++++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 railties/test/generators/rails_template_runner_test.rb diff --git a/railties/lib/rails_generator/generators/applications/app/template_runner.rb b/railties/lib/rails_generator/generators/applications/app/template_runner.rb index c611364..419cd66 100644 --- a/railties/lib/rails_generator/generators/applications/app/template_runner.rb +++ b/railties/lib/rails_generator/generators/applications/app/template_runner.rb @@ -10,7 +10,7 @@ module Rails attr_reader :root def initialize(template, root = '') # :nodoc: - @root = File.join(Dir.pwd, root) + @root = (root.starts_with?('/') ? root : File.join(Dir.pwd, root)) puts "applying template: #{template}" @@ -158,7 +158,7 @@ module Rails # # lib("foreign.rb", "# Foreign code is fun") # - def lib(filename, data = nil) + def lib(filename, data = nil, &block) puts "add lib file #{filename}" inside("lib") do |folder| File.open("#{folder}/#{filename}", "w") do |f| @@ -369,4 +369,4 @@ module Rails File.join(root, relative_destination) end end -end \ No newline at end of file +end diff --git a/railties/test/generators/rails_template_runner_test.rb b/railties/test/generators/rails_template_runner_test.rb new file mode 100644 index 0000000..7a4189f --- /dev/null +++ b/railties/test/generators/rails_template_runner_test.rb @@ -0,0 +1,51 @@ +require 'generators/generator_test_helper' +require 'rails_generator/generators/applications/app/app_generator' + +class RailsTemplateRunnerTest < GeneratorTestCase + + def setup + super + mkdir_p "#{RAILS_ROOT}/lib" + end + + def teardown + rm_rf "#{RAILS_ROOT}/lib" + super + end + + def run_template_and_verify_generated_file(template_contents, generated_file_name, generated_file_contents) + template_name = File.join(RAILS_ROOT, 'rails_test_application_template.rb') + File.open(template_name, 'w') do |template| + template.write(template_contents) + end + + Rails::TemplateRunner.new(template_name, RAILS_ROOT) + assert_generated_file(generated_file_name) do |actual_contents| + assert_equal generated_file_contents, actual_contents + end + + ensure + rm_f template_name + rm_f "#{RAILS_ROOT}/#{generated_file_name}" + end + + def test_generates_lib_file_from_string + generated_file_name = 'lib/test_lib.rb' + generated_file_contents = "# TEST FILE." + + run_template_and_verify_generated_file(<<-EOTEMPLATE, generated_file_name, generated_file_contents) + lib('#{File.basename(generated_file_name)}', '#{generated_file_contents}') + EOTEMPLATE + end + + def test_generates_lib_file_from_block + generated_file_name = 'lib/test_lib.rb' + generated_file_contents = "# TEST FILE." + + run_template_and_verify_generated_file(<<-EOTEMPLATE, generated_file_name, generated_file_contents) + lib('#{File.basename(generated_file_name)}') do + '#{generated_file_contents}' + end + EOTEMPLATE + end +end -- 1.5.6.3