use strict;
use warnings;
use Test::More;
use Test::Warn;
use Test::Fatal;
use Probe::Perl ();
use EBook::EPUB::Check;
chomp( my $java_version = qx(java -version 2>&1) );
diag("\n\n");
diag("------------ Java INFO ------------\n");
diag("$java_version\n");
diag("------------ END OF Java INFO -----\n");
diag("\n");
my $report = epubcheck('epub/valid.epub')->report;
plan skip_all => $report if $report =~ /Error occurred during initialization of VM/i;
subtest 'valid epub file' => sub {
my $result = epubcheck('epub/valid.epub');
ok($result->is_valid);
like($result->report, qr/No errors or warnings detected/i);
note($result->report);
};
subtest 'invalid epub file' => sub {
my $result = epubcheck('epub/invalid.epub');
ok( ! $result->is_valid );
like($result->report, qr/Check finished with warnings or errors/i);
note($result->report);
};
subtest 'epub file not found' => sub {
my $result;
warning_is { $result = epubcheck('epub/hoge.epub'); } 'epub file not found';
ok( ! $result->is_valid );
is($result->report, '');
};
subtest 'jar file not found' => sub {
like(exception { epubcheck('epub/valid.epub', 'hoge') }, qr/jar file not found/);
};
subtest 'valid jar file path' => sub {
my $result = epubcheck('epub/valid.epub', $EBook::EPUB::Check::JAR);
ok($result->is_valid);
like($result->report, qr/No errors or warnings detected/i);
note($result->report);
};
subtest 'emtpy epub file path' => sub {
my $result;
warning_is { $result = epubcheck(''); } 'epub file not found';
ok( ! $result->is_valid );
is($result->report, '');
};
subtest 'undefined epub file path' => sub {
my $result;
warning_is { $result = epubcheck(undef); } 'epub file not found';
ok( ! $result->is_valid );
is($result->report, '');
};
subtest 'command line interface' => sub {
my $perl = Probe::Perl->find_perl_interpreter;
my $out1 = qx($perl script/epubcheck epub/valid.epub 2>&1);
like($out1, qr/No errors or warnings detected/i);
my $out2 = qx($perl script/epubcheck -out output.xml epub/valid.epub 2>&1);
like($out2, qr/Assessment XML document was saved in: output.xml/i);
};
done_testing;