use strict;
use warnings;
use Test::More tests => 6;
use Rex::Args;
use Rex::RunList;
use Rex::Commands;
use Rex::CLI;
use Rex::Transaction;
BEGIN {
use Rex::Shared::Var;
share qw(%opt_t1 %opt_t2 %opt_t3);
}
$::QUIET = 1;
$::rexfile = "noop";
task task1 => sub { };
task task2 => sub { };
task task3 => sub { };
before task1 => sub {
%opt_t1 = Rex::Args->get;
};
before task2 => sub {
%opt_t2 = Rex::Args->get;
};
before task3 => sub {
%opt_t3 = Rex::Args->get;
};
@ARGV = qw(task1 task2 task3 --name=thename --num=5 --hey=what);
my $run_list = Rex::RunList->instance;
$run_list->parse_opts(@ARGV);
$run_list->run_tasks;
is_deeply(
{
name => "thename",
task2 => 1,
num => 5,
task1 => 1,
hey => "what",
task3 => 1,
},
\%opt_t1,
"got task1 parameter with pre 1.4 compatibility"
);
is_deeply(
{
name => "thename",
task2 => 1,
num => 5,
task1 => 1,
hey => "what",
task3 => 1,
},
\%opt_t2,
"got task2 parameter with pre 1.4 compatibility"
);
is_deeply(
{
name => "thename",
task2 => 1,
num => 5,
task1 => 1,
hey => "what",
task3 => 1,
},
\%opt_t3,
"got task3 parameter with pre 1.4 compatibility"
);
Rex::Config->set_task_chaining_cmdline_args(1);
@ARGV = qw(task1 arg1 arg2 --name=thename --num=5 task2 arg task3 --hey=what);
$run_list = Rex::RunList->instance;
$run_list->parse_opts(@ARGV);
$run_list->run_tasks;
is_deeply(
{
name => "thename",
num => 5,
},
\%opt_t1,
"got task1 parameter with 1.4 compatibility"
);
is_deeply( {}, \%opt_t2, "got task2 parameter with 1.4 compatibility" );
is_deeply(
{
hey => "what",
},
\%opt_t3,
"got task3 parameter with 1.4 compatibility"
);