fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / steps / auto / warnings-01.t
blob1b0755335804340a16da088d7d4b42f852cb98d3
1 #! perl
2 # Copyright (C) 2007, Parrot Foundation.
3 # $Id$
4 # auto/warnings-01.t
6 use strict;
7 use warnings;
8 use Test::More tests =>  18;
9 use Carp;
10 use lib qw( lib t/configure/testlib );
11 use_ok('config::auto::warnings');
12 use Parrot::Configure::Options qw( process_options );
13 use Parrot::Configure::Step::Test;
14 use Parrot::Configure::Test qw(
15     test_step_constructor_and_description
17 use IO::CaptureOutput qw | capture |;
19 my ($args, $step_list_ref) = process_options(
20     {
21         argv => [ ],
22         mode => q{configure},
23     }
26 my $conf = Parrot::Configure::Step::Test->new;
27 $conf->include_config_results( $args );
29 my $pkg = q{auto::warnings};
31 $conf->add_steps($pkg);
33 my $serialized = $conf->pcfreeze();
34 my $step;
36 SKIP: {
37     skip 'Tests not yet passing on Sun/Solaris',
38     23
39     if $^O =~ m/sun|solaris/i;
41 # Simulate the  case where C compiler is not gcc.
42 $conf->options->set( %{$args} );
43 $step = test_step_constructor_and_description($conf);
44 $conf->data->set( gccversion => undef );
45 ok($step->runstep($conf), "runstep() returned true value");
46 is($step->result(), q{skipped}, "Got expected result");
48 $step->set_result( undef );
49 $conf->replenish($serialized);
51 # Simulate the case where C compiler is not gcc:  verbose
52 $conf->options->set( verbose => 1 );
53 $step = test_step_constructor_and_description($conf);
54 $conf->data->set( gccversion => undef );
56     my ($stdout, $stderr, $rv);
57     capture(
58         sub { $rv = $step->runstep($conf); },
59         \$stdout,
60         \$stderr,
61     );
62     ok($rv, "runstep() returned true value");
63     is($step->result(), q{skipped}, "Got expected result");
64     like($stdout, qr/We do not \(yet\) probe for warnings for your compiler/s,
65         "Got expected verbose output: compiler with warnings not yet supported" );
68 $step->set_result( undef );
69 $conf->replenish($serialized);
71 # Simulate case where --cage warnings are requested
72 $conf->options->set( verbose => undef );
73 $step = test_step_constructor_and_description($conf);
74 $conf->data->set( gccversion => 'defined' );
75 $conf->data->set( 'g++' => undef );
76 $conf->options->set( cage => 1 );
77 ok($step->runstep($conf), "runstep() returned true value");
79 # This test is fragile, as it depends on the current state of --cage,
80 # which changes over time, and on the compiler, which may not support
81 # this option.
82 like($conf->data->get( 'ccwarn' ),
83     qr/-Wunreachable-code/,
84     "'cage' warning set as expected"
87 } # End SKIP block for Sun/Solaris
89 $conf->cc_clean();
91 pass("Completed all tests in $0");
93 ################### DOCUMENTATION ###################
95 =head1 NAME
97 auto/warnings-01.t - test auto::warnings
99 =head1 SYNOPSIS
101     % prove t/steps/auto/warnings-01.t
103 =head1 DESCRIPTION
105 The files in this directory test functionality used by F<Configure.pl>.
107 The tests in this file test aspects of auto::warnings.
109 =head1 AUTHOR
111 James E Keenan
113 =head1 SEE ALSO
115 config::auto::warnings, F<Configure.pl>.
117 =cut
119 # Local Variables:
120 #   mode: cperl
121 #   cperl-indent-level: 4
122 #   fill-column: 100
123 # End:
124 # vim: expandtab shiftwidth=4: