openresty/t/Config.pm

75 lines
1.4 KiB
Perl

package t::Config;
use Test::Base -Base;
use IPC::Run3 qw( run3 );
our @EXPORT = qw(
run_tests
);
sub run_tests;
sub run_test ($);
sub shell (@);
sub cd ($);
our $BuildRoot;
sub run_tests {
my $ver = `bash util/ver`;
chomp $ver;
cd "ngx_openresty-$ver";
$BuildRoot = File::Spec->rel2abs("./build");
for my $block (blocks()) {
run_test($block);
}
}
sub run_test ($) {
my $block = shift;
my $name = $block->name;
my $cmd = $block->cmd or
die "No --- cmd defined for $name\n";
#warn "$cmd > out.txt 2>\&1";
my ($stdout, $stderr);
run3 $cmd, undef, \$stdout, \$stderr;
my $retval = $?;
my $expected_exit = $block->exit;
if (!defined $expected_exit) {
$expected_exit = 0;
}
my $expected_err = $block->err;
if (!defined $expected_err) {
$expected_err = '';
} else {
$expected_err =~ s/\$OPENRESTY_BUILD_DIR\b/$BuildRoot/gs;
}
my $expected_out = $block->out;
if (!defined $expected_out) {
$expected_out = '';
} else {
$expected_out =~ s/\$OPENRESTY_BUILD_DIR\b/$BuildRoot/gs;
}
is($stdout, $expected_out, "$name - stdout ok");
is($stderr, $expected_err, "$name - stderr ok");
is($retval >> 8, $expected_exit, "$name - exit code ok");
}
sub shell (@) {
system(@_);
}
sub cd ($) {
my $dir = shift;
print("cd $dir\n");
chdir $dir or die "failed to cd $dir: $!\n";
}