X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FCommand%2FAggregate.pm;fp=lib%2FTest%2FValgrind%2FCommand%2FAggregate.pm;h=3b985da913f9aaa682eed0593407f65d0e5652f7;hb=0e79c45af8d5eabe900280cc0e5467936467dee9;hp=0000000000000000000000000000000000000000;hpb=f040b7d40c89671ee109c2554dbb5471fe88b449;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/lib/Test/Valgrind/Command/Aggregate.pm b/lib/Test/Valgrind/Command/Aggregate.pm new file mode 100644 index 0000000..3b985da --- /dev/null +++ b/lib/Test/Valgrind/Command/Aggregate.pm @@ -0,0 +1,96 @@ +package Test::Valgrind::Command::Aggregate; + +use strict; +use warnings; + +=head1 NAME + +Test::Valgrind::Command::Aggregate - A Test::Valgrind command that aggregates several other commands. + +=head1 VERSION + +Version 1.01 + +=cut + +our $VERSION = '1.01'; + +=head1 DESCRIPTION + +=cut + +use Scalar::Util (); + +use base qw/Test::Valgrind::Command Test::Valgrind::Carp/; + +=head1 METHODS + +This class inherits L. + +=head2 C<< new commands => \@commands, ... >> + +=cut + +my $all_cmds = sub { + for (@{$_[0]}) { + return 0 unless Scalar::Util::blessed($_) + and $_->isa('Test::Valgrind::Command'); + } + return 1; +}; + +sub new { + my $class = shift; + $class = ref($class) || $class; + + my %args = @_; + + my $cmds = delete $args{commands}; + $class->_croak('Invalid commands list') + unless $cmds and ref $cmds eq 'ARRAY' and $all_cmds->($cmds); + + my $self = bless $class->SUPER::new(), $class; + + $self->{commands} = [ @$cmds ]; + + $self; +} + +=head2 C + +Read-only accessor for the C option. + +=cut + +sub commands { @{$_[0]->{commands} || []} } + +=head1 SEE ALSO + +L, L. + +=head1 AUTHOR + +Vincent Pit, C<< >>, L. + +You can contact me by mail or on C (vincent). + +=head1 BUGS + +Please report any bugs or feature requests to C, or through the web interface at L. +I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. + +=head1 SUPPORT + +You can find documentation for this module with the perldoc command. + + perldoc Test::Valgrind::Command::Aggregate + +=head1 COPYRIGHT & LICENSE + +Copyright 2009 Vincent Pit, all rights reserved. + +This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. + +=cut + +1; # End of Test::Valgrind::Command::Aggregate