From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use strict;
use Test::More tests => 7;
use FindBin qw/$RealBin/;
my $dir_name = [File::Spec->splitpath($0)]->[2];
$dir_name =~ s/\.t//;
my $samples_dir = File::Spec->catdir($RealBin, '/samples/', $dir_name);
#diag("name: $0, dir_name: $dir_name, samples dir: $samples_dir");
my $obj;
lives_ok( sub { $obj = Irssi::Script::InfoParser->new; }, 'file not required' );
dies_ok(sub { $obj->version }, 'cannot call accessors without file' );
my $invalid_file = File::Spec->catfile($samples_dir, 'invalid.pl');
my $invalid_obj = Irssi::Script::InfoParser->new(file => $invalid_file);
is (! $invalid_obj->verify_document_complete, 1, 'invalid file correctly detected');
dies_ok( sub { $invalid_obj->parse; }, 'parse fails on invalid document');
my $valid_file = File::Spec->catfile($samples_dir, 'valid.pl');
my $valid_obj = Irssi::Script::InfoParser->new(file => $valid_file);
is ($valid_obj->verify_document_complete, 1, 'valid file correctly detected');
isa_ok($valid_obj->_ppi_doc, 'PPI::Document', 'valid file returns a PPI::Document');
lives_ok( sub { $valid_obj->parse; }, 'parse succeeds on valid document');
done_testing;