comparison lib/Test/Nginx.pm @ 592:355f2d5ff60f

Tests: catch nginx alerts on exit. The new todo_alerts() function is used to mark such a test as TODO. Notably, proxy_if.t is currently expected to produce alerts.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 27 May 2015 16:58:35 +0300
parents 2cd00179f4b2
children 3a9a7b4f27f0
comparison
equal deleted inserted replaced
591:0b059d5e6887 592:355f2d5ff60f
34 sub new { 34 sub new {
35 my $self = {}; 35 my $self = {};
36 bless $self; 36 bless $self;
37 37
38 $self->{_pid} = $$; 38 $self->{_pid} = $$;
39 $self->{_alerts} = 1;
39 40
40 $self->{_testdir} = tempdir( 41 $self->{_testdir} = tempdir(
41 'nginx-test-XXXXXXXXXX', 42 'nginx-test-XXXXXXXXXX',
42 TMPDIR => 1 43 TMPDIR => 1
43 ) 44 )
58 59
59 return if $self->{_pid} != $$; 60 return if $self->{_pid} != $$;
60 61
61 $self->stop(); 62 $self->stop();
62 $self->stop_daemons(); 63 $self->stop_daemons();
64
65 if (Test::More->builder->expected_tests) {
66 local $Test::Nginx::TODO = 'alerts' unless $self->{_alerts};
67
68 my $alerts = $self->read_file('error.log');
69 $alerts = join "\n", $alerts =~ /.+\[alert\].+/gm;
70 Test::More::is($alerts, '', 'no alerts');
71 }
63 72
64 if ($ENV{TEST_NGINX_CATLOG}) { 73 if ($ENV{TEST_NGINX_CATLOG}) {
65 system("cat $self->{_testdir}/error.log"); 74 system("cat $self->{_testdir}/error.log");
66 } 75 }
67 if (not $ENV{TEST_NGINX_LEAVE}) { 76 if (not $ENV{TEST_NGINX_LEAVE}) {
221 } 230 }
222 231
223 sub plan($) { 232 sub plan($) {
224 my ($self, $plan) = @_; 233 my ($self, $plan) = @_;
225 234
226 Test::More::plan(tests => $plan); 235 Test::More::plan(tests => $plan + 1);
236
237 return $self;
238 }
239
240 sub todo_alerts() {
241 my ($self) = @_;
242
243 $self->{_alerts} = 0;
227 244
228 return $self; 245 return $self;
229 } 246 }
230 247
231 sub run(;$) { 248 sub run(;$) {