Wheeep!  Yes, it's an issue.  I'll fix it right away.

alex


On Mon, Mar 15, 2010 at 10:10 AM, Pepijn Van Eeckhoudt <
[email protected]> wrote:

> I'm bumping into unpredictable behaviour related to the call chain
> handling. It seems invoke_with_call_chain doesn't restore the call chain
> correctly after calling invoke. Since this is in the core of buildr I wanted
> to just check with you guys before creating an issue in jira.
>
> invoke_with_call_chain currently does
> begin
>  old_chain, Thread.current[:rake_chain] = Thread.current[:rake_chain],
> new_chain
>  execute(task_args) if needed?
> ensure
>  Thread.current[:rake_chain] = nil
> end
>
> The ensure block seems obviously incorrect. Shouldn't this be
> Thread.current[:rake_chain] = old_chain?
>
> The following spec shows when this causes things to go wrong:
> describe Buildr do
>  it 'should restore call chain when invoke is called' do
>    task1 = Rake::Task.define_task('task1') do
>    end
>
>    task2 = Rake::Task.define_task('task2') do
>      chain1 = Thread.current[:rake_chain]
>      task1.invoke
>      chain2 = Thread.current[:rake_chain]
>      chain2.should == chain1
>    end
>
>    task2.invoke
>  end
> end
>
> So is this an issue or intentional?
>
> Regards,
>
> Pepijn
>

Reply via email to