[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