Complete-Program

 view release on metacpan or  search on metacpan

t/complete_program.t  view on Meta::CPAN

#!perl

use 5.010;
use strict;
use warnings;

use File::Slurper qw(write_text);
use File::Temp qw(tempdir);
use Filesys::Cap qw(fs_is_cs);
use Test::More 0.98;
use Complete::Program qw(complete_program);

sub mkexe { write_text($_[0], ""); chmod 0755, $_[0] }

local $Complete::Common::OPT_CI = 0;
local $Complete::Common::OPT_MAP_CASE = 0;
local $Complete::Common::OPT_FUZZY = 0;

my $dir = tempdir(CLEANUP=>1);
mkdir("$dir/dir1");
mkdir("$dir/dir2");
mkexe("$dir/dir1/prog1.bat");
mkexe("$dir/dir1/prog2.bat");
mkexe("$dir/dir2/prog3.bat");

subtest "unix/colon-separated PATH" => sub {
    local $^O = 'linux';
    plan skip_all => 'tempdir contains colon' if $dir =~ /:/;

    local $ENV{PATH} = "$dir/dir1:$dir/dir2";
    is_deeply(complete_program(word=>"prog"), ["prog1.bat","prog2.bat","prog3.bat"]);
    is_deeply(complete_program(word=>"prog3"), ["prog3.bat"]);
    is_deeply(complete_program(word=>"prog9"), []);
};

subtest "win/semicolon-separated PATH" => sub {
    local $^O = 'MSWin32';
    plan skip_all => 'tempdir contains semicolon' if $dir =~ /;/;

    local $ENV{PATH} = "$dir/dir1;$dir/dir2";
    is_deeply(complete_program(word=>"prog"), ["prog1.bat","prog2.bat","prog3.bat"]);
    is_deeply(complete_program(word=>"prog3"), ["prog3.bat"]);
    is_deeply(complete_program(word=>"prog9"), []);
};

done_testing;



( run in 0.772 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )