1
0
Fork 0
mirror of https://github.com/capistrano/capistrano synced 2023-03-27 23:21:18 -04:00

Merge pull request #1516 from thickpaddy/fix_namespaced_after_task_invocation

Fix post task lookup in TaskEnhancements#after
This commit is contained in:
Lee Hambley 2015-10-28 14:41:34 +01:00
commit fabb37fb75
3 changed files with 24 additions and 2 deletions

View file

@ -27,6 +27,7 @@ https://github.com/capistrano/capistrano/compare/v3.4.0...HEAD
instead of `Capfile`. (@mattbrictson) instead of `Capfile`. (@mattbrictson)
* Return first 12 characters (instead of 7) of SHA1 hash when determining current git revision (@sds) * Return first 12 characters (instead of 7) of SHA1 hash when determining current git revision (@sds)
* Clean up rubocop lint warnings (@cshaffer) * Clean up rubocop lint warnings (@cshaffer)
* Ensure task invocation within after hooks is namespace aware (@thickpaddy)
## `3.4.0` ## `3.4.0`

View file

@ -9,8 +9,9 @@ module Capistrano
def after(task, post_task, *args, &block) def after(task, post_task, *args, &block)
Rake::Task.define_task(post_task, *args, &block) if block_given? Rake::Task.define_task(post_task, *args, &block) if block_given?
Rake::Task[task].enhance do task = Rake::Task[task]
Rake::Task[post_task].invoke task.enhance do
Rake.application.lookup(post_task, task.scope).invoke
end end
end end

View file

@ -80,6 +80,26 @@ module Capistrano
expect(order).to eq(['before_task', 'task', 'after_task']) expect(order).to eq(['before_task', 'task', 'after_task'])
end end
it "invokes using the correct namespace when defined within a namespace" do
Rake.application.in_namespace('namespace') {
Rake::Task.define_task('task') do |t|
order.push(t.name)
end
task_enhancements.before('task', 'before_task', :order) do |t|
order.push(t.name)
end
task_enhancements.after('task', 'after_task', :order) do |t|
order.push(t.name)
end
}
Rake::Task['namespace:task'].invoke
expect(order).to eq(
['namespace:before_task', 'namespace:task', 'namespace:after_task']
)
end
end end
describe 'remote_file' do describe 'remote_file' do