App-prepare4release
view release on metacpan or search on metacpan
t/coverage-deep.t view on Meta::CPAN
repository => { url => 'OLDU', web => 'OLDW' },
bugtracker => { web => 'OLDB' },
},
},
);
MK
my $out = App::prepare4release->_patch_meta_merge_block(
$has, 'NEWU', 'NEWW', 'NEWB', 0 );
like( $out, qr/NEWU/, 'patch meta url' );
like( $out, qr/NEWW/, 'patch meta web' );
like( $out, qr/NEWB/, 'patch bugtracker web' );
}
{
my $no_bug = <<'MK';
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Z',
META_MERGE => {
'meta-spec' => { version => 2 },
resources => {
repository => { url => 'U', web => 'W' },
},
},
);
MK
my $out = App::prepare4release->_patch_meta_merge_block(
$no_bug, 'U2', 'W2', 'B2', 0 );
like( $out, qr/bugtracker/, 'inject bugtracker into resources' );
}
# --- croak paths ------------------------------------------------------------
{
eval { App::prepare4release->package_to_repo_default('') };
like( $@, qr/module_name required/, 'package_to_repo_default croaks' );
}
{
eval {
my $a = _app(
config => { git => { repo => 'onlyshort' } },
module => 'Foo::Bar',
);
$a->repository_path_segment;
};
like( $@, qr/git\.author/, 'repository_path_segment croaks without author' );
}
{
eval {
App::prepare4release->new(
config => {},
opts => {},
identity => {},
)->module_repo;
};
like( $@, qr/module_name is required/, 'module_repo croaks' );
}
# --- _insert_readme_badges_after_regen (BOM, empty) --------------------------
{
my $bom = "\x{FEFF}Plain first line\n";
my $out =
App::prepare4release->_insert_readme_badges_after_regen( $bom, "BAD\n\n" );
unlike( $out, qr/\A\x{FEFF}/, 'BOM stripped before insert' );
like( $out, qr/BAD/, 'badge block inserted' );
my $empty =
App::prepare4release->_insert_readme_badges_after_regen( "\n\n", "X\n" );
like( $empty, qr/\AX\n/, 'whitespace-only readme: block prepended' );
}
# --- _strip_readme_badge_markdown_block (HTML comment) ----------------------
{
my $html = <<'MD';
Before
<!-- PREPARE4RELEASE_BADGES -->
old
<!-- /PREPARE4RELEASE_BADGES -->
After
MD
my $s = App::prepare4release->_strip_readme_badge_markdown_block($html);
unlike( $s, qr/PREPARE4RELEASE_BADGES/, 'strip HTML badge comment wrapper' );
like( $s, qr/After/, 'keeps text after comment block' );
}
# --- _collect_t_files -------------------------------------------------------
{
my $tmp = tempdir( CLEANUP => 1 );
make_path( File::Spec->catfile( $tmp, 't', 'sub' ) );
make_path( File::Spec->catfile( $tmp, 'xt' ) );
for (
[ 't', 'a.t' ],
[ 'xt', 'b.t' ]
)
{
my $p = File::Spec->catfile( $tmp, @{$_} );
open my $fh, '>', $p or die $!;
print {$fh} "1;\n";
close $fh;
}
my @f = App::prepare4release->_collect_t_files($tmp);
ok( ( grep { $_ eq 't/a.t' } @f ) && ( grep { $_ eq 'xt/b.t' } @f ),
'_collect_t_files finds t and xt' );
}
# --- strip_pod_badges_from_version_from (no-op) -----------------------------
{
my $tmp = tempdir( CLEANUP => 1 );
my $pm = File::Spec->catfile( $tmp, 'N.pm' );
open my $fh, '>', $pm or die $!;
print {$fh} <<'PM';
package N;
1;
__END__
=head1 X
=cut
PM
close $fh;
my $before = do { open my $i, '<', $pm; local $/; <$i> };
App::prepare4release->strip_pod_badges_from_version_from( $pm, 0 );
my $after = do { open my $i, '<', $pm; local $/; <$i> };
( run in 1.535 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )