Tests: support config embedded in test itself.
diff --git a/lib/Test/Nginx.pm b/lib/Test/Nginx.pm
index fe3616a..1aeae8f 100644
--- a/lib/Test/Nginx.pm
+++ b/lib/Test/Nginx.pm
@@ -24,6 +24,14 @@
sub new {
my $self = {};
bless $self;
+
+ $self->{_testdir} = tempdir(
+ 'nginx-test-XXXXXXXXXX',
+ TMPDIR => 1,
+ CLEANUP => not $ENV{LEAVE}
+ )
+ or die "Can't create temp directory: $!\n";
+
return $self;
}
@@ -32,19 +40,15 @@
$self->stop();
}
-# Create temp directory and run nginx instance.
-
sub run {
my ($self, $conf) = @_;
- my $testdir = tempdir('nginx-test-XXXXXXXXXX', TMPDIR => 1,
- CLEANUP => not $ENV{LEAVE})
- or die "Can't create temp directory: $!\n";
+ my $testdir = $self->{_testdir};
- $self->{_testdir} = $testdir;
-
- system("cat $conf | sed 's!%%TESTDIR%%!$testdir!g' "
- . "> $testdir/nginx.conf");
+ if (defined $conf) {
+ my $c = `cat $conf`;
+ $self->write_file_expand('nginx.conf', $c);
+ }
my $pid = fork();
die "Unable to fork(): $!\n" unless defined $pid;
@@ -63,7 +67,7 @@
return $self;
}
-sub stop {
+sub stop() {
my ($self) = @_;
# terminate nginx by SIGTERM
@@ -73,7 +77,7 @@
return $self;
}
-sub write_file {
+sub write_file($$) {
my ($self, $name, $content) = @_;
open F, '>' . $self->{_testdir} . '/' . $name
@@ -84,6 +88,14 @@
return $self;
}
+sub write_file_expand($$) {
+ my ($self, $name, $content) = @_;
+
+ $content =~ s/%%TESTDIR%%/$self->{_testdir}/gms;
+
+ return $self->write_file($name, $content);
+}
+
###############################################################################
sub log_out {
diff --git a/ssi-include-big.conf b/ssi-include-big.conf
deleted file mode 100644
index 84501ec..0000000
--- a/ssi-include-big.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-# Config for ssi-include-big.t test.
-
-worker_processes 1;
-
-master_process off;
-daemon off;
-
-events {
- worker_connections 1024;
-}
-
-http {
- access_log off;
- root %%TESTDIR%%;
-
- output_buffers 2 512;
- ssi on;
- gzip on;
- gzip_http_version 1.0;
-
-
- server {
- listen localhost:8080;
- server_name localhost;
-
- location /proxy/ {
- proxy_pass http://localhost:8080/local/;
- }
- location = /local/blah {
- return 204;
- }
- }
-}
diff --git a/ssi-include-big.t b/ssi-include-big.t
index f425560..13d6af2 100644
--- a/ssi-include-big.t
+++ b/ssi-include-big.t
@@ -21,7 +21,39 @@
select STDERR; $| = 1;
select STDOUT; $| = 1;
-my $t = Test::Nginx->new()->run('ssi-include-big.conf');
+my $t = Test::Nginx->new();
+
+$t->write_file_expand('nginx.conf', <<'EOF');
+
+master_process off;
+daemon off;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ access_log off;
+ root %%TESTDIR%%;
+
+ output_buffers 2 512;
+ ssi on;
+ gzip on;
+
+ server {
+ listen localhost:8080;
+ server_name localhost;
+
+ location /proxy/ {
+ proxy_pass http://localhost:8080/local/;
+ }
+ location = /local/blah {
+ return 204;
+ }
+ }
+}
+
+EOF
$t->write_file('c1.html', 'X' x 1023);
$t->write_file('c2.html', 'X' x 1024);
@@ -33,6 +65,8 @@
$t->write_file('test3.html', '<!--#include virtual="/proxy/blah" -->' . "\n"
. '<!--#include virtual="/c3.html" -->');
+$t->run();
+
###############################################################################
my $t1 = http_gzip_request('/test1.html');
@@ -49,7 +83,7 @@
sub http_gzip_request {
my ($url) = @_;
my $r = http(<<EOF);
-GET $url HTTP/1.0
+GET $url HTTP/1.1
Host: localhost
Connection: close
Accept-Encoding: gzip