fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / steps / auto / gmp-01.t
blob413ab66ac024bcd7dcea19a374e8ddd7193296e0
1 #! perl
2 # Copyright (C) 2007, Parrot Foundation.
3 # $Id$
4 # auto/gmp-01.t
6 use strict;
7 use warnings;
8 use Test::More tests =>  26;
9 use Carp;
10 use Cwd;
11 use File::Spec;
12 use File::Temp qw( tempdir );
13 use lib qw( lib t/configure/testlib );
14 use_ok('config::auto::gmp');
15 use Parrot::Configure::Options qw( process_options );
16 use Parrot::Configure::Step::Test;
17 use Parrot::Configure::Test qw(
18     test_step_constructor_and_description
20 use IO::CaptureOutput qw( capture );
22 =for hints_for_testing The documentation for this package is skimpy;
23 please try to improve it, e.g., by providing a link to an introduction
24 to the GNU MP library.
26 =cut
28 ########### --without-gmp ###########
30 my ($args, $step_list_ref) = process_options( {
31     argv => [ q{--without-gmp} ],
32     mode => q{configure},
33 } );
35 my $conf = Parrot::Configure::Step::Test->new;
36 $conf->include_config_results( $args );
38 my $pkg = q{auto::gmp};
40 $conf->add_steps($pkg);
42 my $serialized = $conf->pcfreeze();
44 $conf->options->set( %{$args} );
45 my $step = test_step_constructor_and_description($conf);
46 my $ret = $step->runstep($conf);
47 ok( $ret, "runstep() returned true value" );
48 is($conf->data->get('has_gmp'), 0,
49     "Got expected value for 'has_gmp'");
50 is($step->result(), q{no}, "Expected result was set");
52 $conf->replenish($serialized);
54 ########### _select_lib() ###########
56 ($args, $step_list_ref) = process_options( {
57     argv => [ ],
58     mode => q{configure},
59 } );
60 $conf->options->set( %{$args} );
61 $step = test_step_constructor_and_description($conf);
62 # Mock values for OS and C-compiler
63 my ($osname, $cc, $initial_value);
64 $osname = 'mswin32';
65 $cc = 'gcc';
66 $initial_value = $conf->data->get( 'libs' );
67 is($step->_select_lib( {
68     conf            => $conf,
69     osname          => $osname,
70     cc              => $cc,
71     win32_nongcc    => 'gmp.lib',
72     default         => '-lgmp',
73 } ),
74    '-lgmp',
75    "_select_lib() returned expected value");
77 $osname = 'mswin32';
78 $cc = 'cc';
79 is($step->_select_lib( {
80     conf            => $conf,
81     osname          => $osname,
82     cc              => $cc,
83     win32_nongcc    => 'gmp.lib',
84     default         => '-lgmp',
85 } ),
86    'gmp.lib',
87    "_select_lib() returned expected value");
89 $osname = 'foobar';
90 $cc = undef;
91 is($step->_select_lib( {
92     conf            => $conf,
93     osname          => $osname,
94     cc              => $cc,
95     win32_nongcc    => 'gmp.lib',
96     default         => '-lgmp',
97 } ),
98    '-lgmp',
99    "_select_lib() returned expected value");
101 my ($flagsbefore, $flagsafter);
102 my $cwd = cwd();
104 ########### _evaluate_cc_run() ###########
106 ($args, $step_list_ref) = process_options( {
107     argv => [ ],
108     mode => q{configure},
109 } );
110 $conf->options->set( %{$args} );
111 $step = test_step_constructor_and_description($conf);
113 my ($test, $has_gmp);
115 $test = $step->{cc_run_expected};
116 $has_gmp = 0;
117 $conf->options->set(verbose => undef);
118 $has_gmp = $step->_evaluate_cc_run($conf, $test, $has_gmp);
119 is($step->result, 'yes', "Got expected result");
120 is($conf->data->get('gmp'), 'define', "Expected value set for 'gmp'");
121 is($conf->data->get('HAS_GMP'), 1, "Expected value set for 'HAS_GMP'");
122 # prepare for next test
123 $conf->data->set('gmp' => undef);
124 $conf->data->set('HAS_GMP' => undef);
125 $step->set_result(undef);
127 $test = '12345';
128 $has_gmp = 0;
129 $conf->options->set(verbose => undef);
130 $has_gmp = $step->_evaluate_cc_run($conf, $test, $has_gmp);
131 ok(! defined($step->result), "Result undefined as expected");
132 is($has_gmp, 0, "gmp status unchanged");
135     my $stdout;
136     $test = $step->{cc_run_expected};
137     $has_gmp = 0;
138     $conf->options->set(verbose => 1);
139     capture(
140         sub { $has_gmp =
141             $step->_evaluate_cc_run($conf, $test, $has_gmp); },
142         \$stdout,
143     );
144     is($step->result, 'yes', "Got expected result");
145     is($conf->data->get('gmp'), 'define', "Expected value set for 'gmp'");
146     is($conf->data->get('HAS_GMP'), 1, "Expected value set for 'HAS_GMP'");
147     like($stdout, qr/\(yes\)/, "Got expected verbose output");
148     # prepare for next test
149     $conf->data->set('gmp' => undef);
150     $conf->data->set('HAS_GMP' => undef);
151     $step->set_result(undef);
154 pass("Completed all tests in $0");
156 ################### DOCUMENTATION ###################
158 =head1 NAME
160 auto/gmp-01.t - test auto::gmp
162 =head1 SYNOPSIS
164     % prove t/steps/auto/gmp-01.t
166 =head1 DESCRIPTION
168 The files in this directory test functionality used by F<Configure.pl>.
170 The tests in this file test auto::gmp.
172 =head1 AUTHOR
174 James E Keenan
176 =head1 SEE ALSO
178 config::auto::gmp, F<Configure.pl>.
180 =cut
182 # Local Variables:
183 #   mode: cperl
184 #   cperl-indent-level: 4
185 #   fill-column: 100
186 # End:
187 # vim: expandtab shiftwidth=4: