[svn:parrot] r41933 - in branches/auto_libjit: config/auto t/steps/auto
jkeenan at svn.parrot.org
jkeenan at svn.parrot.org
Sun Oct 18 17:28:19 UTC 2009
Author: jkeenan
Date: Sun Oct 18 17:28:18 2009
New Revision: 41933
URL: https://trac.parrot.org/parrot/changeset/41933
Log:
Refactor some code into _handle_has_libjit() and write tests for it. Reduce the number of points at which runstep() returns to facilitate good test coverage.
Modified:
branches/auto_libjit/config/auto/libjit.pm
branches/auto_libjit/t/steps/auto/libjit-01.t
Modified: branches/auto_libjit/config/auto/libjit.pm
==============================================================================
--- branches/auto_libjit/config/auto/libjit.pm Sun Oct 18 16:49:56 2009 (r41932)
+++ branches/auto_libjit/config/auto/libjit.pm Sun Oct 18 17:28:18 2009 (r41933)
@@ -38,54 +38,43 @@
without-libjit
});
+ my ($has_libjit, $extra_libs);
if ($without) {
- $conf->data->set( HAS_LIBJIT => 0 );
- $self->set_result('no');
- return 1;
- }
-
- my $extra_libs = $self->_select_lib( {
- conf => $conf,
- osname => $conf->data->get_p5('OSNAME'),
- cc => $conf->data->get('cc'),
- win32_nongcc => 'libjit.lib',
- default => '-ljit',
- } );
- my $has_libjit = 0;
-
- $conf->cc_gen('config/auto/libjit/libjit_c.in');
- eval { $conf->cc_build('', $extra_libs) };
- if ($@) {
- print "cc_build() failed: $@\n" if $verbose;
- $conf->data->set( HAS_LIBJIT => 0 );
- $self->set_result('no');
- return 1;
+ $has_libjit = 0;
}
else {
- my $test;
- eval { $test = $conf->cc_run(); };
+ $extra_libs = $self->_select_lib( {
+ conf => $conf,
+ osname => $conf->data->get_p5('OSNAME'),
+ cc => $conf->data->get('cc'),
+ win32_nongcc => 'libjit.lib',
+ default => '-ljit',
+ } );
+
+ $conf->cc_gen('config/auto/libjit/libjit_c.in');
+ eval { $conf->cc_build('', $extra_libs) };
if ($@) {
- print "cc_run() failed: $@\n" if $verbose;
- $conf->data->set( HAS_LIBJIT => 0 );
- $self->set_result('no');
- return 1;
+ print "cc_build() failed: $@\n" if $verbose;
+ $has_libjit = 0;
}
else {
- $has_libjit = $self->_evaluate_cc_run($test, $has_libjit, $verbose);
+ my $test;
+ eval { $test = $conf->cc_run(); };
+ if ($@) {
+ print "cc_run() failed: $@\n" if $verbose;
+ $has_libjit = 0;
+ }
+ else {
+ $has_libjit =
+ $self->_evaluate_cc_run($test, $has_libjit, $verbose);
+ }
}
+ $conf->cc_clean();
}
$conf->data->set( HAS_LIBJIT => $has_libjit );
+ _handle_has_libjit($conf, $has_libjit, $extra_libs);
$self->set_result( $has_libjit ? 'yes' : 'no' );
- $conf->cc_clean();
-
- if ($has_libjit) {
- $conf->data->set(
- cc_build_call_frames => '-DCAN_BUILD_CALL_FRAMES',
- has_exec_protect => 1,
- );
- $conf->data->add( ' ', libs => $extra_libs );
- }
return 1;
}
@@ -100,6 +89,17 @@
return $has_libjit;
}
+sub _handle_has_libjit {
+ my ($conf, $has_libjit, $extra_libs) = @_;
+ if ($has_libjit) {
+ $conf->data->set(
+ cc_build_call_frames => '-DCAN_BUILD_CALL_FRAMES',
+ has_exec_protect => 1,
+ );
+ $conf->data->add( ' ', libs => $extra_libs );
+ }
+}
+
1;
# Local Variables:
Modified: branches/auto_libjit/t/steps/auto/libjit-01.t
==============================================================================
--- branches/auto_libjit/t/steps/auto/libjit-01.t Sun Oct 18 16:49:56 2009 (r41932)
+++ branches/auto_libjit/t/steps/auto/libjit-01.t Sun Oct 18 17:28:18 2009 (r41933)
@@ -6,7 +6,7 @@
use strict;
use warnings;
-use Test::More tests => 28;
+use Test::More tests => 34;
use lib qw( lib t/configure/testlib );
use Parrot::Configure;
use Parrot::Configure::Options 'process_options';
@@ -20,8 +20,6 @@
use_ok('config::init::defaults');
use_ok('config::auto::libjit');
-########## _select_lib() ##########
-
my ($args, $step_list_ref) = process_options( {
argv => [ q{--without-libjit} ],
mode => 'configure',
@@ -103,6 +101,35 @@
like( $stdout, qr/\(yes\)/, "Got expected verbose output" );
}
+########## _handle_has_libjit() ##########
+
+my $extra_libs;
+
+$conf->data->set( 'cc_build_call_frames' => undef );
+$conf->data->set( 'has_exec_protect' => undef );
+$conf->data->set( 'libs' => '' );
+$has_libjit = 1;
+$extra_libs = 'mylibs';
+auto::libjit::_handle_has_libjit($conf, $has_libjit, $extra_libs);
+is( $conf->data->get( 'cc_build_call_frames' ), '-DCAN_BUILD_CALL_FRAMES',
+ "Got expected value for cc_build_call_frames" );
+ok( $conf->data->get( 'has_exec_protect' ), "has_exec_protect' set" );
+is( $conf->data->get( 'libs' ), " $extra_libs",
+ "Got expected value for libs" );
+
+$conf->data->set( 'cc_build_call_frames' => undef );
+$conf->data->set( 'has_exec_protect' => undef );
+$conf->data->set( 'libs' => '' );
+$has_libjit = 0;
+$extra_libs = 'mylibs';
+auto::libjit::_handle_has_libjit($conf, $has_libjit, $extra_libs);
+ok( ! defined($conf->data->get( 'cc_build_call_frames' )),
+ "cc_build_call_frames undefined as expected" );
+ok( ! defined($conf->data->get( 'has_exec_protect' )),
+ "has_exec_protect' undefined" );
+is( $conf->data->get( 'libs' ), "",
+ "Got expected value for libs" );
+
################### DOCUMENTATION ###################
=head1 NAME
More information about the parrot-commits
mailing list