Skip to content

Commit

Permalink
Applying to trunk patch submitted in RT 42690. particle requested a '…
Browse files Browse the repository at this point in the history
…--test'

option to Configure.pl that would run configuration tools tests with
'--test=configure' (followed by regular configuration routine);
post-configuration and build tools tests (preceded by regular configuration)
with '--test=build'; and both sets of tests with just '--test'.  This should
have no impact on those who choose not to use this option.  New files:
lib/Parrot/Configure/Options/Test.pm; t/configure/25-options_test.t.


git-svn-id: https://svn.parrot.org/parrot/trunk@18516 d31e2699-5ff4-0310-a27c-f18f2fbe73fe
  • Loading branch information
jkeenan committed May 12, 2007
1 parent 95cec2c commit 84c64a2
Show file tree
Hide file tree
Showing 6 changed files with 396 additions and 5 deletions.
46 changes: 45 additions & 1 deletion Configure.pl
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -60,6 +60,33 @@ =head2 Command-line Options
This turns on the user prompts. This turns on the user prompts.
=item C<--test>
Run certain tests along with F<Configure.pl>:
=over 4
=item C<--test=configure>
Run tests found in F<t/configure/> I<before> beginning configuration. These
tests demonstrate that Parrot's configuration tools will work properly once
configuration has begun.
=item C<--test=build>
Run tests found in F<t/postconfigure/>, F<t/tools/pmc2cutils/>,
F<t/tools/ops2cutils/> and F<t/tools/ops2pmutils/> I<after> configuration has
completed. These tests demonstrate (a) that certain of Parrot's configuration
tools are working properly post-configuration; and (b) that certain of
Parrot's build tools will work properly once you call F<make>.
=item C<--test>
Run the tests described in C<--test=configure>, conduct configuration, then
run the tests described in C<--test=build>.
=back
=back =back
Compile Options Compile Options
Expand Down Expand Up @@ -264,6 +291,7 @@ =head1 SEE ALSO
use Parrot::BuildUtil; use Parrot::BuildUtil;
use Parrot::Configure; use Parrot::Configure;
use Parrot::Configure::Options qw( process_options ); use Parrot::Configure::Options qw( process_options );
use Parrot::Configure::Options::Test;
use Parrot::Configure::Messages qw( use Parrot::Configure::Messages qw(
print_introduction print_introduction
print_conclusion print_conclusion
Expand Down Expand Up @@ -292,7 +320,10 @@ =head1 SEE ALSO
} ); } );
exit unless defined $args; exit unless defined $args;


my %args = %$args; 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 # from Parrot::Configure::Messages
print_introduction($parrot_version); print_introduction($parrot_version);
Expand All @@ -302,6 +333,7 @@ =head1 SEE ALSO
# from Parrot::Configure::Step::List # from Parrot::Configure::Step::List
$conf->add_steps(get_steps_list()); $conf->add_steps(get_steps_list());


my %args = %$args;
# from Parrot::Configure::Data # from Parrot::Configure::Data
$conf->options->set(%args); $conf->options->set(%args);


Expand All @@ -319,6 +351,18 @@ =head1 SEE ALSO
} }


# tell users what to do next # 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";
#}


# build tests will only be run if you requested them
# as command-line option
$opttest->run_build_tests();

# from Parrot::Configure::Messages # from Parrot::Configure::Messages
print_conclusion($conf->data->get('make')); print_conclusion($conf->data->get('make'));


Expand Down
4 changes: 3 additions & 1 deletion MANIFEST
Original file line number Original file line Diff line number Diff line change
@@ -1,7 +1,7 @@
# ex: set ro: # ex: set ro:
# $Id$ # $Id$
# #
# generated by tools/dev/mk_manifest_and_skip.pl Sat May 12 12:03:02 2007 UT # generated by tools/dev/mk_manifest_and_skip.pl Sat May 12 14:07:21 2007 UT
# #
# See tools/dev/install_files.pl for documentation on the # See tools/dev/install_files.pl for documentation on the
# format of this file. # format of this file.
Expand Down Expand Up @@ -2245,6 +2245,7 @@ lib/Parrot/Configure.pm [devel]
lib/Parrot/Configure/Data.pm [devel] lib/Parrot/Configure/Data.pm [devel]
lib/Parrot/Configure/Messages.pm [devel] lib/Parrot/Configure/Messages.pm [devel]
lib/Parrot/Configure/Options.pm [devel] lib/Parrot/Configure/Options.pm [devel]
lib/Parrot/Configure/Options/Test.pm [devel]
lib/Parrot/Configure/Step.pm [devel] lib/Parrot/Configure/Step.pm [devel]
lib/Parrot/Configure/Step/Base.pm [devel] lib/Parrot/Configure/Step/Base.pm [devel]
lib/Parrot/Configure/Step/List.pm [devel] lib/Parrot/Configure/Step/List.pm [devel]
Expand Down Expand Up @@ -2820,6 +2821,7 @@ t/configure/21-version.t []
t/configure/22-version.t [] t/configure/22-version.t []
t/configure/23-version.t [] t/configure/23-version.t []
t/configure/24-version.t [] t/configure/24-version.t []
t/configure/25-options_test.t []
t/configure/base.t [] t/configure/base.t []
t/configure/config_steps.t [] t/configure/config_steps.t []
t/configure/data.t [] t/configure/data.t []
Expand Down
2 changes: 1 addition & 1 deletion MANIFEST.SKIP
Original file line number Original file line Diff line number Diff line change
@@ -1,6 +1,6 @@
# ex: set ro: # ex: set ro:
# $Id$ # $Id$
# generated by tools/dev/mk_manifest_and_skip.pl Sat May 12 12:03:02 2007 UT # generated by tools/dev/mk_manifest_and_skip.pl Sat May 12 14:07:21 2007 UT
# #
# This file should contain a transcript of the svn:ignore properties # This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for # of the directories in the Parrot subversion repository. (Needed for
Expand Down
9 changes: 7 additions & 2 deletions lib/Parrot/Configure/Options.pm
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ sub get_valid_options {
jitcapable ld ldflags lex libdir libexecdir libs link linkflags jitcapable ld ldflags lex libdir libexecdir libs link linkflags
localstatedir m maintainer mandir miniparrot nomanicheck oldincludedir localstatedir m maintainer mandir miniparrot nomanicheck oldincludedir
opcode ops optimize parrot_is_shared pmc prefix profile sbindir opcode ops optimize parrot_is_shared pmc prefix profile sbindir
sharedstatedir step sysconfdir verbose verbose-step version without-gdbm sharedstatedir step sysconfdir test verbose verbose-step version
without-gmp without-icu yacc); without-gdbm without-gmp without-icu yacc);
} }


sub process_options { sub process_options {
Expand Down Expand Up @@ -88,6 +88,11 @@ General Options:
Execute a single configure step Execute a single configure step
--ask Have Configure ask for commonly-changed info --ask Have Configure ask for commonly-changed info
--test=configure Run tests of configuration tools before configuring
--test=build Run tests of build tools after configuring but before
calling 'make'
--test Run configuration tools tests, configure, then run
build tools tests
Compile Options: Compile Options:
Expand Down
214 changes: 214 additions & 0 deletions lib/Parrot/Configure/Options/Test.pm
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,214 @@
# 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, then configure
perl Configure.pl --test=configure
# configure, then run tests of build tools
perl Configure.pl --test=build
# run tests of configuration tools, then configure,
# then run tests of build tools
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:
Loading

0 comments on commit 84c64a2

Please sign in to comment.