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 )