Assert for valid application names. [#3556 status:resolved]

This commit is contained in:
José Valim 2010-01-03 13:01:18 +01:00
parent 6716e4bc0c
commit e88ea3255f
2 changed files with 20 additions and 2 deletions

View File

@ -53,8 +53,9 @@ module Rails::Generators
def create_root
self.destination_root = File.expand_path(app_path, destination_root)
empty_directory '.'
valid_app_const?
empty_directory '.'
set_default_accessors!
FileUtils.cd(destination_root)
end
@ -193,7 +194,14 @@ module Rails::Generators
end
def app_const
@app_const ||= "#{app_name.classify}::Application"
@app_const ||= "#{app_name.gsub(/\W/, '_').squeeze('_').classify}::Application"
end
def valid_app_const?
case app_const
when /^\d/
raise Error, "Invalid application name #{app_name}. Please give a name which does not start with numbers."
end
end
def app_secret

View File

@ -53,6 +53,16 @@ class AppGeneratorTest < GeneratorsTestCase
assert_match /Invalid value for \-\-database option/, content
end
def test_invalid_application_name_raises_an_error
content = capture(:stderr){ Rails::Generators::AppGenerator.start [File.join(destination_root, "43-things")] }
assert_equal "Invalid application name 43-things. Please give a name which does not start with numbers.\n", content
end
def test_invalid_application_name_is_fixed
silence(:stdout){ Rails::Generators::AppGenerator.start [File.join(destination_root, "things-43")] }
assert_file "things-43/config/environment.rb", /Things43::Application/
end
def test_config_database_is_added_by_default
run_generator
assert_file "config/database.yml", /sqlite3/