Beefy Boxes and Bandwidth Generously Provided by pair Networks RobOMonk
go ahead... be a heretic
 
PerlMonks  

Re^2: Suggestions for testing interactive CLI apps?

by webfiend (Vicar)
on Apr 21, 2010 at 16:05 UTC ( #836097=note: print w/ replies, xml ) Need Help??


in reply to Re: Suggestions for testing interactive CLI apps?
in thread Suggestions for testing interactive CLI apps?

IPC::Run looks quite nice and easy. It looks like the timeout from the module handles alarm-style behavior.

Actually, IPC::Run looked so nice and easy that I tried it out. My attempts to use it pleased me, so I wrote a little wrapper to hide some of the clutter.

package Test::CLI; use Modern::Perl; use IPC::Run qw(run timeout); use Test::More; use base qw(Exporter); our @EXPORT_OK = qw( run_output_is ); our $TIMEOUT = 10; sub run_output_is { my ($expected, $command, $input, $diagnostic) = @_; my ($out, $err); run $command, \$input, \$out, \$err, timeout($TIMEOUT); is $expected, $out, $diagnostic; } 1;

That allowed for a nice simple script in my test code.

use Modern::Perl; use Test::CLI qw(run_output_is); use Test::More tests => 1; my @command = qw(parrot code/example-01-06.pir); my $in =<<INPUT Brian INPUT ; my $expected =<<EXPECTED Please enter your name: Brian Hello, Brian! EXPECTED ; run_output_is $expected, \@command, $in;

So thanks for the suggestion! That worked quite nicely for my needs.


Comment on Re^2: Suggestions for testing interactive CLI apps?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://836097]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (9)
As of 2014-04-20 22:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (488 votes), past polls