aec27d4d52
The idea with this perl based testing framework is to make use of what's delivered with perl and exists on all sorts of platforms. The choice came to using Test::More and Test::Harness, as that seems to be the most widely spread foundation, even if perl is aged. The main runner of the show is run_tests.pl. As it currently stands, it's designed to run from inside Makefile, but it's absolutely possible to run it from the command line as well, like so: cd test OPENSSL_SRCDIR=.. perl run_tests.pl The tester scripts themselves are stored in the subdirectory recipes/, and initially, we have two such scripts, recipes/00-check_testalltests.t and recipes/00-check_testexes.t. recipes/00-check_testalltests.t will pick out the dependencies of "alltests" in test/Makefile, and check if it can find recipes with corresponding names. recipes/00-check_testexes.t does something similar, but bases it on existing compiled test binaries. They make it easy to figure out what's to be added, and will be removed when this effort is finished. Individual recipes can be run as well, of course, as they are perl scripts in themselves. For example, you can run only recipes/00-check_testexes.t like so: cd test OPENSSL_SRCDIR=.. perl recipes/00-check_testexes.t To make coding easier, there's a routine library OpenSSL::Test, which is reachable in a perl script like so: use lib 'testlib'; use OpenSSL::Test; Reviewed-by: Rich Salz <rsalz@openssl.org>
43 lines
1.1 KiB
Perl
43 lines
1.1 KiB
Perl
#! /usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use File::Spec::Functions qw/catdir catfile curdir abs2rel rel2abs/;
|
|
use File::Basename;
|
|
use Test::Harness qw/runtests $switches/;
|
|
|
|
my $top = $ENV{TOP};
|
|
my $recipesdir = catdir($top, "test", "recipes");
|
|
my $testlib = catdir($top, "test", "testlib");
|
|
|
|
# It seems that $switches is getting interpretted with 'eval' or something
|
|
# like that, and that we need to take care of backslashes or they will
|
|
# disappear along the way.
|
|
$testlib =~ s|\\|\\\\|g if $^O eq "MSWin32";
|
|
|
|
# Test::Harness provides the variable $switches to give it
|
|
# switches to be used when it calls our recipes.
|
|
$switches = "-w \"-I$testlib\"";
|
|
|
|
my @tests = ( "alltests" );
|
|
if (@ARGV) {
|
|
@tests = @ARGV;
|
|
}
|
|
if (grep /^alltests$/, @tests) {
|
|
@tests = grep {
|
|
basename($_) =~ /^[0-9][0-9]-[^\.]*\.t$/
|
|
} glob(catfile($recipesdir,"*.t"));
|
|
} else {
|
|
my @t = ();
|
|
foreach (@tests) {
|
|
push @t, grep {
|
|
basename($_) =~ /^[0-9][0-9]-[^\.]*\.t$/
|
|
} glob(catfile($recipesdir,"*-$_.t"));
|
|
}
|
|
@tests = @t;
|
|
}
|
|
|
|
@tests = map { abs2rel($_, rel2abs(curdir())); } @tests;
|
|
|
|
runtests(sort @tests);
|