[Rt-commit] rt branch, 4.0-trunk, updated. rt-3.9.7-1179-gb69e66b
Ruslan Zakirov
ruz at bestpractical.com
Tue Jan 4 19:24:18 EST 2011
The branch, 4.0-trunk has been updated
via b69e66b857bf1ddefd3c5cc9c26b69bf105da3b8 (commit)
via f2fc189767d8bb10a0767b3f1ca09c21d5488966 (commit)
from 1df0f3237571a1344e0c84eccba346bd7c7c2847 (commit)
Summary of changes:
lib/RT/Handle.pm | 25 ++++++++++++++++++-------
t/api/versions_sorter.t | 22 ++++++++++++++++++++++
2 files changed, 40 insertions(+), 7 deletions(-)
create mode 100644 t/api/versions_sorter.t
- Log -----------------------------------------------------------------
commit f2fc189767d8bb10a0767b3f1ca09c21d5488966
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jan 5 03:22:41 2011 +0300
tests for ::Handle::cmp_versions
diff --git a/t/api/versions_sorter.t b/t/api/versions_sorter.t
new file mode 100644
index 0000000..28307bf
--- /dev/null
+++ b/t/api/versions_sorter.t
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+
+use RT::Test nodata => 1, tests => 264;
+
+use strict;
+use warnings;
+
+sub is_right_sorting {
+ my @order = @_;
+ my @tmp = sort { int(rand(3)) - 1 } @order;
+
+ is_deeply(
+ [ sort RT::Handle::cmp_version @tmp ],
+ \@order,
+ 'test sorting of ('. join(' ', @tmp) .')'
+ );
+}
+
+is_right_sorting(qw(1 2 3));
+is_right_sorting(qw(1.1 1.2 1.3 2.0 2.1));
+is_right_sorting(qw(4.0.0a1 4.0.0alpha2 4.0.0b1 4.0.0beta2 4.0.0pre1 4.0.0pre2 4.0.0rc1 4.0.0rc2 4.0.0));
+
commit b69e66b857bf1ddefd3c5cc9c26b69bf105da3b8
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jan 5 03:23:11 2011 +0300
properly sort alphaX, betaX, preX and rcX versions
diff --git a/lib/RT/Handle.pm b/lib/RT/Handle.pm
index 2f618a2..b3847be 100644
--- a/lib/RT/Handle.pm
+++ b/lib/RT/Handle.pm
@@ -549,18 +549,29 @@ sub GetVersionFile {
return defined $version? $version{ $version } : undef;
}
+{ my %word = (
+ a => -4,
+ alpha => -4,
+ b => -3,
+ beta => -3,
+ pre => -2,
+ rc => -1,
+ head => 9999,
+);
sub cmp_version($$) {
my ($a, $b) = (@_);
- $b =~ s/HEAD$/9999/;
- my @a = split /[^0-9]+/, $a;
- my @b = split /[^0-9]+/, $b;
+ my @a = grep defined, map { /^[0-9]+$/? $_ : /^[a-zA-Z]+$/? $word{$_}|| -10 : undef }
+ split /([^0-9]+)/, $a;
+ my @b = grep defined, map { /^[0-9]+$/? $_ : /^[a-zA-Z]+$/? $word{$_}|| -10 : undef }
+ split /([^0-9]+)/, $b;
+ @a > @b
+ ? push @b, (0) x (@a- at b)
+ : push @a, (0) x (@b- at a);
for ( my $i = 0; $i < @a; $i++ ) {
- return 1 unless defined $b[$i];
return $a[$i] <=> $b[$i] if $a[$i] <=> $b[$i];
}
- return 0 if @a == @b;
- return -1;
-}
+ return 0;
+}}
=head2 InsertInitialData
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list