]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/commitdiff
In Gentoo, 1.0 is greater than 1
authorVincent Pit <vince@profvince.com>
Sat, 5 Feb 2011 18:42:04 +0000 (19:42 +0100)
committerVincent Pit <vince@profvince.com>
Sat, 5 Feb 2011 18:42:04 +0000 (19:42 +0100)
See also http://dev.gentoo.org/~ulm/pms/4/pms.html#x1-28008r2 for a complete
Gentoo version comparison algorithm.

Thanks Torsten Veller for bringing this to my attention.

lib/CPANPLUS/Dist/Gentoo/Version.pm
t/20-version.t

index 8d70ee6501d6ec65aea44ef10a863ed4d55fe5d5..e1f76742748fd777436c47b9af84068a81e76366 100644 (file)
@@ -126,12 +126,15 @@ sub _spaceship {
   my @a = @{ $v1->version };
   my @b = @{ $v2->version };
 
-  while (@a or @b) {
-   my $x = shift(@a) || 0;
-   my $y = shift(@b) || 0;
+  while (@a and @b) {
+   my $x = shift @a;
+   my $y = shift @b;
    my $c = $x <=> $y;
    return $c if $c;
   }
+
+  return  1 if @a;
+  return -1 if @b;
  }
 
  {
index 51bbf05e3e3ff65a75c7d61b18f4dd1bf642e5cd..14ea3297868e538f66473229204a3a2474405537 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3 + (2 + 2 * 3) * (50 + 4 * 7);
+use Test::More tests => 3 + (2 + 2 * 3) * (52 + 4 * 7);
 
 use CPANPLUS::Dist::Gentoo::Version;
 
@@ -24,18 +24,20 @@ my @tests = (
  [ 0, 1 => -1 ],
  [ 1, 1 =>  0 ],
 
- [ '1.0',   1       =>  0 ],
+ [ '1.0',   1       =>  1 ], # Yes, 1.0 > 1. Deal with it
+ [ '1.0',   '1.0'   =>  0 ],
  [ '1.1',   1       =>  1 ],
  [ '1.1',   '1.0'   =>  1 ],
- [ 1,       '1.0'   =>  0 ],
- [ 1,       '1.1'   => -1 ],
  [ '1.0',   '1.1'   => -1 ],
+ [ '1.0.0', 1       =>  1 ], # Ditto
+ [ '1.0.0', '1.0'   =>  1 ], # Tritto
+ [ '1.0.0', '1.0.0' =>  0 ],
  [ '1.0.1', '1.1'   => -1 ],
  [ '1.0.1', '1.0.0' =>  1 ],
 
  [ '1a',   1      =>  1 ],
  [ '1.0a', 1      =>  1 ],
- [ '1.0',  '1a'   => -1 ],
+ [ '1.0',  '1a'   =>  1 ], # Same
  [ '1a',   '1b'   => -1 ],
  [ '1.1a', '1.0b' =>  1 ],