changeset 15:c6c36d7a4d90

Tests: support config embedded in test itself.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 13 Sep 2008 02:57:01 +0400
parents d4b74207a627
children dc0f15a3a140
files lib/Test/Nginx.pm ssi-include-big.conf ssi-include-big.t
diffstat 3 files changed, 59 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/lib/Test/Nginx.pm
+++ b/lib/Test/Nginx.pm
@@ -24,6 +24,14 @@ use Socket qw/ CRLF /;
 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 @@ sub DESTROY {
 	$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 @@ sub run {
 	return $self;
 }
 
-sub stop {
+sub stop() {
 	my ($self) = @_;
 
 	# terminate nginx by SIGTERM
@@ -73,7 +77,7 @@ sub stop {
 	return $self;
 }
 
-sub write_file {
+sub write_file($$) {
 	my ($self, $name, $content) = @_;
 
 	open F, '>' . $self->{_testdir} . '/' . $name
@@ -84,6 +88,14 @@ sub write_file {
 	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 {
deleted file mode 100644
--- 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;
-        }
-    }
-}
--- a/ssi-include-big.t
+++ b/ssi-include-big.t
@@ -21,7 +21,39 @@ use Test::Nginx;
 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 @@ my $t = Test::Nginx->new()->run('ssi-inc
 $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 @@ ok(defined $t3, 'big included file (more
 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