Tests: memcached module generic tests.
This also includes relevant framework improvements, notably the ability to
test presence of external daemons and to run them.
diff --git a/lib/Test/Nginx.pm b/lib/Test/Nginx.pm
index d37be5d..8918f1b 100644
--- a/lib/Test/Nginx.pm
+++ b/lib/Test/Nginx.pm
@@ -11,7 +11,7 @@
use base qw/ Exporter /;
-our @EXPORT = qw/ log_in log_out http /;
+our @EXPORT = qw/ log_in log_out http http_get /;
###############################################################################
@@ -58,7 +58,16 @@
return $self;
}
-sub plan {
+sub has_daemon($) {
+ my ($self, $daemon) = @_;
+
+ Test::More::plan(skip_all => "$daemon not found")
+ unless `which $daemon`;
+
+ return $self;
+}
+
+sub plan($) {
my ($self, $plan) = @_;
Test::More::plan(tests => $plan);
@@ -66,7 +75,7 @@
return $self;
}
-sub run {
+sub run(;$) {
my ($self, $conf) = @_;
my $testdir = $self->{_testdir};
@@ -90,6 +99,8 @@
sleep 1;
+ die "Can't start nginx" unless -e "$self->{_testdir}/nginx.pid";
+
$self->{_started} = 1;
return $self;
}
@@ -132,15 +143,19 @@
return $self->write_file($name, $content);
}
-sub run_daemon($) {
- my ($self, $code) = @_;
+sub run_daemon($;@) {
+ my ($self, $code, @args) = @_;
my $pid = fork();
die "Can't fork daemon: $!\n" unless defined $pid;
if ($pid == 0) {
- $code->();
- exit 0;
+ if (ref($code) eq 'CODE') {
+ $code->(@args);
+ exit 0;
+ } else {
+ exec($code, @args);
+ }
}
$self->{_daemons} = [] unless defined $self->{_daemons};
@@ -168,7 +183,16 @@
###############################################################################
-sub http {
+sub http_get($) {
+ my ($url) = @_;
+ return http(<<EOF);
+GET $url HTTP/1.0
+Host: localhost
+
+EOF
+}
+
+sub http($) {
my ($request) = @_;
my $reply;
eval {