Author: jkeenan
Date: Sun May 6 08:50:34 2007
New Revision: 18437
Added:
branches/reconfigure/lib/Parrot/Configure/Options/
branches/reconfigure/lib/Parrot/Configure/Options/Test.pm (contents, props
changed)
Modified:
branches/reconfigure/Configure.pl
Log:
Adding functionality to run configuration and build tests along with
Configure.pl.
Modified: branches/reconfigure/Configure.pl
==============================================================================
--- branches/reconfigure/Configure.pl (original)
+++ branches/reconfigure/Configure.pl Sun May 6 08:50:34 2007
@@ -291,6 +291,7 @@
use Parrot::BuildUtil;
use Parrot::Configure;
use Parrot::Configure::Options qw( process_options );
+use Parrot::Configure::Options::Test;
use Parrot::Configure::Messages qw(
print_introduction
print_conclusion
@@ -319,33 +320,10 @@
} );
exit unless defined $args;
-my %args = %$args;
-
-my ($run_configure_tests, $run_build_tests);
-if (defined $args{test}) {
- if ($args{test} eq '1') {
- $run_configure_tests = 1;
- $run_build_tests = 1;
- } elsif ($args{test} eq 'configure') {
- $run_configure_tests = 1;
- } elsif ($args{test} eq 'build') {
- $run_build_tests = 1;
- } else {
- die "'$args{test}' is a bad value for command-line option 'test'";
- }
-}
-
-if ($run_configure_tests) {
- print "As you requested, we'll start with some tests of the configuration
tools.\n\n";
- system(qq{prove t/configure/*.t})
- and die "Unable to execute configuration tests";
- print <<"TEST";
-
-I just ran some tests to demonstrate that
-Parrot's configuration tools will work as intended.
-
-TEST
-}
+my $opttest = Parrot::Configure::Options::Test->new($args);
+# configuration tests will only be run if you requested them
+# as command-line option
+$opttest->run_configure_tests();
# from Parrot::Configure::Messages
print_introduction($parrot_version);
@@ -355,6 +333,7 @@
# from Parrot::Configure::Step::List
$conf->add_steps(get_steps_list());
+my %args = %$args;
# from Parrot::Configure::Data
$conf->options->set(%args);
@@ -372,12 +351,17 @@
}
# tell users what to do next
-if ($run_build_tests) {
- print "\n\n";
- print "As you requested, I will now run some tests of the build
tools.\n\n";
- system(qq{prove t/postconfigure/*.t t/tools/pmc2cutils/*.t
t/tools/ops2cutils/*.t t/tools/ops2pmutils/*.t})
- and die "Unable to execute post-configuration and build tools tests";
-}
+#if ($run_build_tests) {
+# print "\n\n";
+# print "As you requested, I will now run some tests of the build
tools.\n\n";
+# system(qq{prove t/postconfigure/*.t t/tools/pmc2cutils/*.t
t/tools/ops2cutils/*.t t/tools/ops2pmutils/*.t})
+# and die "Unable to execute post-configuration and build tools tests";
+#}
+
+
+# build tests will only be run if you requested them
+# as command-line option
+$opttest->run_build_tests();
# from Parrot::Configure::Messages
print_conclusion($conf->data->get('make'));
Added: branches/reconfigure/lib/Parrot/Configure/Options/Test.pm
==============================================================================
--- (empty file)
+++ branches/reconfigure/lib/Parrot/Configure/Options/Test.pm Sun May 6
08:50:34 2007
@@ -0,0 +1,213 @@
+# Copyright (C) 2001-2006, The Perl Foundation.
+# $Id$
+package Parrot::Configure::Options::Test;
+use strict;
+
+our @preconfiguration_tests = qw(
+ t/configure/*.t
+);
+
+our @postconfiguration_tests = qw(
+ t/postconfigure/*.t
+ t/tools/pmc2cutils/*.t
+ t/tools/ops2cutils/*.t
+ t/tools/ops2pmutils/*.t
+);
+
+sub new {
+ my ($class, $argsref) = @_;
+ my $self = {};
+ my ($run_configure_tests, $run_build_tests);
+ if (defined $argsref->{test}) {
+ if ($argsref->{test} eq '1') {
+ $self->{run_configure_tests} = 1;
+ $self->{run_build_tests} = 1;
+ } elsif ($argsref->{test} eq 'configure') {
+ $self->{run_configure_tests} = 1;
+ } elsif ($argsref->{test} eq 'build') {
+ $self->{run_build_tests} = 1;
+ } else {
+ die "'$argsref->{test}' is a bad value for command-line option
'test'";
+ }
+ }
+ return bless $self, $class;
+}
+
+sub run_configure_tests {
+ my $self = shift;
+ if ($self->{run_configure_tests}) {
+ print "As you requested, we'll start with some tests of the
configuration tools.\n\n";
+ system(qq{prove @preconfiguration_tests})
+ and die "Unable to execute configuration tests";
+ print <<"TEST";
+
+ I just ran some tests to demonstrate that
+ Parrot's configuration tools will work as intended.
+
+TEST
+ }
+ return 1;
+}
+
+sub run_build_tests {
+ my $self = shift;
+ if ($self->{run_build_tests}) {
+ print "\n\n";
+ print "As you requested, I will now run some tests of the build
tools.\n\n";
+ system(qq{prove @postconfiguration_tests})
+ and die "Unable to execute post-configuration and build tools
tests";
+ }
+ return 1;
+}
+
+1;
+
+#################### DOCUMENTATION ####################
+
+=head1 NAME
+
+Parrot::Configure::Options::Test - Run configuration and build tests along
with F<Configure.pl>
+
+=head1 SYNOPSIS
+
+In F<Configure.pl>:
+
+ use Parrot::Configure::Options;
+ use Parrot::Configure::Options::Test;
+
+ $args = process_options( {
+ argv => [ @ARGV ],
+ script => $0,
+ parrot_version => $parrot_version,
+ svnid => '$Id$',
+ } );
+
+ $opttest = Parrot::Configure::Options::Test->new($args);
+
+ $opttest->run_configure_tests();
+
+ $opttest->run_build_tests();
+
+On command line:
+
+ # run tests of configuration tools only
+ perl Configure.pl --test=configure
+
+ # run tests of build tools only
+ perl Configure.pl --test=build
+
+ # run tests of both configuration and build tools only
+ perl Configure.pl --test
+
+=head1 DESCRIPTION
+
+Test suites have been constructed which test those of Parrot's configuration
+and build tools that are written in Perl 5. These tests are not necessarily
+run when you invoke F<make test>. In any event, running these tests as part
+of F<make test> is, in a certain sense, running them too late. If you have
+successfully called F<Configure.pl> and F<make>, you have implicitly
+demonstrated that the configuration and build tools work (for the most part),
+so running tests of those tools post-F<make> is somewhat redundant.
+
+On the other hand, tests of the configuration tools I<are> meaningful if run
+I<before> F<Configure.pl> is invoked and, similarly, tests of the build tools
+I<are> meaningful if run I<before> F<make> is invoked.
+Parrot::Configure::Options::Test provides functionality for running such
+tests.
+
+=head1 SUBROUTINES
+
+=head2 C<new()>
+
+=over 4
+
+=item * Purpose
+
+Parrot::Configure::Options::Test constructor.
+
+=item * Arguments
+
+One argument: The hash reference which is the return value of
+C<Parrot::Configure::Options::process_options()>.
+
+=item * Return Value
+
+Parrot::Configure::Options::Test object.
+
+=item * Comment
+
+=back
+
+=head2 C<run_configure_tests()>
+
+=over 4
+
+=item * Purpose
+
+Run tests of Parrot's configuration tools.
+
+=item * Arguments
+
+None.
+
+=item * Return Value
+
+None.
+
+=item * Comments
+
+The tests to be executed are listed in
+C<@Parrot::Configure::Options::Test::preconfiguration_tests>. Edit that list
+to run different tests. Currently, that array runs all tests in
+F<t/configure/*.t>.
+
+=back
+
+=head2 C<run_build_tests()>
+
+=over 4
+
+=item * Purpose
+
+Run tests of Parrot's build tools. Also, run tests of certain aspects of the
+configuration process which, for legacy reasons, must run after
+F<Configure.pl> has completed execution.
+
+=item * Arguments
+
+None.
+
+=item * Return Value
+
+None.
+
+=item * Comments
+
+The tests to be executed are listed in
+C<@Parrot::Configure::Options::Test::postconfiguration_tests>. Edit that list
+to run different tests. Currently, that array runs all tests in:
+
+ t/postconfigure/*.t
+ t/tools/pmc2cutils/*.t
+ t/tools/ops2cutils/*.t
+ t/tools/ops2pmutils/*.t
+
+=back
+
+=head1 AUTHOR
+
+James E Keenan, in response to request by Jerry Gay
+in http://rt.perl.org/rt3/Ticket/Display.html?id=42690.
+
+=head1 SEE ALSO
+
+F<Configure.pl>. F<lib/Parrot/Configure/Options.pm>.
+
+=cut
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4: