[svn:parrot] r42437 - in branches/configtests: config/auto config/gen t/steps/auto t/steps/gen

jkeenan at svn.parrot.org jkeenan at svn.parrot.org
Thu Nov 12 03:30:58 UTC 2009


Author: jkeenan
Date: Thu Nov 12 03:30:53 2009
New Revision: 42437
URL: https://trac.parrot.org/parrot/changeset/42437

Log:
[config] As in trunk:  move determination of 'platform' to auto::arch from gen::platform.  Modify tests accordingly.

Modified:
   branches/configtests/config/auto/arch.pm
   branches/configtests/config/gen/platform.pm
   branches/configtests/t/steps/auto/arch-01.t
   branches/configtests/t/steps/gen/platform-01.t

Modified: branches/configtests/config/auto/arch.pm
==============================================================================
--- branches/configtests/config/auto/arch.pm	Thu Nov 12 03:28:30 2009	(r42436)
+++ branches/configtests/config/auto/arch.pm	Thu Nov 12 03:30:53 2009	(r42437)
@@ -46,7 +46,7 @@
 
     if ($verbose) {
         print "determining operating system and cpu architecture\n";
-        print "archname: <$archname>\n";
+        print "archname: $archname\n";
     }
 
     if ( !defined $osname ) {
@@ -92,13 +92,43 @@
     $cpuarch =~ s/i[456]86/i386/i;
     $cpuarch =~ s/x86_64/amd64/i;
 
-    print "osname: $osname\ncpuarch: $cpuarch\n" if $verbose;
-
     $conf->data->set(
         cpuarch  => $cpuarch,
         osname   => $osname
     );
 
+    $conf->data->set( 'platform' => $self->_get_platform( $conf ) );
+
+    _report_verbose( $conf );
+
+    return 1;
+}
+
+sub _get_platform {
+    my ($self, $conf) = @_;
+    my $platform = lc ( $conf->data->get('osname') );
+
+    $platform = "win32" if $platform =~ /^msys/;
+    $platform = "win32" if $platform =~ /^mingw/;
+    $platform =~ s/^ms//;
+
+    if ( ( split m/-/, $conf->data->get('archname'), 2 )[0] eq 'ia64' ) {
+        $platform = 'ia64';
+    }
+
+    $platform = 'generic' unless -d "config/gen/platform/$platform";
+
+    return $platform;
+}
+
+sub _report_verbose {
+    my ($conf) = @_;
+    my $verbose = $conf->options->get( 'verbose' );
+    if ( $verbose ) {
+        print "osname:   ", $conf->data->get('osname'), "\n";
+        print "cpuarch:  ", $conf->data->get('cpuarch'), "\n";
+        print "platform: ", $conf->data->get('platform'), "\n";
+    }
     return 1;
 }
 

Modified: branches/configtests/config/gen/platform.pm
==============================================================================
--- branches/configtests/config/gen/platform.pm	Thu Nov 12 03:28:30 2009	(r42436)
+++ branches/configtests/config/gen/platform.pm	Thu Nov 12 03:30:53 2009	(r42437)
@@ -41,46 +41,26 @@
     my ( $self, $conf ) = @_;
 
     my $verbose     = $conf->options->get('verbose');
-    my $platform    = $self->_get_platform( $conf, $verbose );
     my $generated   = $self->_get_generated($conf, $verbose);
 
 
     # headers are merged into platform.h
-    $self->_set_headers($conf, $verbose, $platform, $generated);
+    $self->_set_headers($conf, $verbose, $generated);
 
     # implementation files are merged into platform.c
-    $self->_set_implementations($conf, $verbose, $platform, $generated);
+    $self->_set_implementations($conf, $verbose, $generated);
 
-    $self->_handle_asm($conf, $platform);
+    $self->_handle_asm($conf);
 
     # interface is the same for all platforms
     copy_if_diff( $self->{platform_interface},
         "include/parrot/platform_interface.h" );
 
-    $self->_set_limits($conf, $verbose, $platform);
+    $self->_set_limits($conf, $verbose);
 
     return 1;
 }
 
-sub _get_platform {
-    my $self = shift;
-    my ($conf, $verbose) = @_;
-    my $platform = lc ( $conf->data->get('osname') );
-
-    $platform = "win32" if $platform =~ /^msys/;
-    $platform = "win32" if $platform =~ /^mingw/;
-    $platform =~ s/^ms//;
-
-    if ( ( split m/-/, $conf->data->get_p5('archname'), 2 )[0] eq 'ia64' ) {
-        $platform = 'ia64';
-    }
-
-    $platform = 'generic' unless -d "config/gen/platform/$platform";
-
-    print " platform='$platform' " if $verbose;
-    return $platform;
-}
-
 sub _get_generated {
     my $self = shift;
     my ($conf, $verbose) = @_;
@@ -92,7 +72,8 @@
 
 sub _set_headers {
     my $self = shift;
-    my ($conf, $verbose, $platform, $generated) = @_;
+    my ($conf, $verbose, $generated) = @_;
+    my $platform = $conf->data->get('platform');
     my @headers = qw/
         io.h
         math.h
@@ -197,7 +178,8 @@
 
 sub _set_limits {
     my $self = shift;
-    my ($conf, $verbose, $platform) = @_;
+    my ($conf, $verbose) = @_;
+    my $platform = $conf->data->get('platform');
 
     my $limits = "config/gen/platform/generic/platform_limits.h";
     if ( -e "config/gen/platform/$platform/platform_limits.h" ) {
@@ -210,7 +192,8 @@
 
 sub _set_implementations {
     my $self = shift;
-    my ($conf, $verbose, $platform, $generated) = @_;
+    my ($conf, $verbose, $generated) = @_;
+    my $platform = $conf->data->get('platform');
     my @impls = qw/
         time.c
         env.c
@@ -336,8 +319,8 @@
 }
 
 sub _handle_asm {
-    my $self = shift;
-    my ($conf, $platform) = @_;
+    my ($self, $conf) = @_;
+    my $platform = $conf->data->get('platform');
     if ( $conf->data->get('platform_asm') ) {
         my $asm_file = "config/gen/platform/$platform/asm.s";
         if ( -e $asm_file ) {

Modified: branches/configtests/t/steps/auto/arch-01.t
==============================================================================
--- branches/configtests/t/steps/auto/arch-01.t	Thu Nov 12 03:28:30 2009	(r42436)
+++ branches/configtests/t/steps/auto/arch-01.t	Thu Nov 12 03:30:53 2009	(r42437)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests =>  70;
+use Test::More tests =>  84;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::auto::arch');
@@ -98,7 +98,7 @@
 my $pseudoarch = q{foobar};
 $conf->data->set('archname' => $pseudoarch);
 my $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{},
     "'cpuarch' was set as expected");
@@ -122,7 +122,7 @@
 my $pseudobyteorder = 1234;
 $conf->data->set('byteorder' => $pseudobyteorder);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{i386},
     "'cpuarch' was set as expected");
@@ -146,7 +146,7 @@
 $pseudobyteorder = 4321;
 $conf->data->set('byteorder' => $pseudobyteorder);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{ppc},
     "'cpuarch' was set as expected");
@@ -168,7 +168,7 @@
 $pseudoarch = q{MSWin32-x64};
 $conf->data->set('archname' => $pseudoarch);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{amd64},
     "'cpuarch' was set as expected");
@@ -190,7 +190,7 @@
 $pseudoarch = q{MSWin32-i386};
 $conf->data->set('archname' => $pseudoarch);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{i386},
     "'cpuarch' was set as expected");
@@ -212,7 +212,7 @@
 $pseudoarch = q{cygwin};
 $conf->data->set('archname' => $pseudoarch);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{i386},
     "'cpuarch' was set as expected");
@@ -234,7 +234,7 @@
 $pseudoarch = q{powerpc-linux};
 $conf->data->set('archname' => $pseudoarch);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{ppc},
     "'cpuarch' was set as expected");
@@ -256,13 +256,88 @@
 $pseudoarch = q{cygwin-i486};
 $conf->data->set('archname' => $pseudoarch);
 $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
+ok( $ret, "runstep() returned true value: $pseudoarch" );
 is($step->result(), q{}, "Result was empty string as expected");
 is($conf->data->get('cpuarch'), q{i386},
     "'cpuarch' was set as expected");
 is($conf->data->get('osname'), q{cygwin},
     "'osname' was set as expected");
 
+########## mock solaris i86pc ##########
+
+($args, $step_list_ref) = process_options( {
+    argv => [ ],
+    mode => q{configure},
+} );
+
+$conf->add_steps($pkg);
+$conf->options->set( %{$args} );
+$step = test_step_constructor_and_description($conf);
+$pseudoarch = q{i86pc-solaris};
+$conf->data->set('archname' => $pseudoarch);
+$ret = $step->runstep($conf);
+ok( $ret, "runstep() returned true value: $pseudoarch" );
+is($step->result(), q{}, "Result was empty string as expected");
+# Since on this architecture we call uname -p,
+# we cannot test 'cpuarch' easily
+#is($conf->data->get('cpuarch'), q{},
+#    "'cpuarch' was set as expected");
+is($conf->data->get('osname'), q{solaris},
+    "'osname' was set as expected");
+
+########## _get_platform() ##########
+
+my $exp;
+
+$conf->data->set( osname => 'msys' );
+$conf->data->set( archname => 'foo' );
+$exp = q{win32};
+is( $step->_get_platform( $conf ), $exp,
+    "Got expected platform for $exp");
+
+$conf->data->set( osname => 'mingw' );
+$conf->data->set( archname => 'foo' );
+$exp = q{win32};
+is( $step->_get_platform( $conf ), $exp,
+    "Got expected platform for $exp");
+
+$conf->data->set( osname => 'MSWin32' );
+$conf->data->set( archname => 'foo' );
+$exp = q{win32};
+is( $step->_get_platform( $conf ), $exp,
+    "Got expected platform for $exp");
+
+$conf->data->set( archname => 'ia64-bar' );
+$exp = q{ia64};
+is( $step->_get_platform( $conf ), $exp,
+    "Got expected platform for $exp");
+
+$conf->data->set( archname => 'foo-bar' );
+$conf->data->set( osname => 'bar' );
+$exp = q{generic};
+is( $step->_get_platform( $conf ), $exp,
+    "Got expected platform for $exp");
+
+########## _report_verbose() ##########
+
+$conf->data->set( osname   => 'foo' );
+$conf->data->set( cpuarch  => 'bar' );
+$conf->data->set( platform => 'baz' );
+$conf->options->set( verbose => 1 );
+{
+    my ($stdout, $stderr);
+    capture(
+        sub { auto::arch::_report_verbose($conf); },
+        \$stdout,
+        \$stderr,
+    );
+    like( $stdout, qr/osname:\s+?foo/s,
+        "Got expected verbose output" );
+    like( $stdout, qr/cpuarch:\s+?bar/s,
+        "Got expected verbose output" );
+    like( $stdout, qr/platform:\s+?baz/s,
+        "Got expected verbose output" );
+}
 pass("Completed all tests in $0");
 
 sub _capture { $errstr = $_[0]; }

Modified: branches/configtests/t/steps/gen/platform-01.t
==============================================================================
--- branches/configtests/t/steps/gen/platform-01.t	Thu Nov 12 03:28:30 2009	(r42436)
+++ branches/configtests/t/steps/gen/platform-01.t	Thu Nov 12 03:30:53 2009	(r42437)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 19;
+use Test::More tests => 13;
 use Carp;
 use Cwd;
 use File::Copy;
@@ -43,51 +43,10 @@
     "Located required platform interface header");
 
 my $platform_orig = $conf->data->get('osname');
-my $archname_orig = $conf->data->get_p5('archname');
+my $archname_orig = $conf->data->get('archname');
 $conf->data->set_p5( archname => 'foo-bar' );
 my $verbose = 0;
 
-########## _get_platform() ##########
-
-$conf->data->set( osname => 'msys' );
-is( $step->_get_platform( $conf, $verbose ), q{win32},
-    "Got expected platform for msys");
-
-$conf->data->set( osname => 'mingw' );
-is( $step->_get_platform( $conf, $verbose ), q{win32},
-    "Got expected platform for mingw");
-
-$conf->data->set( osname => 'MSWin32' );
-is( $step->_get_platform( $conf, $verbose ), q{win32},
-    "Got expected platform for MSWin32");
-
-# re-set to original values
-$conf->data->set( osname => $platform_orig );
-$conf->data->set_p5( archname => $archname_orig );
-
-$conf->data->set_p5( archname => 'ia64-bar' );
-is( $step->_get_platform( $conf, $verbose ), q{ia64},
-    "Got expected platform for ia64");
-
-$conf->data->set_p5( archname => 'foo-bar' );
-$conf->data->set( osname => 'foo' );
-{
-    $verbose = 1;
-    my ($stdout, $stderr, $rv);
-    my $expected = q{generic};
-    capture(
-        sub { $rv = $step->_get_platform( $conf, $verbose ) },
-        \$stdout,
-        \$stderr,
-    );
-    is( $rv, $expected, "Got expected platform for foo");
-    like( $stdout, qr/platform='$expected'/, "Got expected verbose output");
-}
-
-# re-set to original values
-$conf->data->set_p5( archname => $archname_orig );
-$conf->data->set( osname => $platform_orig );
-
 ########## _get_generated() ##########
 
 my $TEMP_generated_orig = $conf->data->get('TEMP_generated');
@@ -121,12 +80,13 @@
     chdir $tdir or croak "Unable to change to temporary directory";
     $conf->data->set( platform_asm => 1 );
     my $platform = 'aix';
+    $conf->data->set( platform => $platform );
     mkpath( 'src', { mode => 0755 } ) or croak "Unable to make testing directory";
     my $asmfile = File::Spec->catfile( 'src', 'platform_asm.s' );
     open my $FH, '>', $asmfile or croak "Unable to open handle for writing";
     print $FH "Hello asm\n";
     close $FH or croak "Unable to close handle after writing";
-    $step->_handle_asm($conf, $platform);
+    $step->_handle_asm($conf);
     my $text = _slurp( $asmfile );
     like($text, qr/Hello asm/s, "File unchanged, as expected");
 
@@ -134,14 +94,17 @@
 }
 # re-set to original values
 $conf->data->set( platform_asm => $platform_asm_orig );
+$conf->data->set( platform     => $platform_orig );
 
 {
     my $tdir = tempdir( CLEANUP => 1 );
     chdir $tdir or croak "Unable to change to temporary directory";
     $conf->data->set( platform_asm => 1 );
     my $platform = 'aix';
+    $conf->data->set( platform => $platform );
 
-    mkpath( 'src', { mode => 0755 } ) or croak "Unable to make testing directory";
+    mkpath( 'src', { mode => 0755 } )
+        or croak "Unable to make testing directory";
 
     my $asmfile = File::Spec->catfile( 'src', 'platform_asm.s' );
     open my $FH, '>', $asmfile or croak "Unable to open handle for writing";
@@ -149,14 +112,15 @@
     close $FH or croak "Unable to close handle after writing";
 
     my $path = File::Spec->catdir( 'config', 'gen', 'platform', $platform );
-    mkpath( $path, { mode => 0755 } ) or croak "Unable to make testing directory";
+    mkpath( $path, { mode => 0755 } )
+        or croak "Unable to make testing directory";
 
     my $configfile = File::Spec->catfile( $path, 'asm.s' );
     open my $FH2, '>', $configfile or croak "Unable to open handle for writing";
     print $FH2 "Goodbye world\n";
     close $FH2 or croak "Unable to close handle after writing";
 
-    $step->_handle_asm($conf, $platform);
+    $step->_handle_asm($conf);
 
     my $text = _slurp( $asmfile );
     like($text, qr/Goodbye world/s, "File changed, as expected");
@@ -165,12 +129,14 @@
 }
 # re-set to original values
 $conf->data->set( platform_asm => $platform_asm_orig );
+$conf->data->set( platform     => $platform_orig );
 
 ########## _handle_begin_c() ##########
 {
     my $tdir = tempdir( CLEANUP => 1 );
     chdir $tdir or croak "Unable to change to temporary directory";
     my $platform = 'darwin';
+    $conf->data->set( platform => $platform );
 
     my $path = File::Spec->catdir( 'config', 'gen', 'platform', $platform );
     mkpath( $path, { mode => 0755 } ) or croak "Unable to make testing directory";


More information about the parrot-commits mailing list