Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
5b8fe9c4
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5b8fe9c4
编写于
6月 19, 2009
作者:
J
José Valim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Moving tests to new generators schema.
上级
9dd1e2f2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
187 addition
and
208 deletion
+187
-208
railties/lib/generator/actions.rb
railties/lib/generator/actions.rb
+2
-2
railties/test/generator/actions_test.rb
railties/test/generator/actions_test.rb
+172
-205
railties/test/generator/generator_test_helper.rb
railties/test/generator/generator_test_helper.rb
+13
-1
未找到文件。
railties/lib/generator/actions.rb
浏览文件 @
5b8fe9c4
...
...
@@ -264,8 +264,8 @@ def route(routing_code)
# Define file as an alias to create_file for backwards compatibility.
#
def
file
(
*
args
)
create_file
(
*
args
)
def
file
(
*
args
,
&
block
)
create_file
(
*
args
,
&
block
)
end
# Define log for backwards compatibility. If just one argument is sent,
...
...
railties/test/generator/actions_test.rb
浏览文件 @
5b8fe9c4
require
'abstract_unit'
require
'generator/generator_test_helper'
class
RailsTemplateRunner
Test
<
GeneratorTestCase
class
Actions
Test
<
GeneratorTestCase
def
setup
super
capture
(
:stdout
)
{
Rails
::
Generators
::
App
.
start
[
destination_root
]
}
@git_plugin_uri
=
'git://github.com/technoweenie/restful-authentication.git'
@svn_plugin_uri
=
'svn://svnhub.com/technoweenie/restful-authentication/trunk'
end
def
teardown
super
def
test_apply_loads_a_template_and_evaluates_it
template
=
<<-
TEMPLATE
@foo = "FOO"
TEMPLATE
template
.
instance_eval
"def read; self; end"
# Make the string respond to read
generator
.
expects
(
:open
).
with
(
"http://gist.github.com/103208.txt"
).
returns
(
template
)
action
:apply
,
"http://gist.github.com/103208.txt"
assert_equal
generator
.
instance_variable_get
(
"@foo"
),
"FOO"
end
def
test_file_should_write_data_to_file_path
action
:file
,
'lib/test_file.rb'
,
'heres test data'
assert_file
'lib/test_file.rb'
,
'heres test data'
end
def
test_file_should_write_block_contents_to_file_path
action
(
:file
,
'lib/test_file.rb'
){
'heres block data'
}
assert_file
'lib/test_file.rb'
,
'heres block data'
end
def
test_plugin_with_git_option_should_run_plugin_install
generator
.
expects
(
:run
).
once
.
with
(
"ruby script/plugin install
#{
@git_plugin_uri
}
"
,
false
)
action
:plugin
,
'restful-authentication'
,
:git
=>
@git_plugin_uri
end
def
test_plugin_with_svn_option_should_run_plugin_install
generator
.
expects
(
:run
).
once
.
with
(
"ruby script/plugin install
#{
@svn_plugin_uri
}
"
,
false
)
action
:plugin
,
'restful-authentication'
,
:svn
=>
@svn_plugin_uri
end
def
test_plugin_with_git_option_and_submodule_should_use_git_scm
generator
.
expects
(
:run
).
with
(
"git submodule add
#{
@git_plugin_uri
}
vendor/plugins/rest_auth"
,
false
)
action
:plugin
,
'rest_auth'
,
:git
=>
@git_plugin_uri
,
:submodule
=>
true
end
def
test_plugin_with_no_options_should_skip_method
generator
.
expects
(
:run
).
never
action
:plugin
,
'rest_auth'
,
{}
end
def
test_gem_should_put_gem_dependency_in_enviroment
run_generator
action
:gem
,
'will-paginate'
assert_file
'config/environment.rb'
,
/config\.gem 'will\-paginate'/
end
def
test_gem_with_options_should_include_options_in_gem_dependency_in_environment
run_generator
action
:gem
,
'mislav-will-paginate'
,
:lib
=>
'will-paginate'
,
:source
=>
'http://gems.github.com'
regexp
=
/
#{
Regexp
.
escape
(
"config.gem 'mislav-will-paginate', :lib => 'will-paginate', :source => 'http://gems.github.com'"
)
}
/
assert_file
'config/environment.rb'
,
regexp
end
def
test_gem_with_env_string_should_put_gem_dependency_in_specified_environment
run_generator
action
:gem
,
'rspec'
,
:env
=>
'test'
assert_file
'config/environments/test.rb'
,
/config\.gem 'rspec'/
end
def
test_gem_with_env_array_should_put_gem_dependency_in_specified_environments
run_generator
action
:gem
,
'quietbacktrace'
,
:env
=>
%w[ development test ]
assert_file
'config/environments/development.rb'
,
/config\.gem 'quietbacktrace'/
assert_file
'config/environments/test.rb'
,
/config\.gem 'quietbacktrace'/
end
def
test_gem_with_lib_option_set_to_false_should_put_gem_dependency_in_enviroment_correctly
run_generator
action
:gem
,
'mislav-will-paginate'
,
:lib
=>
false
assert_file
'config/environment.rb'
,
/config\.gem 'mislav\-will\-paginate'\, :lib => false/
end
def
test_environment_should_include_data_in_environment_initializer_block
run_generator
load_paths
=
'config.load_paths += %w["#{RAILS_ROOT}/app/extras"]'
action
:environment
,
load_paths
assert_file
'config/environment.rb'
,
/
#{
Regexp
.
escape
(
load_paths
)
}
/
end
def
test_environment_with_block_should_include_block_contents_in_environment_initializer_block
run_generator
action
:environment
do
'# This wont be added'
'# This will be added'
end
assert_file
'config/environment.rb'
,
/# This will be added/
end
def
test_git_with_symbol_should_run_command_using_git_scm
generator
.
expects
(
:run
).
once
.
with
(
'git init'
)
action
:git
,
:init
end
def
test_git_with_hash_should_run_each_command_using_git_scm
generator
.
expects
(
:run
).
times
(
2
)
action
:git
,
:rm
=>
'README'
,
:add
=>
'.'
end
def
test_vendor_should_write_data_to_file_in_vendor
action
:vendor
,
'vendor_file.rb'
,
'# vendor data'
assert_file
'vendor/vendor_file.rb'
,
'# vendor data'
end
def
test_lib_should_write_data_to_file_in_lib
action
:lib
,
'my_library.rb'
,
'class MyLibrary'
assert_file
'lib/my_library.rb'
,
'class MyLibrary'
end
def
test_rakefile_should_write_date_to_file_in_lib_tasks
action
:rakefile
,
'myapp.rake'
,
'task :run => [:environment]'
assert_file
'lib/tasks/myapp.rake'
,
'task :run => [:environment]'
end
def
test_initializer_should_write_date_to_file_in_config_initializers
action
:initializer
,
'constants.rb'
,
'MY_CONSTANT = 42'
assert_file
'config/initializers/constants.rb'
,
'MY_CONSTANT = 42'
end
def
test_generate_should_run_script_generate_with_argument_and_options
generator
.
expects
(
:run
).
once
.
with
(
'ruby script/generate model MyModel'
,
false
)
action
:generate
,
'model'
,
'MyModel'
end
# def teardown
# super
# rm_rf "#{RAILS_ROOT}/README"
# rm_rf "#{RAILS_ROOT}/Rakefile"
# rm_rf "#{RAILS_ROOT}/doc"
# rm_rf "#{RAILS_ROOT}/lib"
# rm_rf "#{RAILS_ROOT}/log"
# rm_rf "#{RAILS_ROOT}/script"
# rm_rf "#{RAILS_ROOT}/vendor"
# rm_rf "#{RAILS_ROOT}/tmp"
# rm_rf "#{RAILS_ROOT}/Capfile"
# rm_rf @template_path
# end
# def test_initialize_should_load_template
# Rails::TemplateRunner.any_instance.expects(:load_template).with(@template_path)
# silence_generator do
# Rails::TemplateRunner.new(@template_path, RAILS_ROOT)
# end
# end
# def test_initialize_should_raise_error_on_missing_template_file
# assert_raise(RuntimeError) do
# silence_generator do
# Rails::TemplateRunner.new('non/existent/path/to/template.rb', RAILS_ROOT)
# end
# end
# end
# def test_file_should_write_data_to_file_path
# run_template_method(:file, 'lib/test_file.rb', 'heres test data')
# assert_generated_file_with_data 'lib/test_file.rb', 'heres test data'
# end
# def test_file_should_write_block_contents_to_file_path
# run_template_method(:file, 'lib/test_file.rb') { 'heres block data' }
# assert_generated_file_with_data 'lib/test_file.rb', 'heres block data'
# end
# def test_plugin_with_git_option_should_run_plugin_install
# expects_run_ruby_script_with_command("script/plugin install #{@git_plugin_uri}")
# run_template_method(:plugin, 'restful-authentication', :git => @git_plugin_uri)
# end
# def test_plugin_with_svn_option_should_run_plugin_install
# expects_run_ruby_script_with_command("script/plugin install #{@svn_plugin_uri}")
# run_template_method(:plugin, 'restful-authentication', :svn => @svn_plugin_uri)
# end
# def test_plugin_with_git_option_and_submodule_should_use_git_scm
# Rails::Git.expects(:run).with("submodule add #{@git_plugin_uri} vendor/plugins/rest_auth")
# run_template_method(:plugin, 'rest_auth', :git => @git_plugin_uri, :submodule => true)
# end
# def test_plugin_with_no_options_should_skip_method
# Rails::TemplateRunner.any_instance.expects(:run).never
# run_template_method(:plugin, 'rest_auth', {})
# end
# def test_gem_should_put_gem_dependency_in_enviroment
# run_template_method(:gem, 'will-paginate')
# assert_rails_initializer_includes("config.gem 'will-paginate'")
# end
# def test_gem_with_options_should_include_options_in_gem_dependency_in_environment
# run_template_method(:gem, 'mislav-will-paginate', :lib => 'will-paginate', :source => 'http://gems.github.com')
# assert_rails_initializer_includes("config.gem 'mislav-will-paginate', :lib => 'will-paginate', :source => 'http://gems.github.com'")
# end
# def test_gem_with_env_string_should_put_gem_dependency_in_specified_environment
# run_template_method(:gem, 'rspec', :env => 'test')
# assert_generated_file_with_data('config/environments/test.rb', "config.gem 'rspec'", 'test')
# end
# def test_gem_with_env_array_should_put_gem_dependency_in_specified_environments
# run_template_method(:gem, 'quietbacktrace', :env => %w[ development test ])
# assert_generated_file_with_data('config/environments/development.rb', "config.gem 'quietbacktrace'")
# assert_generated_file_with_data('config/environments/test.rb', "config.gem 'quietbacktrace'")
# end
# def test_gem_with_lib_option_set_to_false_should_put_gem_dependency_in_enviroment_correctly
# run_template_method(:gem, 'mislav-will-paginate', :lib => false, :source => 'http://gems.github.com')
# assert_rails_initializer_includes("config.gem 'mislav-will-paginate', :lib => false, :source => 'http://gems.github.com'")
# end
# def test_environment_should_include_data_in_environment_initializer_block
# load_paths = 'config.load_paths += %w["#{RAILS_ROOT}/app/extras"]'
# run_template_method(:environment, load_paths)
# assert_rails_initializer_includes(load_paths)
# end
# def test_environment_with_block_should_include_block_contents_in_environment_initializer_block
# run_template_method(:environment) do
# '# This wont be added'
# '# This will be added'
# end
# assert_rails_initializer_includes('# This will be added')
# end
# def test_git_with_symbol_should_run_command_using_git_scm
# Rails::Git.expects(:run).once.with('init')
# run_template_method(:git, :init)
# end
# def test_git_with_hash_should_run_each_command_using_git_scm
# Rails::Git.expects(:run).times(2)
# run_template_method(:git, {:init => '', :add => '.'})
# end
# def test_vendor_should_write_data_to_file_in_vendor
# run_template_method(:vendor, 'vendor_file.rb', '# vendor data')
# assert_generated_file_with_data('vendor/vendor_file.rb', '# vendor data')
# end
# def test_lib_should_write_data_to_file_in_lib
# run_template_method(:lib, 'my_library.rb', 'class MyLibrary')
# assert_generated_file_with_data('lib/my_library.rb', 'class MyLibrary')
# end
# def test_rakefile_should_write_date_to_file_in_lib_tasks
# run_template_method(:rakefile, 'myapp.rake', 'task :run => [:environment]')
# assert_generated_file_with_data('lib/tasks/myapp.rake', 'task :run => [:environment]')
# end
# def test_initializer_should_write_date_to_file_in_config_initializers
# run_template_method(:initializer, 'constants.rb', 'MY_CONSTANT = 42')
# assert_generated_file_with_data('config/initializers/constants.rb', 'MY_CONSTANT = 42')
# end
# def test_generate_should_run_script_generate_with_argument_and_options
# expects_run_ruby_script_with_command('script/generate model MyModel')
# run_template_method(:generate, 'model', 'MyModel')
# end
# def test_rake_should_run_rake_command_with_development_env
# expects_run_with_command('rake log:clear RAILS_ENV=development')
# run_template_method(:rake, 'log:clear')
# end
# def test_rake_with_env_option_should_run_rake_command_in_env
# expects_run_with_command('rake log:clear RAILS_ENV=production')
# run_template_method(:rake, 'log:clear', :env => 'production')
# end
# def test_rake_with_sudo_option_should_run_rake_command_with_sudo
# expects_run_with_command('sudo rake log:clear RAILS_ENV=development')
# run_template_method(:rake, 'log:clear', :sudo => true)
# end
# def test_capify_should_run_the_capify_command
# expects_run_with_command('capify .')
# run_template_method(:capify!)
# end
# def test_freeze_should_freeze_rails_edge
# expects_run_with_command('rake rails:freeze:edge')
# run_template_method(:freeze!)
# end
# def test_route_should_add_data_to_the_routes_block_in_config_routes
# route_command = "map.route '/login', :controller => 'sessions', :action => 'new'"
# run_template_method(:route, route_command)
# assert_generated_file_with_data 'config/routes.rb', route_command
# end
# def test_run_ruby_script_should_add_ruby_to_command_in_win32_environment
# ruby_command = RUBY_PLATFORM =~ /win32/ ? 'ruby ' : ''
# expects_run_with_command("#{ruby_command}script/generate model MyModel")
# run_template_method(:generate, 'model', 'MyModel')
# end
# protected
# def run_template_method(method_name, *args, &block)
# silence_generator do
# @template_runner = Rails::TemplateRunner.new(@template_path, RAILS_ROOT)
# @template_runner.send(method_name, *args, &block)
# end
# end
# def expects_run_with_command(command)
# Rails::TemplateRunner.any_instance.stubs(:run).once.with(command, false)
# end
# def expects_run_ruby_script_with_command(command)
# Rails::TemplateRunner.any_instance.stubs(:run_ruby_script).once.with(command,false)
# end
# def assert_rails_initializer_includes(data, message = nil)
# message ||= "Rails::Initializer should include #{data}"
# assert_generated_file 'config/environment.rb' do |body|
# assert_match(/#{Regexp.escape("Rails::Initializer.run do |config|")}.+#{Regexp.escape(data)}.+end/m, body, message)
# end
# end
# def assert_generated_file_with_data(file, data, message = nil)
# message ||= "#{file} should include '#{data}'"
# assert_generated_file(file) do |file|
# assert_match(/#{Regexp.escape(data)}/,file, message)
# end
# end
def
test_rake_should_run_rake_command_with_development_env
generator
.
expects
(
:run
).
once
.
with
(
'rake log:clear RAILS_ENV=development'
,
false
)
action
:rake
,
'log:clear'
end
def
test_rake_with_env_option_should_run_rake_command_in_env
generator
.
expects
(
:run
).
once
.
with
(
'rake log:clear RAILS_ENV=production'
,
false
)
action
:rake
,
'log:clear'
,
:env
=>
'production'
end
def
test_rake_with_sudo_option_should_run_rake_command_with_sudo
generator
.
expects
(
:run
).
once
.
with
(
'sudo rake log:clear RAILS_ENV=development'
,
false
)
action
:rake
,
'log:clear'
,
:sudo
=>
true
end
def
test_capify_should_run_the_capify_command
generator
.
expects
(
:run
).
once
.
with
(
'capify .'
,
false
)
action
:capify!
end
def
test_freeze_should_freeze_rails_edge
generator
.
expects
(
:run
).
once
.
with
(
'rake rails:freeze:edge'
,
false
)
action
:freeze!
end
def
test_route_should_add_data_to_the_routes_block_in_config_routes
run_generator
route_command
=
"map.route '/login', :controller => 'sessions', :action => 'new'"
action
:route
,
route_command
assert_file
'config/routes.rb'
,
/
#{
Regexp
.
escape
(
route_command
)
}
/
end
protected
def
run_generator
silence
(
:stdout
)
{
Rails
::
Generators
::
App
.
start
[
destination_root
]
}
end
def
generator
(
config
=
{})
@generator
||=
Rails
::
Generators
::
Base
.
new
([],
{},
{
:root
=>
destination_root
}.
merge!
(
config
))
end
def
action
(
*
args
,
&
block
)
silence
(
:stdout
){
generator
.
send
(
*
args
,
&
block
)
}
end
end
railties/test/generator/generator_test_helper.rb
浏览文件 @
5b8fe9c4
...
...
@@ -10,7 +10,7 @@ class GeneratorTestCase < Test::Unit::TestCase
include
FileUtils
def
destination_root
"
#{
File
.
dirname
(
__FILE__
)
}
/../fixtures/tmp"
@destinartion_root
||=
File
.
expand_path
(
"
#{
File
.
dirname
(
__FILE__
)
}
/../fixtures/tmp"
)
end
def
setup
...
...
@@ -35,4 +35,16 @@ def capture(stream)
result
end
alias
:silence
:capture
def
assert_file
(
relative
,
content
=
nil
)
absolute
=
File
.
join
(
destination_root
,
relative
)
assert
File
.
exists?
(
absolute
)
case
content
when
String
assert_equal
content
,
File
.
read
(
absolute
)
when
Regexp
assert_match
content
,
File
.
read
(
absolute
)
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录