Assert for valid application names. [#3556 status:resolved]
This commit is contained in:
parent
6716e4bc0c
commit
e88ea3255f
|
@ -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
|
||||
|
|
|
@ -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/
|
||||
|
|
Loading…
Reference in New Issue