mosesdecoder/regression-testing/MosesRegressionTesting.pm

76 lines
2.1 KiB
Perl
Raw Normal View History

package MosesRegressionTesting;
use strict;
# if your tests need a new version of the test data, increment this
# and make sure that a moses-regression-tests-vX.Y is available for
# download from statmt.org (redpony AT umd dot edu for more info)
use constant TESTING_DATA_VERSION => '0.1';
# find the data directory in a few likely locations and make sure
# that it is the correct version
sub find_data_directory
{
my ($test_script_root, $data_dir) = @_;
my $data_version = TESTING_DATA_VERSION;
my @ds = ();
my $mrtp = "moses-reg-test-data-$data_version";
push @ds, $data_dir if defined $data_dir;
push @ds, "$test_script_root/$mrtp";
push @ds, "/export/ws06osmt/regression-testing/$mrtp";
push @ds, "/tmp/$mrtp";
push @ds, "/var/tmp/$mrtp";
foreach my $d (@ds) {
next unless (-d $d);
if (!-d "$d/models") {
print STDERR "Found $d but it is malformed: missing subdir models/\n";
next;
}
if (!-d "$d/lm") {
print STDERR "Found $d but it is malformed: missing subdir lm/\n";
next;
}
return $d;
}
print STDERR<<EOT;
You do not appear to have the regression testing data installed. You may
either specify a non-standard location when running the test suite with
the --data-dir option, or, you may install it in any one of the following
standard locations: $test_script_root, /tmp, or /var/tmp with these
commands:
cd <DESIRED_INSTALLATION_DIRECTORY>
wget http://www.statmt.org/moses/reg-testing/moses-regression-tests-v$data_version.tar
tar xf moses-regression-tests-v$data_version.tar
rm moses-regression-tests-v$data_version.tar
EOT
exit 1;
}
sub get_localized_moses_ini
{
use File::Temp;
my ($moses_ini, $data_dir) = @_;
my $LM_PATH = "$data_dir/lm";
my $MODEL_PATH = "$data_dir/models";
my $local_moses_ini = new File::Temp( UNLINK => 0, SUFFIX => '.ini' );
open MI, "<$moses_ini" or die "Couldn't read $moses_ini";
open MO, ">$local_moses_ini" or die "Couldn't open $local_moses_ini for writing";
while (my $l = <MI>) {
$l =~ s/\$\{LM_PATH\}/$LM_PATH/g;
$l =~ s/\$\{MODEL_PATH\}/$MODEL_PATH/g;
print $local_moses_ini $l;
}
close MO;
close MI;
return $local_moses_ini->filename;
}
1;