package PITA::XML::Platform; =pod =head1 NAME PITA::XML::Platform - Data object representing a platform configuration =head1 SYNOPSIS # Create a platform configuration my $platform = PITA::XML::Platform->new( scheme => 'perl5', path => '/usr/bin/perl', env => \%ENV, config => \%Config::Config, ); # Get the current perl5 platform configuration my $current = PITA::XML::Platform->autodetect_perl5; =head1 DESCRIPTION C<PITA::XML::Platform> is an object for holding information about the platform that a package is being tested on It can be created either as part of the parsing of a L<PITA::XML> file, or if you wish you can create one from the local system configuration. Primarily it just holds information about the host's environment and the Perl configuration. =head1 METHODS As the functionality for L<PITA::XML> is still in flux, the methods will be documented once we stop changing them daily :) =cut use 5.005; use strict; use Carp (); use Params::Util '_STRING', '_HASH'; use vars qw{$VERSION}; BEGIN { $VERSION = '0.10'; } ##################################################################### # Constructor and Accessors sub new { my $class = shift; # Create the object my $self = bless { @_ }, $class; # Check the object $self->_init; $self; } sub autodetect_perl5 { my $class = shift; # Source the information my $path = $^X; require Config; # Hand it off to the constructor $class->new( scheme => 'perl5', path => $path, env => { %ENV }, # Only provide a copy config => { %Config::Config }, # Only provide a copy ); } # Format-check the parameters sub _init { my $self = shift; # Check the platform scheme unless ( PITA::XML->_SCHEME($self->scheme) ) { Carp::croak('Invalid or missing platform testing scheme'); } # Check the path we used unless ( _STRING($self->path) ) { Carp::croak('Invalid or missing scheme path'); } # Check we have an environment unless ( _HASH($self->env) ) { Carp::croak('Invalid, missing, or empty environment'); } # Check we have a config unless ( _HASH($self->config) ) { Carp::croak('Invalid, missing, or empty config'); } $self; } sub scheme { $_[0]->{scheme}; } sub path { $_[0]->{path}; } sub env { $_[0]->{env}; } sub config { $_[0]->{config}; } 1; =pod =head1 SUPPORT Bugs should be reported via the CPAN bug tracker at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=PITA-XML> For other issues, contact the author. =head1 AUTHOR Adam Kennedy E<lt>cpan@ali.asE<gt>, L<http://ali.as/> =head1 SEE ALSO L<PITA::XML> The Perl Image-based Testing Architecture (L<http://ali.as/pita/>) =head1 COPYRIGHT Copyright 2005, 2006 Adam Kennedy. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. =cut