summaryrefslogtreecommitdiff
path: root/pkgtools
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2022-08-04 05:45:15 +0000
committerrillig <rillig@pkgsrc.org>2022-08-04 05:45:15 +0000
commit6016a25de79733103864f3433c3041641b8fc7bf (patch)
treeb97be508b3e46c06cd404e1474f5a7f718280d70 /pkgtools
parent65e11b05d594a008518aef0600f6dfe36d15d305 (diff)
downloadpkgsrc-6016a25de79733103864f3433c3041641b8fc7bf.tar.gz
lintpkgsrc: allow uppercase 'nb' in version numbers
Just for symmetry with the pkg_install implementation; in practice the 'nb' is always lowercase. Merge most test cases into the versions table, leave a few as simple examples.
Diffstat (limited to 'pkgtools')
-rwxr-xr-xpkgtools/lintpkgsrc/files/lintpkgsrc.pl22
-rw-r--r--pkgtools/lintpkgsrc/files/t/pkgversion.t42
2 files changed, 29 insertions, 35 deletions
diff --git a/pkgtools/lintpkgsrc/files/lintpkgsrc.pl b/pkgtools/lintpkgsrc/files/lintpkgsrc.pl
index 496a294e871..fea8128693b 100755
--- a/pkgtools/lintpkgsrc/files/lintpkgsrc.pl
+++ b/pkgtools/lintpkgsrc/files/lintpkgsrc.pl
@@ -1,6 +1,6 @@
#!@PERL5@
-# $NetBSD: lintpkgsrc.pl,v 1.51 2022/08/03 22:03:43 rillig Exp $
+# $NetBSD: lintpkgsrc.pl,v 1.52 2022/08/04 05:45:15 rillig Exp $
# Written by David Brownlee <abs@netbsd.org>.
#
@@ -300,10 +300,12 @@ sub canonicalize_pkgname($) {
sub split_pkgversion($) {
my ($pkgversion) = @_;
+ $pkgversion = lc($pkgversion);
+
# See pkgtools/pkg_install/files/lib/dewey.c.
my (@temp);
push(@temp, ($pkgversion =~ s/nb(\d+)//) ? +$1 : 0);
- foreach my $elem (split(/(pl|pre|rc|beta|alpha|\D)/, lc($pkgversion))) {
+ foreach my $elem (split(/(pl|pre|rc|beta|alpha|\D)/, $pkgversion)) {
if ($elem =~ /\d/) {
push(@temp, +$elem);
} elsif ($elem eq "pl" || $elem eq "." || $elem eq "_") {
@@ -314,13 +316,9 @@ sub split_pkgversion($) {
push(@temp, -2);
} elsif ($elem eq "alpha") {
push(@temp, -3);
- } else {
- foreach my $ch (split(//, $elem)) {
- if ('a' le $ch && $ch le 'z') {
- push(@temp, 0);
- push(@temp, ord($ch) - ord('a') + 1);
- }
- }
+ } elsif ('a' le $elem && $elem le 'z') {
+ push(@temp, 0);
+ push(@temp, ord($elem) - ord('a') + 1);
}
}
@temp;
@@ -329,10 +327,8 @@ sub split_pkgversion($) {
sub pkgversioncmp($$$) {
my ($va, $op, $vb) = @_;
- my @a = split_pkgversion($va);
- my @b = split_pkgversion($vb);
- my $nb_a = shift(@a);
- my $nb_b = shift(@b);
+ my ($nb_a, @a) = split_pkgversion($va);
+ my ($nb_b, @b) = split_pkgversion($vb);
my $cmp = 0;
while ($cmp == 0 && (@a || @b)) {
diff --git a/pkgtools/lintpkgsrc/files/t/pkgversion.t b/pkgtools/lintpkgsrc/files/t/pkgversion.t
index d4994b20fe9..3423dafb08b 100644
--- a/pkgtools/lintpkgsrc/files/t/pkgversion.t
+++ b/pkgtools/lintpkgsrc/files/t/pkgversion.t
@@ -1,26 +1,16 @@
-# $NetBSD: pkgversion.t,v 1.8 2022/08/03 22:03:43 rillig Exp $
+# $NetBSD: pkgversion.t,v 1.9 2022/08/04 05:45:15 rillig Exp $
use strict;
use warnings;
use IO::Null;
use Test;
-BEGIN { plan tests => 6, onfail => sub { die } }
+BEGIN { plan tests => 1781, onfail => sub { die } }
require('../lintpkgsrc.pl');
ok(pkgversioncmp('3.4', '<', '3.4'), '');
ok(pkgversioncmp('3.4', '<=', '3.4'), 1);
-ok(pkgversioncmp('3.4', '>=', '3.4.0.0.0'), 1);
-ok(pkgversioncmp('3.4nb13', '>=', '3.4'), 1);
-ok(pkgversioncmp('3.4nb13', '<', '3.4'), '');
-ok(pkgversioncmp('3.4nb13', '>', '3.4nb5'), 1);
-ok(pkgversioncmp('1.1ab', '>', '1.1aa'), 1);
-ok(pkgversioncmp('1.1ab', '<=', '1.1.1.2'), 1);
-ok(pkgversioncmp('1.1ab', '>=', '1.1.1.2'), 1);
-
-ok(pkgversioncmp('1nb1', '<', '1.0.0.0.0.0.0.1'), 1);
-ok(pkgversioncmp('1.0', '<', '1nb1'), 1);
# See pkgtools/pkglint/files/pkgver/vercmp_test.go.
my @split_version_tests = (
@@ -42,27 +32,33 @@ my @split_version_tests = (
foreach my $test (@split_version_tests) {
my ($version, $expected) = @$test;
+
my @actual = split_pkgversion($version);
+
my @expected = ($expected->[1]);
push(@expected, @{$expected->[0]});
- ok("$version: " . join(',', @actual), "$version: " . join(',', @expected));
+ my $actual_str = "$version: " . join(',', @actual);
+ my $expected_str = "$version: " . join(',', @expected);
+ ok($actual_str, $expected_str);
}
# See pkgtools/pkglint/files/pkgver/vercmp_test.go.
-my $versions = [
+my @versions = (
[ "0pre20160620" ],
[ "0" ],
- [ "nb1" ],
+ [ "0nb1", "0NB1", "0Nb1", "0nb00001" ],
[ "0.0.1-SNAPSHOT" ],
[ "1.0alpha" ],
[ "1.0alpha3" ],
[ "1", "1.0", "1.0.0" ],
- [ "1.0nb1" ],
+ [ "1.0nb1", "1nb1" ],
[ "1.0nb2", "1_0nb2" ],
+ [ "1.0.0.0.0.0.0.1" ],
[ "1.0.aa" ],
[ "1.0.a1" ],
[ "1.0.k" ],
[ "1.0.1a" ],
+ [ "1.0.1.2", "1.0ab" ],
[ "1.0.1z" ],
[ "1.0.11", "1.0k" ],
[ "2.0pre", "2.0rc" ],
@@ -76,14 +72,14 @@ my $versions = [
[ "2021.06.17", "2021.6.17" ],
[ "2021.12.01", "2021.12.1" ],
[ "20151110" ],
-];
+);
my $prev = $Test::TESTOUT;
-$Test::TESTOUT = IO::Null->new;
-for (my $i = 0; $i < $#{$versions}; $i++) {
- for (my $j = 0; $j < $#{$versions}; $j++) {
- foreach my $vi (@{$versions->[$i]}) {
- foreach my $vj (@{$versions->[$j]}) {
+$Test::TESTOUT = IO::Null->new; # suppress the 'ok' output.
+foreach my $i (0 .. $#versions) {
+ foreach my $j (0 .. $#versions) {
+ foreach my $vi (@{$versions[$i]}) {
+ foreach my $vj (@{$versions[$j]}) {
my $actual = pkgversioncmp($vi, '<', $vj) ? '<'
: pkgversioncmp($vi, '<=', $vj) ? '=='
: '>';
@@ -96,3 +92,5 @@ for (my $i = 0; $i < $#{$versions}; $i++) {
}
}
$Test::TESTOUT = $prev;
+
+ok('done', 'done');