PITA::XML::Install - A PITA report on a single distribution install


PITA-XML documentation Contained in the PITA-XML distribution.

Index


Code Index:

NAME

Top

PITA::XML::Install - A PITA report on a single distribution install

DESCRIPTION

Top

PITA::XML::Install is a data object that contains the complete set of information on a single test/install run for a distribution on a single host of an arbitrary platform.

new

  # Create a new Install object
  my $install = PITA::XML::Install->new(
      request  => $request
      platform => $platform,
      analysis => $analysis,
      );

The new constructor is used to create a new installation report, a collection of which are serialized to the PITA::XML XML file.

Returns a new PITA::XML::Install object, or dies on error.

request

The request accessor returns testing request information.

Returns a PITA::XML::Distribution object.

platform

The platform accessor returns the platform specification for the install.

Returns a PITA::XML::Platform object.

add_command

  $install->add_command( $command );

The add_command method adds a PITA::XML::Command object to the list of commands in the install object.

Returns true, or dies is you do not pass a PITA::XML::Command object.

commands

The commands accessor returns the commands executed during the testing.

Returns a list of zero or more PITA::XML::Command objects.

add_test

  $install->add_test( $test );

The add_test method adds a PITA::XML::Test object to the list of test results in the install object.

Returns true, or dies is you do not pass a PITA::XML::Test object.

tests

The tests accessor returns the results of the individual tests run during the testing.

Returns a list of zero or more PITA::XML::Test objects.

analysis

The analysis accessor returns the analysis object for the test run.

Returns a PITA::XML::Analysis object, or undef if no analysis performed during the testing.

SUPPORT

Top

Bugs should be reported via the CPAN bug tracker at

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=PITA-XML

For other issues, contact the author.

AUTHOR

Top

Adam Kennedy <adamk@cpan.org>, http://ali.as/

SEE ALSO

Top

PITA::XML

The Perl Image-based Testing Architecture (http://ali.as/pita/)

COPYRIGHT

Top


PITA-XML documentation Contained in the PITA-XML distribution.
package PITA::XML::Install;

use 5.006;
use strict;
use Carp         ();
use Params::Util qw{ _INSTANCE _SET0 };

use vars qw{$VERSION};
BEGIN {
	$VERSION = '0.51';
}





#####################################################################
# Constructor and Accessors

sub new {
	my $class = shift;
	my $self  = bless { @_ }, $class;

	# Check the object
	$self->_init;

	$self;
}

sub _init {
	my $self = shift;

	# We must have a platform spec
	unless ( _INSTANCE($self->platform, 'PITA::XML::Platform') ) {
		Carp::croak('Invalid or missing platform');
	}

	# We must have a testing request
	unless ( _INSTANCE($self->request, 'PITA::XML::Request') ) {
		Carp::croak('Invalid or missing request');
	}

	# The platform scheme should match the platform scheme
	# (ignoring any part after the dot in the request)
	my $scheme_regexp = '^' . quotemeta($self->platform->scheme) . '\\b';
	unless ( $self->request->scheme =~ /$scheme_regexp/ ) {
		Carp::croak('Platform scheme does not match request scheme');
	}

	# Zero or more commands
	$self->{commands} ||= [];
	unless ( _SET0( $self->{commands}, 'PITA::XML::Command') ) {
		Carp::croak('Invalid commands');
	}

	# Zero or more tests
	$self->{tests} ||= [];
	unless ( _SET0( $self->{tests}, 'PITA::XML::Test') ) {
		Carp::croak('Invalid tests');
	}

	# Analysis is optional
	if ( defined $self->analysis or exists $self->{analysis} ) {
		unless ( _INSTANCE($self->analysis, 'PITA::XML::Analysis') ) {
			Carp::croak('Invalid analysis object');
		}
	} else {
		$self->{analysis} = undef;
	}

	$self;
}





#####################################################################
# Main Methods

sub request {
	$_[0]->{request};
}

sub platform {
	$_[0]->{platform};
}

sub add_command {
	my $self    = shift;
	my $command = _INSTANCE(shift, 'PITA::XML::Command')
		or Carp::croak("Did not provide a PITA::XML::Command to add_command");
	push @{ $self->{commands} }, $command;
	1;
}

sub commands {
	@{ $_[0]->{commands} };
}

sub add_test {
	my $self = shift;
	my $test = _INSTANCE(shift, 'PITA::XML::Test')
		or Carp::croak("Did not provide a PITA::XML::Test to add_test");
	push @{ $self->{tests} }, $test;
	1;
}

sub tests {
	@{ $_[0]->{tests} };
}

sub analysis {
	$_[0]->{analysis};
}

1;