| # -*- mode: cperl -*- |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| use Test::More tests => 8; |
| |
| use strict; |
| use warnings; |
| use File::Temp qw(tempfile); |
| |
| use_ok('Dpkg::IPC'); |
| |
| $/ = undef; |
| |
| my ($tmp_fh, $tmp_name) = tempfile; |
| my ($tmp2_fh, $tmp2_name) = tempfile; |
| |
| my $string = "foo\nbar\n"; |
| my $string2; |
| |
| open TMP, '>', $tmp_name; |
| print TMP $string; |
| close TMP; |
| |
| my $pid = spawn(exec => "cat", |
| from_string => \$string, |
| to_string => \$string2); |
| |
| ok($pid); |
| |
| is($string2, $string, "{from,to}_string"); |
| |
| $pid = spawn(exec => "cat", |
| from_handle => $tmp_fh, |
| to_handle => $tmp2_fh); |
| |
| ok($pid); |
| |
| wait_child($pid); |
| |
| open TMP, '<', $tmp2_name; |
| $string2 = <TMP>; |
| close TMP; |
| |
| is($string2, $string, "{from,to}_handle"); |
| |
| $pid = spawn(exec => "cat", |
| from_file => $tmp_name, |
| to_file => $tmp2_name, |
| wait_child => 1, |
| timeout => 5); |
| |
| ok($pid); |
| |
| open TMP, '<', $tmp2_name; |
| $string2 = <TMP>; |
| close TMP; |
| |
| is($string2, $string, "{from,to}_file"); |
| |
| eval { |
| $pid = spawn(exec => ["sleep", "10"], |
| wait_child => 1, |
| timeout => 5); |
| }; |
| ok($@, "fails on timeout"); |
| |
| unlink($tmp_name); |
| unlink($tmp2_name); |