mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
97 lines
3.6 KiB
Perl
97 lines
3.6 KiB
Perl
use strict;
|
|
use warnings;
|
|
use Test2::V0;
|
|
use Test2::Tools::Compare qw{is like match};
|
|
use FindBin;
|
|
use lib "$FindBin::RealBin/../../../src";
|
|
use centreon::plugins::misc;
|
|
use centreon::plugins::output;
|
|
use centreon::plugins::options;
|
|
# in real world one should use execute(), but as many options are not supported by windows_execute,
|
|
# the signature is not coherent, and we want to test everything on this unix_execute()
|
|
sub test_unix_execute {
|
|
my $mock_output = mock 'centreon::plugins::output'; # this is from Test2::Tools::Mock, included by Test2::V0
|
|
|
|
my $option = centreon::plugins::options->new();
|
|
my $output = centreon::plugins::output->new(options => $option);
|
|
|
|
my @tests = (
|
|
{
|
|
expect => '"string to" output "$( echo noworking)"',
|
|
msg => 'double quote stay when no interpretation',
|
|
args => {
|
|
command_path => "/bin",
|
|
command => 'echo',
|
|
command_options => '"string to" output "$( echo noworking)"',
|
|
no_shell_interpretation => 1,
|
|
}
|
|
},
|
|
{
|
|
expect => 'string to output noworking',
|
|
msg => 'double quote diseapear when interpretation is enabled',
|
|
args => {
|
|
command_path => "/bin",
|
|
command => 'echo',
|
|
command_options => '"string to" output "$( echo noworking)"',
|
|
}
|
|
},
|
|
{
|
|
expect => 'stringToOutput adding',
|
|
msg => 'interpretation by default active',
|
|
args => {
|
|
command => 'echo stringToOutput $(echo adding)',
|
|
}
|
|
},
|
|
{
|
|
expect => 'stringToOutput $(echo adding)',
|
|
msg => 'interpretation by default active',
|
|
args => {
|
|
command => 'echo stringToOutput $(echo adding)',
|
|
no_shell_interpretation => 1,
|
|
}
|
|
},
|
|
{
|
|
expect => '',
|
|
msg => "no error when no argument given to command without interpolation",
|
|
args => {
|
|
command => 'echo',
|
|
no_shell_interpretation => 1,
|
|
}
|
|
}
|
|
|
|
);
|
|
for my $test (@tests) {
|
|
my ($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
|
|
output => $output,
|
|
options => { timeout => 10 },
|
|
no_quit => 1,
|
|
%{$test->{args}},
|
|
);
|
|
is($stdout, $test->{expect}, $test->{msg});
|
|
}
|
|
|
|
my ($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
|
|
output => $output,
|
|
options => { timeout => 10 },
|
|
command => 'NoBinary',
|
|
command_output => '"string to" output "$( echo noworking)"',
|
|
no_shell_interpretation => 1,
|
|
no_quit => 1
|
|
);
|
|
like($stdout, qr/Can't exec "NoBinary": No such file or directory at.*/, 'no_quit option always return');
|
|
($stdout, $exit_code) = centreon::plugins::misc::unix_execute(
|
|
output => $output,
|
|
options => { timeout => 10 },
|
|
sudo => 1,
|
|
command => 'NoBinary',
|
|
command_output => '"string to" output "$( echo noworking)"',
|
|
no_shell_interpretation => 1,
|
|
no_quit => 1
|
|
);
|
|
like($stdout, qr/Can't exec "sudo": No such file or directory at.*/, 'sudo option add sudo binary before command');
|
|
|
|
}
|
|
|
|
test_unix_execute();
|
|
done_testing();
|