aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-06-20 15:43:25 +0200
committerJosé Valim <jose.valim@gmail.com>2009-06-20 15:43:25 +0200
commit181feecfb9343781ac03b724a34242257f35e1e6 (patch)
treea774d6f4021383a17fc0bc2c7ae2249ca80f82fd
parent68739eed570c0754e9f974545491d16aeee50091 (diff)
downloadrails-181feecfb9343781ac03b724a34242257f35e1e6.tar.gz
rails-181feecfb9343781ac03b724a34242257f35e1e6.tar.bz2
rails-181feecfb9343781ac03b724a34242257f35e1e6.zip
First stub at app generators test.
-rw-r--r--railties/lib/generator/generators/app.rb2
-rw-r--r--railties/test/generator/actions_test.rb3
-rw-r--r--railties/test/generator/app_test.rb65
3 files changed, 67 insertions, 3 deletions
diff --git a/railties/lib/generator/generators/app.rb b/railties/lib/generator/generators/app.rb
index f5e83460d7..b54f8dc41f 100644
--- a/railties/lib/generator/generators/app.rb
+++ b/railties/lib/generator/generators/app.rb
@@ -167,7 +167,7 @@ module Rails::Generators
def apply_rails_template
apply options[:template] if options[:template]
rescue LoadError, Errno::ENOENT => e
- raise "The template [#{template}] could not be loaded. Error: #{e}"
+ raise Error, "The template [#{options[:template]}] could not be loaded. Error: #{e}"
end
def freeze?
diff --git a/railties/test/generator/actions_test.rb b/railties/test/generator/actions_test.rb
index 4977765d40..60db8905d7 100644
--- a/railties/test/generator/actions_test.rb
+++ b/railties/test/generator/actions_test.rb
@@ -4,12 +4,11 @@ require 'generator/generator_test_helper'
class ActionsTest < GeneratorTestCase
def setup
super
-
@git_plugin_uri = 'git://github.com/technoweenie/restful-authentication.git'
@svn_plugin_uri = 'svn://svnhub.com/technoweenie/restful-authentication/trunk'
end
- def test_apply_loads_a_template_and_evaluates_it
+ def test_apply_loads_and_evaluates_a_template
template = <<-TEMPLATE
@foo = "FOO"
TEMPLATE
diff --git a/railties/test/generator/app_test.rb b/railties/test/generator/app_test.rb
new file mode 100644
index 0000000000..ab0554d0cf
--- /dev/null
+++ b/railties/test/generator/app_test.rb
@@ -0,0 +1,65 @@
+require 'abstract_unit'
+require 'generator/generator_test_helper'
+
+class AppTest < GeneratorTestCase
+
+ def test_application_skeleton_is_created
+ run_generator
+
+ %w(
+ app/controllers
+ app/helpers
+ app/models
+ app/views/layouts
+ config/environments
+ config/initializers
+ config/locales
+ db
+ doc
+ lib
+ lib/tasks
+ log
+ public/images
+ public/javascripts
+ public/stylesheets
+ script/performance
+ test/fixtures
+ test/functional
+ test/integration
+ test/performance
+ test/unit
+ vendor
+ vendor/plugins
+ tmp/sessions
+ tmp/sockets
+ tmp/cache
+ tmp/pids
+ ).each{ |path| assert_file path }
+ end
+
+ def test_template_raises_an_error_with_invalid_path
+ content = capture(:stderr){ run_generator(["-m", "non/existant/path"]) }
+ assert_match /The template \[.*\] could not be loaded/, content
+ assert_match /non\/existant\/path/, content
+ end
+
+ def test_template_is_executed_when_supplied
+ path = "http://gist.github.com/103208.txt"
+ template = %{ say "It works!" }
+ template.instance_eval "def read; self; end" # Make the string respond to read
+
+ generator(:template => path, :database => "sqlite3").expects(:open).with(path).returns(template)
+ assert_match /It works!/, silence(:stdout){ generator.invoke(:all) }
+ end
+
+ protected
+
+ def run_generator(args=[])
+ silence(:stdout) { Rails::Generators::App.start [destination_root].concat(args) }
+ end
+
+ def generator(options={})
+ @generator ||= Rails::Generators::App.new([destination_root], options, :root => destination_root)
+ end
+
+end