1*5759b3d2Safresh1#!./perl -w 2*5759b3d2Safresh1use strict; 3*5759b3d2Safresh1 4*5759b3d2Safresh1use Test::More; 5*5759b3d2Safresh1 6*5759b3d2Safresh1## unit test for RT 132008 - https://rt.perl.org/Ticket/Display.html?id=132008 7*5759b3d2Safresh1 8*5759b3d2Safresh1if ( $^O eq 'MSWin32' || !-e q{/dev/tty} ) { 9*5759b3d2Safresh1 plan skip_all => "Not tested on windows or when /dev/tty does not exist"; 10*5759b3d2Safresh1} 11*5759b3d2Safresh1else { 12*5759b3d2Safresh1 plan tests => 9; 13*5759b3d2Safresh1} 14*5759b3d2Safresh1 15*5759b3d2Safresh1if ( -e q[&STDERR] ) { 16*5759b3d2Safresh1 note q[Removing existing file &STDERR]; 17*5759b3d2Safresh1 unlink q[&STDERR] or die q{Cannot remove existing file &STDERR [probably created from a previous run]}; 18*5759b3d2Safresh1} 19*5759b3d2Safresh1 20*5759b3d2Safresh1use_ok('Term::ReadLine'); 21*5759b3d2Safresh1can_ok( 'Term::ReadLine::Stub', qw{new devtty findConsole} ); 22*5759b3d2Safresh1is( Term::ReadLine->devtty(), q{/dev/tty}, "check sub devtty" ); 23*5759b3d2Safresh1SKIP: 24*5759b3d2Safresh1{ 25*5759b3d2Safresh1 open my $tty, "<", Term::ReadLine->devtty() 26*5759b3d2Safresh1 or skip "Cannot open tty", 1; 27*5759b3d2Safresh1 -t $tty 28*5759b3d2Safresh1 or skip "No tty found, so findConsole() won't return /dev/tty", 1; 29*5759b3d2Safresh1 my @out = Term::ReadLine::Stub::findConsole(); 30*5759b3d2Safresh1 is_deeply \@out, [ q{/dev/tty}, q{/dev/tty} ], "findConsole is using /dev/tty"; 31*5759b3d2Safresh1} 32*5759b3d2Safresh1 33*5759b3d2Safresh1{ 34*5759b3d2Safresh1 no warnings 'redefine'; 35*5759b3d2Safresh1 my $donotexist = q[/this/should/not/exist/hopefully]; 36*5759b3d2Safresh1 37*5759b3d2Safresh1 ok !-e $donotexist, "File $donotexist does not exist"; 38*5759b3d2Safresh1 # double mention to prevent warning 39*5759b3d2Safresh1 local *Term::ReadLine::Stub::devtty = 40*5759b3d2Safresh1 *Term::ReadLine::Stub::devtty = sub { $donotexist }; 41*5759b3d2Safresh1 is( Term::ReadLine->devtty(), $donotexist, "devtty mocked" ); 42*5759b3d2Safresh1 43*5759b3d2Safresh1 my @out = Term::ReadLine::Stub::findConsole(); 44*5759b3d2Safresh1 is_deeply \@out, [ q{&STDIN}, q{&STDERR} ], "findConsole isn't using /dev/tty" or diag explain \@out; 45*5759b3d2Safresh1 46*5759b3d2Safresh1 ok !-e q[&STDERR], 'file &STDERR do not exist before Term::ReadLine call'; 47*5759b3d2Safresh1 my $tr = Term::ReadLine->new('whatever'); 48*5759b3d2Safresh1 ok !-e q[&STDERR], 'file &STDERR was not created by mistake'; 49*5759b3d2Safresh1} 50