# 01-basic.t -- basic tests for Acme::DonMartin # # Copyright (C) 2005-2006 David Landgren use Test::More tests => 6; use strict; my %fail; BEGIN { for my $module (qw(Test::Cmd Test::File::Contents File::Copy)) { eval "use $module"; $@ and $fail{$module}++; } # the following is merely for CPANTS stats if (0) { eval 'use Test::Cmd'; eval 'use Test::File::Contents'; eval 'use File::Copy'; } } SKIP: { if (%fail) { diag( "$_ not found" ) for sort keys %fail; skip( "Not all modules required for testing were found, skipping encode/decode tests", 4 ); } copy('eg/freq.orig', 'freq.pl') or skip( "Unable to prepare test file: $!", 4 ); my $t = Test::Cmd->new( interpreter => $^X, prog => 'eg/freq.pl', workdir => '', subdir => 'sub', verbose => 0, ); ok($t, 'Test::Cmd object built for Acme::DonMartin'); $t->run; is($?, 0, 'encoding pass'); $t->run(args => 'eg/freq.orig'); is($?, 0, 'decoding pass'); (my $res = $t->stdout) =~ s/\s+/_/g; my $baseline = do { if (open my $in, '<', 'eg/freq.out') { local $/ = undef; (my $slurp = <$in>) =~ s/\s+/_/g; close $in; $slurp; } else { "cannot open $in for input: $!" } }; cmp_ok( $baseline, 'eq', $res, "acmed output" ); } SKIP: { skip( 'Test::Pod not installed on this system', 1 ) unless do { eval "use Test::Pod"; $@ ? 0 : 1; }; pod_file_ok( 'DonMartin.pm' ); } SKIP: { skip( 'Test::Pod::Coverage cannot deal with this module', 1 ) unless do { eval "use Test::Pod::Coverage"; 0; # always short-circuit }; pod_coverage_ok( "Acme::DonMartin", "POD coverage is go!" ); }