blob: 2ed49948c0f7fb0caf620a4b303b26842dca8f09 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# $Id: Set.pm 1687 2007-06-28 22:44:07Z guillomovitch $
package Youri::Submit::Test::Set;
=head1 NAME
Youri::Submit::Test::Set - Packages set test
=head1 DESCRIPTION
This test rejects non-canonical packages set, meaning packages generated from
different sources packages, checking expected number or source and binaries
packages.
=cut
use warnings;
use strict;
use Carp;
use List::MoreUtils qw/all/;
use base qw/Youri::Submit::Step/;
sub _init {
my $self = shift;
my %options = (
min_sources => 1,
max_sources => 1,
min_binaries => 1,
max_binaries => undef,
@_
);
$self->{_min_sources} = $options{min_sources};
$self->{_max_sources} = $options{max_sources};
$self->{_min_binaries} = $options{min_binaries};
$self->{_max_binaries} = $options{max_binaries};
}
sub process_packages {
my ($self, $packages, $repository, $target, $context) = @_;
croak "Not a class method" unless ref $self;
my $errors;
if (@$packages > 1) {
my $name = $packages->[0]->get_canonical_name();
$errors .= "not a canonical package set\n"
unless
all { $_->get_canonical_name() eq $name }
@$packages;
}
my $sources = grep { $_->is_source() } @$packages;
$errors .= "number of source packages > $self->{_max_sources}\n"
if defined $self->{_max_sources} && $sources > $self->{_max_sources};
$errors .= "number of source packages < $self->{_min_sources}\n"
if defined $self->{_min_sources} && $sources < $self->{_min_sources};
my $binaries = grep { $_->is_binary() } @$packages;
$errors .= "number of binary packages > $self->{_max_binaries}\n"
if defined $self->{_max_binaries} && $binaries > $self->{_max_binaries};
$errors .= "number of binary packages < $self->{_min_binaries}\n"
if defined $self->{_min_binaries} && $binaries < $self->{_min_binaries};
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;
|