[nginx-tests] Add valgrind support to nginx test suite

Robert Mueller robm at fastmailteam.com
Mon May 13 06:43:00 UTC 2024


# HG changeset patch
# User Rob Mueller <robm at fastmailteam.com>
Add valgrind support to nginx test suite

Setting TEST_NGINX_VALGRIND=1 will cause the test suite
to run nginx under valgrind and check at exit that there's
no errors present
---
 lib/Test/Nginx.pm | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/Test/Nginx.pm b/lib/Test/Nginx.pm
index 7b7bdc5..f363349 100644
--- a/lib/Test/Nginx.pm
+++ b/lib/Test/Nginx.pm
@@ -86,7 +86,12 @@ sub DESTROY {
 		local $Test::Nginx::TODO;
 		my $errors = $self->read_file('error.log');
 		$errors = join "\n", $errors =~ /.+Sanitizer.+/gm;
-		Test::More::is($errors, '', 'no sanitizer errors');
+		my $extra = "";
+		if ($ENV{TEST_NGINX_VALGRIND}) {
+			$extra = "/valgrind";
+			$errors .= $self->read_file('valgrind.log');
+		}
+		Test::More::is($errors, '', "no sanitizer${extra} errors");
 	}
 
 	if ($ENV{TEST_NGINX_CATLOG}) {
@@ -398,7 +403,11 @@ sub run(;$) {
 		my @globals = $self->{_test_globals} ?
 			() : ('-g', "pid $testdir/nginx.pid; "
 			. "error_log $testdir/error.log debug;");
-		exec($NGINX, '-p', "$testdir/", '-c', 'nginx.conf',
+		my @cmd = ($NGINX);
+		if ($ENV{TEST_NGINX_VALGRIND}) {
+			unshift @cmd, 'valgrind', '-q', "--log-file=$testdir/valgrind.log";
+		}
+		exec(@cmd, '-p', "$testdir/", '-c', 'nginx.conf',
 			'-e', 'error.log', @globals)
 			or die "Unable to exec(): $!\n";
 	}




More information about the nginx-devel mailing list