From cd05a7f2d06a42d95c79d8bc9e814ea56a9fca77 Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Sat, 1 Oct 2016 14:34:35 -0400 Subject: [PATCH] fix latest changes when dist version is unparsable If the dist version is not parsable as a version, just do string comparisons against the versions found in the change log. --- lib/MetaCPAN/Web/Model/API/Changes.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Web/Model/API/Changes.pm b/lib/MetaCPAN/Web/Model/API/Changes.pm index 0f93b72045..e4252d13e4 100644 --- a/lib/MetaCPAN/Web/Model/API/Changes.pm +++ b/lib/MetaCPAN/Web/Model/API/Changes.pm @@ -30,12 +30,17 @@ sub last_version { } return [] unless $releases && @$releases; + my $version = $release->{version}; + eval { $version = version->parse($version) }; + my @releases = sort { $b->[0] <=> $a->[0] } map { my $v = $_->{version} =~ s/-TRIAL$//r; my $dev = $_->{version} =~ /_|-TRIAL$/ || $_->{note} && $_->{note} =~ /\bTRIAL\b/; - [ version->parse($v), $v, $dev, $_ ]; + my $ver = ( ref $version && length $v && eval { version->parse($v) } ) + || $v; + [ $ver, $v, $dev, $_ ]; } @$releases; my @changelogs; @@ -49,7 +54,7 @@ sub last_version { last; } } - elsif ( $r->[0] eq $release->{version} ) { + elsif ( $r->[0] eq $version ) { push @changelogs, $r->[3]; $found = 1; }