Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Running an editor in a test with "prove" command

by nysus (Parson)
on May 31, 2020 at 15:46 UTC ( #11117535=perlquestion: print w/replies, xml ) Need Help??

nysus has asked for the wisdom of the Perl Monks concerning the following question:

Given this test in test.t:

#/usr/bin/env perl use Test::More; use strict; use warnings; use Proc::InvokeEditor; my $edited_text = Proc::InvokeEditor->edit('edit me'); is $edited_text, "edit you\n", 'can edit text'; done_testing();

The Proc::InvokeEditor spawns a new editor instance. When this test is run with prove test.t, you get:

test.t .. Vim: Warning: Output is not to a terminal

The test runs fine with perl test.t. What's the best fix for this?

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks

Replies are listed 'Best First'.
Re: Running an editor in a test with "prove" command
by haukex (Bishop) on May 31, 2020 at 16:12 UTC

    Tests that require an interactive TTY don't mix well with non-interactive test environments; consider for example what would happen if this test were to be run on CPAN Testers. An alternative to the below is to use something like prompt from ExtUtils::MakeMaker, which can be forced to use defaults if run non-interactively.

    use warnings; use strict; use Test::More; use Proc::InvokeEditor; use IO::Interactive qw/is_interactive/; SKIP: { skip "running non-interactively", 1 unless is_interactive; my $edited_text = Proc::InvokeEditor->edit('edit me'); is $edited_text, "edit you\n", 'can edit text'; } done_testing;

      Nice. I was scratching my head wondering if there was a way I could determine if I was running the script as a test or not. IO::Interactive is exactly what I needed. Thanks!

      $PM = "Perl Monk's";
      $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
      $nysus = $PM . ' ' . $MCF;
      Click here if you love Perl Monks

        I think -t STDOUT would also do it.

Re: Running an editor in a test with "prove" command
by Anonymous Monk on Jun 01, 2020 at 01:03 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://11117535]
Approved by haukex
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2021-04-19 14:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?