xref: /openbsd-src/gnu/usr.bin/perl/dist/Term-ReadLine/t/ReadLine-STDERR.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
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