# $Id: History.pm 1687 2007-06-28 22:44:07Z guillomovitch $ package Youri::Submit::Test::History; =head1 NAME Youri::Submit::Test::History - Non-linear history test =head1 DESCRIPTION This test rejects packages whose history does not include last available revision one. It assumes given set of package is canonical, and only check first one. =cut use warnings; use strict; use Carp; use Youri::Package; use List::MoreUtils qw/none/; use base qw/Youri::Submit::Step/; sub process_packages { my ($self, $packages, $repository, $target, $context) = @_; croak "Not a class method" unless ref $self; my $errors; my $package = $packages->[0]; my $current_package = $repository->get_last_older_revision($package, $target, $context); # new package return unless $current_package; # skip the test if last revision has been produced from another # source package, as it occurs during package split/merges return if $current_package->get_canonical_name() ne $package->get_canonical_name(); my $last_change_author = $current_package->get_last_change()->get_author(); if ( none { $last_change_author eq $_ } map { $_->get_author() } $package->get_changes() ) { $errors .= "last changelog entry $last_change_author from current package " . "$current_package missing from changelog"; } croak $errors if $errors; } =head1 COPYRIGHT AND LICENSE Copyright (C) 2002-2006, YOURI project This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;