summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2019-05-22 20:20:36 +0200
committerJoe Watkins <krakjoe@php.net>2019-05-22 20:20:36 +0200
commit824290f19b0121fe172fcd2f320222843f7dcb53 (patch)
tree5b835e84bb30abe5681b3ef4f6b1a2e1ae049577
parent19295e8d5c4d054cf999296e112f781d97bfcddb (diff)
parent536532c57255b8c616d25251031427c5aa8d7d42 (diff)
downloadphp-git-824290f19b0121fe172fcd2f320222843f7dcb53.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: add support for valgrind tools to run-tests.php
-rwxr-xr-xrun-tests.php25
1 files changed, 17 insertions, 8 deletions
diff --git a/run-tests.php b/run-tests.php
index b48fa084cd..df95991486 100755
--- a/run-tests.php
+++ b/run-tests.php
@@ -441,7 +441,10 @@ NO_PROC_OPEN_ERROR;
break;
//case 'l'
case 'm':
- $valgrind = new RuntestsValgrind($environment);
+ $valgrind = new RuntestsValgrind($environment);
+ break;
+ case 'M':
+ $valgrind = new RuntestsValgrind($environment, $argv[++$i]);
break;
case 'n':
if (!$pass_option_n) {
@@ -565,7 +568,9 @@ Options:
-g Comma separated list of groups to show during test run
(possible values: PASS, FAIL, XFAIL, SKIP, BORK, WARN, LEAK, REDIRECT).
- -m Test for memory leaks with Valgrind.
+ -m Test for memory leaks with Valgrind (equivalent to -M memcheck).
+
+ -M <tool> Test for errors with Valgrind tool.
-p <php> Specify PHP executable to run.
@@ -3531,6 +3536,7 @@ class RuntestsValgrind
protected $header = '';
protected $version_3_3_0 = false;
protected $version_3_8_0 = false;
+ protected $tool = null;
public function getVersion()
{
@@ -3542,26 +3548,29 @@ class RuntestsValgrind
return $this->header;
}
- public function __construct(array $environment)
+ public function __construct(array $environment, string $tool = 'memcheck')
{
- $header = system_with_timeout('valgrind --version', $environment);
+ $this->tool = $tool;
+ $header = system_with_timeout("valgrind --tool={$this->tool} --version", $environment);
if (!$header) {
- error("Valgrind returned no version info, cannot proceed.\nPlease check if Valgrind is installed.");
+ error("Valgrind returned no version info for {$this->tool}, cannot proceed.\n".
+ "Please check if Valgrind is installed and the tool is named correctly.");
}
$count = 0;
$version = preg_replace("/valgrind-(\d+)\.(\d+)\.(\d+)([.\w_-]+)?(\s+)/", '$1.$2.$3', $header, 1, $count);
if ($count != 1) {
- error("Valgrind returned invalid version info (\"{$header}\"), cannot proceed.");
+ error("Valgrind returned invalid version info (\"{$header}\") for {$this->tool}, cannot proceed.");
}
$this->version = $version;
- $this->header = trim($header);
+ $this->header = sprintf(
+ "%s (%s)", trim($header), $this->tool);
$this->version_3_3_0 = version_compare($version, '3.3.0', '>=');
$this->version_3_8_0 = version_compare($version, '3.8.0', '>=');
}
public function wrapCommand($cmd, $memcheck_filename, $check_all)
{
- $vcmd = 'valgrind -q --tool=memcheck --trace-children=yes';
+ $vcmd = "valgrind -q --tool={$this->tool} --trace-children=yes";
if ($check_all) {
$vcmd .= ' --smc-check=all';
}