From 4b70330d6afd82135237de6b7ccb3fedbb243be3 Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Mon, 7 Dec 2015 23:41:41 -0500 Subject: [PATCH] Don't include do_task() results in the summary --- lib/Rex/Commands.pm | 14 ++++++-------- lib/Rex/Fork/Task.pm | 2 +- lib/Rex/Task.pm | 8 ++++++++ lib/Rex/TaskList/Parallel_ForkManager.pm | 2 +- t/summary.t | 15 +++++++++++---- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/Rex/Commands.pm b/lib/Rex/Commands.pm index 39786d119..b6f51f81b 100644 --- a/lib/Rex/Commands.pm +++ b/lib/Rex/Commands.pm @@ -690,15 +690,13 @@ You may also use an arrayRef for $task if you want to call multiple tasks. =cut sub do_task { - my $task = shift; + my $thing = shift; + my @tasks = ref $thing ? @$thing : $thing; + my $current_task = task(); - if ( ref($task) eq "ARRAY" ) { - for my $t ( @{$task} ) { - Rex::TaskList->run($t); - } - } - else { - return Rex::TaskList->run($task); + for my $task (@tasks) { + $task->parent($current_task); + Rex::TaskList->run($task); } } diff --git a/lib/Rex/Fork/Task.pm b/lib/Rex/Fork/Task.pm index 5a79fe72a..2c1cfe53e 100644 --- a/lib/Rex/Fork/Task.pm +++ b/lib/Rex/Fork/Task.pm @@ -43,7 +43,7 @@ sub start { task => $self->{task}->name, server => $self->{server}, exit_code => $exit_code, - }; + } unless $self->{task}->parent; $self->{'running'} = 0; exit(); diff --git a/lib/Rex/Task.pm b/lib/Rex/Task.pm index 8c288f9f4..1ef985119 100644 --- a/lib/Rex/Task.pm +++ b/lib/Rex/Task.pm @@ -723,6 +723,7 @@ sub get_data { connection_type => $self->{connection_type}, opts => $self->{opts}, args => $self->{args}, + parent => $self->{parent}, }; } @@ -952,4 +953,11 @@ sub clone { return Rex::Task->new( %{ $self->get_data } ); } +sub parent { + my ($self, $parent) = @_; + $self->{parent} = $parent if $parent; + return $self->{parent}; + +} + 1; diff --git a/lib/Rex/TaskList/Parallel_ForkManager.pm b/lib/Rex/TaskList/Parallel_ForkManager.pm index 861e8f4b0..358f6472e 100644 --- a/lib/Rex/TaskList/Parallel_ForkManager.pm +++ b/lib/Rex/TaskList/Parallel_ForkManager.pm @@ -91,7 +91,7 @@ sub run { task => $task_name, server => $server->to_s, exit_code => $exit_code, - }; + } unless $task->parent; $fm->finish; } diff --git a/t/summary.t b/t/summary.t index 2434d5989..622ff40c8 100644 --- a/t/summary.t +++ b/t/summary.t @@ -21,6 +21,7 @@ subtest "distributor => 'Base'" => sub { task1 => { server => '', task => 'task1', exit_code => 0 }, task2 => { server => '', task => 'task2', exit_code => 0 }, task3 => { server => '', task => 'task3', exit_code => 1 }, + task4 => { server => '', task => 'task4', exit_code => 1 }, ); }; @@ -32,6 +33,7 @@ subtest "distributor => 'Base'" => sub { task1 => { server => '', task => 'task1', exit_code => 2 }, task2 => { server => '', task => 'task2', exit_code => 0 }, task3 => { server => '', task => 'task3', exit_code => 1 }, + task4 => { server => '', task => 'task4', exit_code => 1 }, ); }; }; @@ -49,6 +51,7 @@ SKIP: { task1 => { server => '', task => 'task1', exit_code => 0 }, task2 => { server => '', task => 'task2', exit_code => 0 }, task3 => { server => '', task => 'task3', exit_code => 1 }, + task4 => { server => '', task => 'task4', exit_code => 1 }, ); }; @@ -60,6 +63,7 @@ SKIP: { task1 => { server => '', task => 'task1', exit_code => 2 }, task2 => { server => '', task => 'task2', exit_code => 0 }, task3 => { server => '', task => 'task3', exit_code => 1 }, + task4 => { server => '', task => 'task4', exit_code => 1 }, ); }; }; @@ -83,11 +87,14 @@ sub create_tasks { run $cmd; }; - desc "desc 3"; + desc "desc 3"; # test do_task() in a transaction task "task3" => sub { - transaction { - do_task qw/task0/; - }; + transaction { do_task qw/task0/ }; + }; + + desc "desc 4"; # test do_task() + task "task4" => sub { + do_task qw/task0/; }; }