Patch attached refactors configuration step auto::socklen_t to maximize testability. Patch also includes two test files which replace placeholder file. Will commit to trunk in 2-3 days if there is no objection.
Index: MANIFEST =================================================================== --- MANIFEST (revision 22711) +++ MANIFEST (working copy) @@ -1,7 +1,7 @@ # ex: set ro: # $Id$ # -# generated by tools/dev/mk_manifest_and_skip.pl Sun Nov 4 15:38:46 2007 UT +# generated by tools/dev/mk_manifest_and_skip.pl Mon Nov 5 03:18:19 2007 UT # # See tools/dev/install_files.pl for documentation on the # format of this file. @@ -3082,7 +3082,8 @@ t/configure/137-auto_gc.t [] t/configure/138-auto_memalign-01.t [] t/configure/139-auto_signal-01.t [] -t/configure/140-auto_socklen_t.t [] +t/configure/140-auto_socklen_t-01.t [] +t/configure/140-auto_socklen_t-02.t [] t/configure/141-auto_env.t [] t/configure/142-auto_aio.t [] t/configure/143-auto_gmp.t [] Index: t/configure/140-auto_socklen_t-01.t =================================================================== --- t/configure/140-auto_socklen_t-01.t (revision 0) +++ t/configure/140-auto_socklen_t-01.t (revision 0) @@ -0,0 +1,80 @@ +#! perl +# Copyright (C) 2007, The Perl Foundation. +# $Id$ +# 140-auto_socklen_t-01.t + +use strict; +use warnings; +use Test::More tests => 12; +use Carp; +use lib qw( lib t/configure/testlib ); +use_ok('config::init::defaults'); +use_ok('config::auto::socklen_t'); +use Parrot::Configure; +use Parrot::Configure::Options qw( process_options ); +use Parrot::Configure::Test qw( test_step_thru_runstep); + +my $args = process_options( + { + argv => [ ], + mode => q{configure}, + } +); + +my $conf = Parrot::Configure->new; + +test_step_thru_runstep( $conf, q{init::defaults}, $args ); + +my $pkg = q{auto::socklen_t}; + +$conf->add_steps($pkg); +$conf->options->set( %{$args} ); + +my ( $task, $step_name, @step_params, $step); +$task = $conf->steps->[1]; +$step_name = $task->step; [EMAIL PROTECTED] = @{ $task->params }; + +$step = $step_name->new(); +ok( defined $step, "$step_name constructor returned defined value" ); +isa_ok( $step, $step_name ); +ok( $step->description(), "$step_name has description" ); + +my $ret = $step->runstep($conf); +ok( $ret, "$step_name runstep() returned true value" ); +ok(defined($step->result()), "A result has been defiined"); + +pass("Completed all tests in $0"); + +################### DOCUMENTATION ################### + +=head1 NAME + +140-auto_socklen_t-01.t - test config::auto::socklen_t + +=head1 SYNOPSIS + + % prove t/configure/140-auto_socklen_t-01.t + +=head1 DESCRIPTION + +The files in this directory test functionality used by F<Configure.pl>. + +The tests in this file test subroutines exported by config::auto::socklen_t. + +=head1 AUTHOR + +James E Keenan + +=head1 SEE ALSO + +config::auto::socklen_t, F<Configure.pl>. + +=cut + +# Local Variables: +# mode: cperl +# cperl-indent-level: 4 +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4:
Property changes on: t/configure/140-auto_socklen_t-01.t ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Index: t/configure/140-auto_socklen_t.t =================================================================== --- t/configure/140-auto_socklen_t.t (revision 22711) +++ t/configure/140-auto_socklen_t.t (working copy) @@ -1,54 +0,0 @@ -#! perl -# Copyright (C) 2007, The Perl Foundation. -# $Id$ -# 140-auto_socklen_t.t - -use strict; -use warnings; -use Test::More tests => 2; -use Carp; -use lib qw( lib ); -use_ok('config::auto::socklen_t'); - -=for hints_for_testing The documentation for this package is skimpy; -please try to improve it, e.g., by explaining what a socklent_t is. Try -to cover all branches and conditions. Check latest reports of Parrot -configuration tools testing coverage to see where your time available -for writing tests is spent. - -=cut - -pass("Completed all tests in $0"); - -################### DOCUMENTATION ################### - -=head1 NAME - -140-auto_socklen_t.t - test config::auto::socklen_t - -=head1 SYNOPSIS - - % prove t/configure/140-auto_socklen_t.t - -=head1 DESCRIPTION - -The files in this directory test functionality used by F<Configure.pl>. - -The tests in this file test subroutines exported by config::auto::socklen_t. - -=head1 AUTHOR - -James E Keenan - -=head1 SEE ALSO - -config::auto::socklen_t, F<Configure.pl>. - -=cut - -# Local Variables: -# mode: cperl -# cperl-indent-level: 4 -# fill-column: 100 -# End: -# vim: expandtab shiftwidth=4: Index: t/configure/140-auto_socklen_t-02.t =================================================================== --- t/configure/140-auto_socklen_t-02.t (revision 0) +++ t/configure/140-auto_socklen_t-02.t (revision 0) @@ -0,0 +1,96 @@ +#! perl +# Copyright (C) 2007, The Perl Foundation. +# $Id$ +# 140-auto_socklen_t-02.t + +use strict; +use warnings; +use Test::More qw(no_plan); # tests => 12; +use Carp; +use lib qw( lib t/configure/testlib ); +use_ok('config::init::defaults'); +use_ok('config::auto::socklen_t'); +use Parrot::Configure; +use Parrot::Configure::Options qw( process_options ); +use Parrot::Configure::Test qw( test_step_thru_runstep); + +my $args = process_options( + { + argv => [ ], + mode => q{configure}, + } +); + +my $conf = Parrot::Configure->new; + +test_step_thru_runstep( $conf, q{init::defaults}, $args ); + +my $pkg = q{auto::socklen_t}; + +$conf->add_steps($pkg); +$conf->options->set( %{$args} ); + +my ( $task, $step_name, @step_params, $step); +$task = $conf->steps->[1]; +$step_name = $task->step; [EMAIL PROTECTED] = @{ $task->params }; + +$step = $step_name->new(); +ok( defined $step, "$step_name constructor returned defined value" ); +isa_ok( $step, $step_name ); +ok( $step->description(), "$step_name has description" ); + +#my $ret = $step->runstep($conf); +#ok( $ret, "$step_name runstep() returned true value" ); +#ok(defined($step->result()), "A result has been defiined"); +my $d_socklen_t; + +$d_socklen_t = q{alpha}; +ok($step->_evaluate_socklen_t($conf, $d_socklen_t), + "_evaluate_socklen_t() completed satisfactorily"); +is($step->result(), q{yes}, "Got expected result"); +is($conf->data->get('has_socklen_t'), 1, + "has_socklen_t set as expected"); + +$d_socklen_t = undef; +ok($step->_evaluate_socklen_t($conf, $d_socklen_t), + "_evaluate_socklen_t() completed satisfactorily"); +is($step->result(), q{no}, "Got expected result"); +is($conf->data->get('has_socklen_t'), 0, + "has_socklen_t set as expected"); + + +pass("Completed all tests in $0"); + +################### DOCUMENTATION ################### + +=head1 NAME + +140-auto_socklen_t-02.t - test config::auto::socklen_t + +=head1 SYNOPSIS + + % prove t/configure/140-auto_socklen_t-02.t + +=head1 DESCRIPTION + +The files in this directory test functionality used by F<Configure.pl>. + +The tests in this file test subroutines exported by config::auto::socklen_t. + +=head1 AUTHOR + +James E Keenan + +=head1 SEE ALSO + +config::auto::socklen_t, F<Configure.pl>. + +=cut + +# Local Variables: +# mode: cperl +# cperl-indent-level: 4 +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4: Property changes on: t/configure/140-auto_socklen_t-02.t ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Index: config/auto/socklen_t.pm =================================================================== --- config/auto/socklen_t.pm (revision 22711) +++ config/auto/socklen_t.pm (working copy) @@ -35,15 +35,25 @@ sub runstep { my ( $self, $conf ) = @_; - my $d_socklen_t = $conf->data->get('has_socklen_t'); - $d_socklen_t = $Config{d_socklen_t} unless defined $d_socklen_t; - my $has_socklen_t = ( $d_socklen_t && $d_socklen_t ne 'undef' ) ? 1 : 0; - $self->set_result( $has_socklen_t ? 'yes' : 'no' ); - $conf->data->set( has_socklen_t => $has_socklen_t, ); + my $d_socklen_t = _probe_for_socklen_t($conf); + $self->_evaluate_socklen_t($conf, $d_socklen_t); + return 1; } +sub _probe_for_socklen_t { + my $conf = shift; + return $conf->data->get('has_socklen_t') || $Config{d_socklen_t}; +} + +sub _evaluate_socklen_t { + my ($self, $conf, $d_socklen_t) = @_; + my $has_socklen_t = $d_socklen_t ? 1 : 0; + $self->set_result( $has_socklen_t ? 'yes' : 'no' ); + $conf->data->set( has_socklen_t => $has_socklen_t ); +} + 1; # Local Variables: