The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

use strict;
use lib 't/lib';
use MBTest;
use DistGen;
if ( $] lt 5.008001 ) {
plan skip_all => "dotted-version numbers are buggy before 5.8.1";
} else {
plan 'no_plan';
}
# Ensure any Module::Build modules are loaded from correct directory
blib_load('Module::Build');
#--------------------------------------------------------------------------#
# Create test distribution
#--------------------------------------------------------------------------#
{
my $dist = DistGen->new( name => 'Simple::Name', version => '0.01' );
$dist->change_build_pl(
module_name => 'Simple::Name',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->release_status, "stable",
"regular version has release_status 'stable'"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => 'v1.2.3' );
$dist->change_build_pl(
module_name => 'Simple::Name',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->release_status, "stable",
"dotted-decimal version has release_status 'stable'"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => q{'0.01_01'} );
$dist->change_build_pl(
module_name => 'Simple::Name',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->release_status, "testing",
"alpha version has release_status 'testing'"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => q{'0.01_01'} );
$dist->change_build_pl(
module_name => 'Simple::Name',
release_status => 'unstable',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->release_status, "unstable",
"explicit 'unstable' keeps release_status 'unstable'"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => '0.01' );
$dist->change_build_pl(
module_name => 'Simple::Name',
release_status => 'testing',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->dist_suffix, "TRIAL",
"regular version marked 'testing' gets 'TRIAL' suffix"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => 'v1.2.3' );
$dist->change_build_pl(
module_name => 'Simple::Name',
release_status => 'testing',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->dist_suffix, "TRIAL",
"dotted version marked 'testing' gets 'TRIAL' suffix"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => '0.01' );
$dist->change_build_pl(
module_name => 'Simple::Name',
release_status => 'unstable',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->dist_suffix, "TRIAL",
"regular version marked 'unstable' gets 'TRIAL' suffix"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => '0.01' );
$dist->change_build_pl(
module_name => 'Simple::Name',
release_status => 'beta',
)->regen;
$dist->chdir_in;
my $output = stdout_stderr_of sub { $dist->run_build_pl() };
like( $output, qr/Illegal value 'beta' for release_status/i,
"Got error message for illegal release_status"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => q{'0.01_01'} );
$dist->change_build_pl(
module_name => 'Simple::Name',
release_status => 'stable',
)->regen;
$dist->chdir_in;
my $output = stdout_stderr_of sub { $dist->run_build_pl() };
like( $output, qr/Illegal value 'stable' with version '0.01_01'/i,
"Got error message for illegal 'stable' with alpha version"
);
}
{
my $dist = DistGen->new( name => 'Simple::Name', version => q{'0.01_01'} );
$dist->change_build_pl(
module_name => 'Simple::Name',
dist_version => '1.23beta1',
)->regen;
$dist->chdir_in;
my $mb = $dist->new_from_context();
isa_ok( $mb, "Module::Build" );
is( $mb->dist_suffix, "",
"non-standard dist_version does not get a suffix"
);
is( $mb->release_status, "stable",
"non-standard dist_version defaults to stable release_status"
);
}
# Test with alpha number
# vim:ts=2:sw=2:et:sta:sts=2