mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
110 lines
3.1 KiB
Ruby
110 lines
3.1 KiB
Ruby
require 'utils'
|
|
require 'capistrano/configuration/alias_task'
|
|
require 'capistrano/configuration/execution'
|
|
require 'capistrano/configuration/namespaces'
|
|
require 'capistrano/task_definition'
|
|
|
|
class AliasTaskTest < Test::Unit::TestCase
|
|
class MockConfig
|
|
attr_reader :options
|
|
attr_accessor :logger
|
|
|
|
def initialize(options={})
|
|
@options = {}
|
|
@logger = options.delete(:logger)
|
|
end
|
|
|
|
include Capistrano::Configuration::AliasTask
|
|
include Capistrano::Configuration::Execution
|
|
include Capistrano::Configuration::Namespaces
|
|
end
|
|
|
|
def setup
|
|
@config = MockConfig.new( :logger => stub(:debug => nil, :info => nil, :important => nil) )
|
|
end
|
|
|
|
def test_makes_a_copy_of_the_task
|
|
@config.task(:foo) { 42 }
|
|
@config.alias_task 'new_foo', 'foo'
|
|
|
|
assert @config.tasks.key?(:new_foo)
|
|
end
|
|
|
|
def test_aliased_task_do_the_same
|
|
@config.task(:foo) { 42 }
|
|
@config.alias_task 'new_foo', 'foo'
|
|
|
|
assert_equal 42, @config.find_and_execute_task('new_foo')
|
|
end
|
|
|
|
def test_aliased_task_should_preserve_description
|
|
@config.task(:foo, :desc => "the Ultimate Question of Life, the Universe, and Everything" ) { 42 }
|
|
@config.alias_task 'new_foo', 'foo'
|
|
|
|
task = @config.find_task('foo')
|
|
new_task = @config.find_task('new_foo')
|
|
|
|
assert_equal task.description, new_task.description
|
|
end
|
|
|
|
def test_aliased_task_should_preserve_on_error
|
|
@config.task(:foo, :on_error => :continue) { 42 }
|
|
@config.alias_task 'new_foo', 'foo'
|
|
|
|
task = @config.find_task('foo')
|
|
new_task = @config.find_task('new_foo')
|
|
|
|
assert_equal task.on_error, new_task.on_error
|
|
end
|
|
|
|
def test_aliased_task_should_preserve_max_hosts
|
|
@config.task(:foo, :max_hosts => 5) { 42 }
|
|
@config.alias_task 'new_foo', 'foo'
|
|
|
|
task = @config.find_task('foo')
|
|
new_task = @config.find_task('new_foo')
|
|
|
|
assert_equal task.max_hosts, new_task.max_hosts
|
|
end
|
|
|
|
def test_raise_exception_when_task_doesnt_exist
|
|
assert_raises(Capistrano::NoSuchTaskError) { @config.alias_task 'non_existant_task', 'fail_miserably' }
|
|
end
|
|
|
|
def test_convert_task_names_using_to_str
|
|
@config.task(:foo, :role => :app) { 42 }
|
|
|
|
@config.alias_task 'one', 'foo'
|
|
@config.alias_task :two, 'foo'
|
|
@config.alias_task 'three', :foo
|
|
@config.alias_task :four, :foo
|
|
|
|
assert @config.tasks.key?(:one)
|
|
assert @config.tasks.key?(:two)
|
|
assert @config.tasks.key?(:three)
|
|
assert @config.tasks.key?(:four)
|
|
end
|
|
|
|
def test_raise_an_exception_when_task_names_can_not_be_converted
|
|
@config.task(:foo, :role => :app) { 42 }
|
|
|
|
assert_raises(ArgumentError) { @config.alias_task mock('x'), :foo }
|
|
end
|
|
|
|
def test_should_include_namespace
|
|
@config.namespace(:outer) do
|
|
task(:foo) { 42 }
|
|
alias_task 'new_foo', 'foo'
|
|
|
|
namespace(:inner) do
|
|
task(:foo) { 43 }
|
|
alias_task 'new_foo', 'foo'
|
|
end
|
|
end
|
|
|
|
assert_equal 42, @config.find_and_execute_task('outer:new_foo')
|
|
assert_equal 42, @config.find_and_execute_task('outer:foo')
|
|
assert_equal 43, @config.find_and_execute_task('outer:inner:new_foo')
|
|
assert_equal 43, @config.find_and_execute_task('outer:inner:foo')
|
|
end
|
|
end
|