62 lines
1.9 KiB
Perl
62 lines
1.9 KiB
Perl
use Test::More;
|
|
use version;
|
|
|
|
SKIP: { eval { require Test::Warnings; } or skip($@, 1); }
|
|
eval { require 'ddclient'; } or BAIL_OUT($@);
|
|
|
|
ok(ddclient::parse_version($ddclient::VERSION),
|
|
"module's Perl version string is in opinionated form");
|
|
|
|
my $n = qr/0|[1-9]\d{0,2}/;
|
|
like($ddclient::version, qr/^$n\.$n\.$n(?:-alpha|-beta\.$n|-rc\.$n|\+r\.$n)?$/,
|
|
"human-readable version is in opinionated form");
|
|
|
|
my @tcs = (
|
|
['v1.0_0', '1-alpha'],
|
|
['v1.0.0_0', '1.0-alpha'],
|
|
['v1.2.3.0_0', '1.2.3-alpha'],
|
|
['v1.2.3.4.0_0', '1.2.3.4-alpha'],
|
|
['v1.0_1', '1-beta.1'],
|
|
['v1.0.0_1', '1.0-beta.1'],
|
|
['v1.2.3.0_1', '1.2.3-beta.1'],
|
|
['v1.2.3.4.0_1', '1.2.3.4-beta.1'],
|
|
['v1.2.3.0_899', '1.2.3-beta.899'],
|
|
['v1.0_901', '1-rc.1'],
|
|
['v1.0.0_901', '1.0-rc.1'],
|
|
['v1.2.3.0_901', '1.2.3-rc.1'],
|
|
['v1.2.3.4.0_901', '1.2.3.4-rc.1'],
|
|
['v1.2.3.0_998', '1.2.3-rc.98'],
|
|
['v1.999', '1'],
|
|
['v1.0.999', '1.0'],
|
|
['v1.2.3.999', '1.2.3'],
|
|
['v1.2.3.4.999', '1.2.3.4'],
|
|
['v1.999.1', '1+r.1'],
|
|
['v1.0.999.1', '1.0+r.1'],
|
|
['v1.2.3.999.1', '1.2.3+r.1'],
|
|
['v1.2.3.4.999.1', '1.2.3.4+r.1'],
|
|
['v1.2.3.999.999', '1.2.3+r.999'],
|
|
[$ddclient::VERSION, $ddclient::version],
|
|
);
|
|
|
|
subtest 'humanize_version' => sub {
|
|
for my $tc (@tcs) {
|
|
my ($pv, $want) = @$tc;
|
|
is(ddclient::humanize_version($pv), $want, "$pv -> $want");
|
|
}
|
|
};
|
|
|
|
subtest 'human-readable version can be translated back to Perl version' => sub {
|
|
for my $tc (@tcs) {
|
|
my ($want, $hv) = @$tc;
|
|
my $pv = "v$hv";
|
|
$pv =~ s/^(?!.*-)(.*?)(?:\+r\.(\d+))?$/"$1.999" . (defined($2) ? ".$2" : "")/e;
|
|
$pv =~ s/-alpha$/.0_0/;
|
|
$pv =~ s/-beta\.(\d+)$/.0_$1/;
|
|
$pv =~ s/-rc\.(\d+)$/'.0_' . (900 + $1)/e;
|
|
is($pv, $want, "$hv -> $want");
|
|
}
|
|
};
|
|
|
|
is($ddclient::version, '@PACKAGE_VERSION@', "version matches version in Autoconf");
|
|
|
|
done_testing();
|