You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2006/10/24 19:47:17 UTC
svn commit: r467403 - in /lucene/lucy/trunk/perl: buildlib/Lucy/Build.pm
t/100-charmonizer.t
Author: marvin
Date: Tue Oct 24 10:47:17 2006
New Revision: 467403
URL: http://svn.apache.org/viewvc?view=rev&rev=467403
Log:
Add support for building Charmonizer test suite to perl build script. Add a
single test file which runs Charmonizer's test suite and passe or fails by
proxy.
Added:
lucene/lucy/trunk/perl/t/100-charmonizer.t
Modified:
lucene/lucy/trunk/perl/buildlib/Lucy/Build.pm
Modified: lucene/lucy/trunk/perl/buildlib/Lucy/Build.pm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/perl/buildlib/Lucy/Build.pm?view=diff&rev=467403&r1=467402&r2=467403
==============================================================================
--- lucene/lucy/trunk/perl/buildlib/Lucy/Build.pm (original)
+++ lucene/lucy/trunk/perl/buildlib/Lucy/Build.pm Tue Oct 24 10:47:17 2006
@@ -17,6 +17,7 @@
my $METAQUOTE_EXE_PATH = 'metaquote';
my $CHARMONIZE_EXE_PATH = 'charmonize';
my $CHARMONIZER_SOURCE_DIR = catdir( $base_dir, 'charmonizer', 'src' );
+my $FILTERED_DIR = catdir( $base_dir, qw( charmonizer filtered_src ) );
my $EXTRA_CCFLAGS
= $ENV{DEBUG_CHARM} ? " -ansi -pedantic -Wall -Wextra -std=c89 " : "";
@@ -49,18 +50,18 @@
# Build the charmonize executable.
sub ACTION_charmonizer {
- my $self = shift;
- my $filtered_dir = catdir( $base_dir, qw( charmonizer filtered_src ) );
- if ( !-d $filtered_dir ) {
- mkpath($filtered_dir) or die "can't mkpath '$filtered_dir': $!";
- }
+ my $self = shift;
$self->dispatch('metaquote');
- my $charm_source_files
- = $self->_find_charm_source_files($CHARMONIZER_SOURCE_DIR);
+ # gather .charm and .harm files and run them through metaquote
+ if ( !-d $FILTERED_DIR ) {
+ mkpath($FILTERED_DIR) or die "can't mkpath '$FILTERED_DIR': $!";
+ }
+ my $charm_source_files = $self->_find_files( $CHARMONIZER_SOURCE_DIR,
+ sub { $File::Find::name =~ /\.c?harm$/ } );
my $filtered_files = $self->_metaquote_charm_files($charm_source_files);
- my $charmonize_c = catfile($base_dir, qw( charmonizer charmonize.c ) );
+ my $charmonize_c = catfile( $base_dir, qw( charmonizer charmonize.c ) );
my @all_source = ( $charmonize_c, @$filtered_files );
# don't compile if we're up to date
@@ -73,6 +74,7 @@
my @o_files;
for (@all_source) {
next unless /\.c$/;
+ next if m#Charmonizer/Test#;
my $o_file = $cbuilder->object_file($_);
push @o_files, $o_file;
@@ -80,7 +82,7 @@
$cbuilder->compile(
source => $_,
- include_dirs => [$filtered_dir],
+ include_dirs => [$FILTERED_DIR],
extra_compiler_flags => $EXTRA_CCFLAGS,
);
}
@@ -90,16 +92,16 @@
exe_file => $CHARMONIZE_EXE_PATH,
);
- $self->add_to_cleanup( $filtered_dir, @$filtered_files, @o_files,
+ $self->add_to_cleanup( $FILTERED_DIR, @$filtered_files, @o_files,
$CHARMONIZE_EXE_PATH, );
}
-sub _find_charm_source_files {
- my ( $self, $dir ) = @_;
+sub _find_files {
+ my ( $self, $dir, $test_sub ) = @_;
my @files;
find(
{ wanted => sub {
- if ( $File::Find::name =~ /\.c?harm$/ ) {
+ if ( $test_sub->() and $File::Find::name !~ /\.\.?$/ ) {
push @files, $File::Find::name;
}
},
@@ -150,7 +152,7 @@
print "\nWriting $lucyconf_path...\n\n";
# write the infile with which to communicate args to charmonize
- my $os_name = lc($Config{osname});
+ my $os_name = lc( $Config{osname} );
open( my $infile_fh, '>', $lucyconf_in )
or die "Can't open '$lucyconf_in': $!";
print $infile_fh qq|
@@ -171,11 +173,47 @@
unlink($lucyconf_in) or die "Can't unlink '$lucyconf_in': $!";
$self->add_to_cleanup($lucyconf_path);
+
+ # generated when ./charmonize is run
+ $self->add_to_cleanup("_charm_test.h");
}
-sub ACTION_code {
+sub ACTION_build_charm_test {
my $self = shift;
+
$self->dispatch('lucyconf');
+
+ # collect source files
+ my $source_path = catfile( $base_dir, 'charmonizer', 'charm_test.c' );
+ my $exe_path = "charm_test$Config{_exe}";
+ my $test_source_dir = catdir( $FILTERED_DIR, qw( Charmonizer Test ) );
+ my $source_files = $self->_find_files( $FILTERED_DIR,
+ sub { $File::Find::name =~ m#Charmonizer/Test/.*?\.c$# } );
+ push @$source_files, $source_path;
+
+ my $cbuilder = ExtUtils::CBuilder->new;
+
+ # compile and link "charm_test"
+ my @o_files;
+ for (@$source_files) {
+ my $o_file = $cbuilder->compile(
+ source => $_,
+ extra_compiler_flags => $EXTRA_CCFLAGS,
+ include_dirs => [ $FILTERED_DIR, curdir() ],
+ );
+ push @o_files, $o_file;
+ }
+ $cbuilder->link_executable(
+ objects => \@o_files,
+ exe_file => $exe_path,
+ );
+
+ $self->add_to_cleanup( @o_files, $exe_path );
+}
+
+sub ACTION_code {
+ my $self = shift;
+ $self->dispatch('build_charm_test');
$self->SUPER::ACTION_code(@_);
}
Added: lucene/lucy/trunk/perl/t/100-charmonizer.t
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/perl/t/100-charmonizer.t?view=auto&rev=467403
==============================================================================
--- lucene/lucy/trunk/perl/t/100-charmonizer.t (added)
+++ lucene/lucy/trunk/perl/t/100-charmonizer.t Tue Oct 24 10:47:17 2006
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+use File::Spec::Functions qw( curdir );
+use Env qw( @PATH );
+
+unshift @PATH, curdir();
+
+# capture and parse output of 'charm_test'
+my $charm_test_output = qx|charm_test|;
+$charm_test_output =~ /TOTAL FAILED: (\d+)/
+ or die "Didn't receive expected output from 'charm_test'";
+my $total_failed = $1;
+
+print STDERR "\n$charm_test_output\n";
+
+is( $total_failed, 0, "No failures in Charmonizer's test suite" );
+
+