private function runTest($metadata, Template $template, $memcheck = false) { $test_args = $template->hasArgs(); foreach ($this->args as $key => $arg) { // Prepare for next template $template->clear(); $template->replace('funcname', @$metadata['function']); $template->replace('classname', @$metadata['class']); $template->replace('methodname', @$metadata['method']); // For argument concatenation $template->replace('args2', empty($arg) ? $arg : $arg . ','); // For argument without concatenation $template->replace('args', $arg); if ($test_args) { printf("- %s - Args: %s\n", $metadata['name'], $arg); } else { printf("- %s:\n", $metadata['name']); } if ($memcheck) { $ret = $this->memcheck($metadata['name'], $template->getSource()); } else { $ret = $this->execute($metadata['name'], $template->getSource()); switch ($ret) { case 139: /* signal 11 */ printf(" SIGSEGV\n", $ret); break; default: printf(" Exit status = %d\n", $ret); break; } if (!$test_args) { break; } } } }