use Moo;
use System::Introspector::Util qw(
- handle_from_file
+ output_from_file
transform_exceptions
);
sub gather {
my ($self) = @_;
- return transform_exceptions {
- my $fh = $self->_open_hosts_file;
- my @hosts;
- while (defined( my $line = <$fh> )) {
- chomp $line;
- next if $line =~ m{^\s*$}
- or $line =~ m{^\s*#};
- push @hosts, [split m{\s+}, $line];
- }
- return { hosts => \@hosts };
+ my $file = $self->hosts_file;
+ return {
+ hosts_file => transform_exceptions {
+ return {
+ file_name => $file,
+ body => scalar output_from_file $file,
+ };
+ },
};
}
-sub _open_hosts_file {
- my ($self) = @_;
- return handle_from_file $self->hosts_file;
-}
-
1;
__END__
my $result = $probe->gather;
ok $result, 'received data';
-my $data = $result->{hosts};
+my $data = $result->{hosts_file};
ok $data, 'received hosts data';
-is_deeply $data,
- [['1.2.3.4', qw( foo bar )], ['2.3.4.5', 'bar']],
- 'parsing worked';
+is $result->{__error__}, undef, 'no errors';
+ok $data->{file_name}, 'received file name';
+
+my $body = $data->{body};
+ok $body, 'received a body';
+like $body, qr{1.2.3.4\s+foo\s+bar}, 'first host';
+like $body, qr{2.3.4.5\s+bar}, 'second host';
+like $body, qr{some comment}, 'comment preserved';
done_testing;