IPC::Run3 for testing binaries
This is an example of a Perl script which uses IPC::Run3 and
Test::More to run a test on a C binary program. The binary here
is called j2e.cgi
and this tries to run it with a
command-line option of the form -q
word=%E3%81%95%E3%82%8B
, as in
j2e.cgi -q word=%E3%81%95%E3%82%8BThe routine
run_binary
could also be used to send
standard input and standard error. This program also demonstrates
converting the outputs back into UTF-8 encoding, and setting up
Test::More to use the "utf8" pragma for its outputs.
#!/home/ben/software/install/bin/perl use warnings; use strict; use Test::More tests => 1; use IPC::Run3; use Encode 'decode_utf8'; my $base_dir = '/share/projects/j2e/c-version/'; my $binary = "$base_dir/j2e.cgi"; use utf8; binmode Test::More->builder->output, ":utf8"; binmode Test::More->builder->failure_output, ":utf8"; run_binary ({query => 'word=%E3%81%95%E3%82%8B', expect => 'さる'}); sub run_binary { my ($options) = @_; my $in = $options->{in}; my $query = $options->{query}; my $expect = $options->{expect}; my @cmd = ($binary); if ($query) { push @cmd, ("-q", $query); } my $out; my $err; run3 (\@cmd, \$in, \$out, \$err); $out = decode_utf8 ($out); $err = decode_utf8 ($err); ok ($out =~ /$expect/, "Expect $expect"); }
Copyright © Ben Bullock 2009-2024. All
rights reserved.
For comments, questions, and corrections, please email
Ben Bullock
(benkasminbullock@gmail.com).
/
Privacy /
Disclaimer