ASPEER-MakeMaker-Markdown-Pod

 view release on metacpan or  search on metacpan

t/01-embed-process.t  view on Meta::CPAN

# NAME

Sample::Sidecar - sidecar markdown
SIDECAR_MD
    my $markpod_or=ASPEER::MakeMaker::Markdown::Pod->new({nobackup => 1});
    my $changed=$markpod_or->markpod_process($fn);
    ok($changed > 0, 'sidecar markdown reports changes');
    $markpod_or->markpod_inplace_update($fn);
    my $updated=slurp($fn);
    like($updated, qr/^=begin markdown\b/m, 'sidecar markdown inserted into POD');
    like($updated, qr/Sample::Sidecar - sidecar markdown/, 'sidecar markdown content applied');
}

{
    my $dir=tempdir(CLEANUP => 1);
    my $fn="${dir}/no-pod.pm";
    spew($fn, <<'NO_POD_PM');
package Sample::NoPod;
1;
NO_POD_PM
    spew("${fn}.md", <<'NO_POD_MD');
# NAME

Sample::NoPod - sidecar markdown
NO_POD_MD
    my $markpod_or=ASPEER::MakeMaker::Markdown::Pod->new({nobackup => 1});
    my $changed=$markpod_or->markpod_process($fn);
    is($changed, 1, 'sidecar markdown creates a new POD section');
    $markpod_or->markpod_inplace_update($fn);
    my $updated=slurp($fn);
    like($updated, qr/^__END__$/m, 'new POD section adds __END__ marker');
    like($updated, qr/__END__\n\n=begin markdown\n\n# NAME/, 'new POD section has normalized markdown spacing');
    like($updated, qr/^=begin markdown\b/m, 'sidecar markdown block embedded into file');
    like($updated, qr/^=head1 NAME\b/m, 'generated POD added for new section');
}

{
    my $dir=tempdir(CLEANUP => 1);
    my $fn="${dir}/sidecar-over-embedded.pm";
    spew($fn, <<'SIDE_EMBED_PM');
package Sample::SidecarOverEmbedded;
1;
__END__

=begin markdown

# NAME

Sample::SidecarOverEmbedded - embedded markdown

=end markdown
=cut
SIDE_EMBED_PM
    spew("${fn}.md", <<'SIDE_EMBED_MD');
# NAME

Sample::SidecarOverEmbedded - sidecar markdown
SIDE_EMBED_MD
    my $markpod_or=ASPEER::MakeMaker::Markdown::Pod->new({nobackup => 1});
    my $changed=$markpod_or->markpod_process($fn);
    ok($changed > 0, 'sidecar overrides embedded markdown');
    $markpod_or->markpod_inplace_update($fn);
    my $updated=slurp($fn);
    like($updated, qr/Sample::SidecarOverEmbedded - sidecar markdown/, 'sidecar markdown content embedded');
    unlike($updated, qr/Sample::SidecarOverEmbedded - embedded markdown/, 'embedded markdown content replaced');
}

{
    my $dir=tempdir(CLEANUP => 1);
    my $fn="${dir}/multi.pm";
    my $orig=<<'MULTI';
package Sample::Multi;
1;
__END__

=head1 NAME

Sample::Multi - plain section

=cut

=begin markdown

# DESCRIPTION

Converted section

=end markdown
=cut
MULTI
    spew($fn, $orig);
    my $markpod_or=ASPEER::MakeMaker::Markdown::Pod->new({nobackup => 1});
    my $changed=$markpod_or->markpod_process($fn);
    ok($changed > 0, 'mixed POD reports changes');
    $markpod_or->markpod_inplace_update($fn);
    my $updated=slurp($fn);
    like($updated, qr/Sample::Multi - plain section/, 'plain POD block preserved');
    like($updated, qr/^=head1 DESCRIPTION\b/m, 'markdown-backed POD block regenerated');
}

done_testing;



( run in 3.022 seconds using v1.01-cache-2.11-cpan-10df4c37326 )