1use strict; 2use warnings; 3use GPS::Babel; 4use Test::More tests => 12; 5 6my $DUMMY_EXE = 'not-the-real-gpsbabel'; 7our $exe_name = $DUMMY_EXE; 8 9# Fake system 10{ 11 12 package GSP::Babel; 13 14 use subs qw(which); 15 no warnings qw(redefine once); 16 17 package main; 18 19 *GPS::Babel::which = sub { 20 my $name = shift; 21 return $exe_name; 22 }; 23} 24 25{ 26 27 # No exe specified 28 local $exe_name = undef; 29 { 30 ok my $babel = GPS::Babel->new(), 'new OK'; 31 isa_ok $babel, 'GPS::Babel'; 32 ok !$babel->get_exename, 'no exe found OK'; 33 eval { $babel->check_exe }; 34 like $@, qr/not\s+found/, 'check_exe errors correctly'; 35 } 36 37 # Dummy exe specified 38 { 39 ok my $babel = GPS::Babel->new( { exename => $DUMMY_EXE } ), 40 'new OK'; 41 isa_ok $babel, 'GPS::Babel'; 42 my @exe = $babel->get_exename; 43 is_deeply \@exe, [$DUMMY_EXE], 'exe as arg OK'; 44 eval { $babel->check_exe }; 45 ok !$@, 'check_exe ok correctly'; 46 } 47} 48 49{ 50 ok my $babel = GPS::Babel->new(), 'new OK'; 51 isa_ok $babel, 'GPS::Babel'; 52 my @exe = $babel->get_exename; 53 is_deeply \@exe, [$DUMMY_EXE], 'exe as arg OK'; 54 eval { $babel->check_exe }; 55 ok !$@, 'check_exe ok correctly'; 56} 57 58