Author: jkeenan
Date: Sun Apr 15 19:31:53 2007
New Revision: 18232
Added:
branches/reconfigure/t/configure/13-die.t (contents, props changed)
branches/reconfigure/t/configure/testlib/init/gamma.pm (contents, props
changed)
Log:
1. Added another module for use only in testing configuration tools:
t/configure/testlib/init/gamma.pm. This module holds a configuration package,
init::gamma, which dies in the course of its execution.
2. Added t/configure/13-die.t t to test what happens when a configuration
step dies during execution.
Added: branches/reconfigure/t/configure/13-die.t
==============================================================================
--- (empty file)
+++ branches/reconfigure/t/configure/13-die.t Sun Apr 15 19:31:53 2007
@@ -0,0 +1,129 @@
+#! perl
+# Copyright (C) 2007, The Perl Foundation.
+# $Id$
+# 13-die.t
+
+use strict;
+use warnings;
+
+BEGIN {
+ use FindBin qw($Bin);
+ use Cwd qw(cwd realpath);
+ realpath($Bin) =~ m{^(.*\/parrot)\/[^/]*\/[^/]*\/[^/]*$};
+ our $topdir = $1;
+ if ( defined $topdir ) {
+ print "\nOK: Parrot top directory located\n";
+ }
+ else {
+ $topdir = realpath($Bin) . "/../..";
+ }
+ unshift @INC, qq{$topdir/lib};
+}
+use Test::More qw(no_plan); # tests => 14;
+use Carp;
+use Data::Dumper;
+$Data::Dumper::Indent=1;
+use Parrot::BuildUtil;
+use Parrot::Configure;
+use Parrot::Configure::Options qw( process_options );
+use Parrot::IO::Capture::Mini;
+use lib ("t/configure/testlib");
+
+my $parrot_version = Parrot::BuildUtil::parrot_version();
+like($parrot_version, qr/\d+\.\d+\.\d+/,
+ "Parrot version is in 3-part format");
+
+$| = 1;
+is($|, 1, "output autoflush is set");
+
+my $args = process_options( {
+ argv => [ ],
+ script => $0,
+ parrot_version => $parrot_version,
+ svnid => '$Id$',
+} );
+ok(defined $args, "process_options returned successfully");
+my %args = %$args;
+
+my $conf = Parrot::Configure->new;
+ok(defined $conf, "Parrot::Configure->new() returned okay");
+
+my $step = q{init::gamma};
+my $description = 'Determining if your computer does gamma';
+
+$conf->add_steps( $step );
+my @confsteps = @{$conf->steps};
+isnt(scalar @confsteps, 0,
+ "Parrot::Configure object 'steps' key holds non-empty array reference");
+is(scalar @confsteps, 1,
+ "Parrot::Configure object 'steps' key holds ref to 1-element array");
+my $nontaskcount = 0;
+foreach my $k (@confsteps) {
+ $nontaskcount++ unless $k->isa("Parrot::Configure::Task");
+}
+is($nontaskcount, 0, "Each step is a Parrot::Configure::Task object");
+is($confsteps[0]->step, $step,
+ "'step' element of Parrot::Configure::Task struct identified");
+is(ref($confsteps[0]->params), 'ARRAY',
+ "'params' element of Parrot::Configure::Task struct is array ref");
+ok(! ref($confsteps[0]->object),
+ "'object' element of Parrot::Configure::Task struct is not yet a ref");
+
+$conf->options->set(%args);
+is($conf->options->{c}->{debugging}, 1,
+ "command-line option '--debugging' has been stored in object");
+
+my $rv;
+my ($tie, @lines, $errstr);
+{
+ $tie = tie *STDOUT, "Parrot::IO::Capture::Mini"
+ or croak "Unable to tie";
+ local $SIG{__WARN__} = \&_capture;
+ eval { $rv = $conf->runsteps; };
+ @lines = $tie->READLINE;
+}
+my $bigmsg = join q{}, @lines;
+like($bigmsg,
+ qr/$description/s,
+ "Got message expected upon running $step");
+like($errstr,
+ qr/step $step died during execution: Dying gamma just to see what happens/,
+ "Got expected error message");
+
+pass("Completed all tests in $0");
+
+sub _capture { $errstr = $_[0];}
+
+################### DOCUMENTATION ###################
+
+=head1 NAME
+
+13-die.t - test what happens when a configuration step dies during execution
+
+=head1 SYNOPSIS
+
+ % prove t/configure/components/13-die.t
+
+=head1 DESCRIPTION
+
+The files in this directory test functionality used by F<Configure.pl>.
+
+The tests in this file examine what happens when your configuration step dies
+during execution.
+
+=head1 AUTHOR
+
+James E Keenan
+
+=head1 SEE ALSO
+
+Parrot::Configure, F<Configure.pl>.
+
+=cut
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Added: branches/reconfigure/t/configure/testlib/init/gamma.pm
==============================================================================
--- (empty file)
+++ branches/reconfigure/t/configure/testlib/init/gamma.pm Sun Apr 15
19:31:53 2007
@@ -0,0 +1,34 @@
+# Copyright (C) 2001-2003, The Perl Foundation.
+# $Id$
+
+=head1 NAME
+
+t/configure/testlib/init/gamma.pm - Module used in configuration tests
+
+=cut
+
+package init::gamma;
+use strict;
+use warnings;
+use vars qw($description @args);
+
+use base qw(Parrot::Configure::Step::Base);
+
+use Parrot::Configure::Step;
+
+$description = 'Determining if your computer does gamma';
[EMAIL PROTECTED] = ();
+
+sub runstep {
+ my ( $self, $conf ) = @_;
+ die "Dying gamma just to see what happens";
+}
+
+1;
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4: