[svn:parrot] r41786 - in branches/detect_llvm: config/auto t/steps/auto

jkeenan at svn.parrot.org jkeenan at svn.parrot.org
Sat Oct 10 02:48:25 UTC 2009


Author: jkeenan
Date: Sat Oct 10 02:48:22 2009
New Revision: 41786
URL: https://trac.parrot.org/parrot/changeset/41786

Log:
Refactor code into _examine_llvm_gcc_version().  Add corresponding tests.

Modified:
   branches/detect_llvm/config/auto/llvm.pm
   branches/detect_llvm/t/steps/auto/llvm-01.t

Modified: branches/detect_llvm/config/auto/llvm.pm
==============================================================================
--- branches/detect_llvm/config/auto/llvm.pm	Sat Oct 10 01:40:49 2009	(r41785)
+++ branches/detect_llvm/config/auto/llvm.pm	Sat Oct 10 02:48:22 2009	(r41786)
@@ -52,35 +52,16 @@
     }
     my $output = q{};
     $output = capture_output( 'llvm-gcc', '--version' );
-    if (! $output) {
-        $llvm_lacking++;
-    }
 
     # Next, we make sure we have at least major version 4 of 'llvm-gcc'
-
-    else {
-        my @line = split /\n+/, $output;
-        if ( $line[0] =~ m/\b(\d+)\.(\d+)\.(\d+)\b/ ) {
-            my @version = ($1, $2, $3);
-            if ($version[0] < 4) {
-                print "llvm-gcc must be at least major version 4\n"
-                    if $verbose;
-                $llvm_lacking++;
-            }
-        }
-        else {
-            print "Unable to extract llvm-gcc major, minor and patch versions\n"
-                if $verbose;
-            $llvm_lacking++;
-        }
-    }
+    $llvm_lacking = _examine_llvm_gcc_version(
+        $output, $llvm_lacking, $verbose
+    );
             
+    # Finally, we see whether our LLVM actually works.
     if ( $llvm_lacking ) {
         $self->_handle_result( $conf, 0 );
     }
-
-    # Finally, we see whether our LLVM actually works.
-
     else {
 
         # Here we will take a simple C file, compile it into an LLVM bitcode
@@ -166,6 +147,30 @@
     return $llvm_lacking;
 }
 
+sub _examine_llvm_gcc_version {
+    my ( $output, $llvm_lacking, $verbose ) = @_;
+    if (! $output) {
+        $llvm_lacking++;
+    }
+    else {
+        my @line = split /\n+/, $output;
+        if ( $line[0] =~ m/\b(\d+)\.(\d+)\.(\d+)\b/ ) {
+            my @version = ($1, $2, $3);
+            if ($version[0] < 4) {
+                print "llvm-gcc must be at least major version 4\n"
+                    if $verbose;
+                $llvm_lacking++;
+            }
+        }
+        else {
+            print "Unable to extract llvm-gcc major, minor and patch versions\n"
+                if $verbose;
+            $llvm_lacking++;
+        }
+    }
+    return $llvm_lacking;
+}
+
 sub _handle_result {
     my ($self, $conf, $result) = @_;
     if ( $result ) {

Modified: branches/detect_llvm/t/steps/auto/llvm-01.t
==============================================================================
--- branches/detect_llvm/t/steps/auto/llvm-01.t	Sat Oct 10 01:40:49 2009	(r41785)
+++ branches/detect_llvm/t/steps/auto/llvm-01.t	Sat Oct 10 02:48:22 2009	(r41786)
@@ -6,7 +6,7 @@
 use strict;
 use warnings;
 use File::Temp qw( tempdir );
-use Test::More qw(no_plan); # tests =>  43;
+use Test::More tests =>  61;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::init::defaults');
@@ -173,6 +173,68 @@
     "Got expected verbose output: llvm lacking",
 );
 
+##### _examine_llvm_gcc_version() #####
+
+$output = '';
+$llvm_lacking = 0;
+$verbose = 0;
+$llvm_lacking =
+    auto::llvm::_examine_llvm_gcc_version( $output, $llvm_lacking, $verbose );
+ok( $llvm_lacking, "_examine_llvm_gcc_version() reported LLVM lacking" );
+
+$output = 'foobar';
+$llvm_lacking = 0;
+$verbose = 0;
+$llvm_lacking =
+    auto::llvm::_examine_llvm_gcc_version( $output, $llvm_lacking, $verbose );
+ok( $llvm_lacking, "_examine_llvm_gcc_version() reported LLVM lacking" );
+
+$output = '3.2.1';
+$llvm_lacking = 0;
+$verbose = 0;
+$llvm_lacking =
+    auto::llvm::_examine_llvm_gcc_version( $output, $llvm_lacking, $verbose );
+ok( $llvm_lacking, "_examine_llvm_gcc_version() reported LLVM lacking" );
+
+$output = '4.2.1';
+$llvm_lacking = 0;
+$verbose = 0;
+$llvm_lacking =
+    auto::llvm::_examine_llvm_gcc_version( $output, $llvm_lacking, $verbose );
+ok( ! $llvm_lacking, "_examine_llvm_gcc_version() reported LLVM not lacking" );
+
+$output = 'foobar';
+$llvm_lacking = 0;
+$verbose = 1;
+capture(
+    sub { $llvm_lacking = auto::llvm::_examine_llvm_gcc_version(
+            $output, $llvm_lacking, $verbose ); },
+    \$stdout,
+    \$stderr,
+);
+ok( $llvm_lacking, "_examine_llvm_gcc_version() reported LLVM lacking" );
+like(
+    $stdout,
+    qr/Unable to extract llvm-gcc major, minor and patch versions/,
+    "Got expected verbose output from _examine_llvm_gcc_version()",
+);
+
+$output = '3.2.1';
+$llvm_lacking = 0;
+$verbose = 1;
+capture(
+    sub { $llvm_lacking = auto::llvm::_examine_llvm_gcc_version(
+            $output, $llvm_lacking, $verbose ); },
+    \$stdout,
+    \$stderr,
+);
+ok( $llvm_lacking, "_examine_llvm_gcc_version() reported LLVM lacking" );
+like(
+    $stdout,
+    qr/llvm-gcc must be at least major version 4/,
+    "Got expected verbose output from _examine_llvm_gcc_version()",
+);
+
 ##### _handle_native_assembly_output() #####
 
 {


More information about the parrot-commits mailing list