Merge pull request #94 from mlocati/add-extension-specific-tests

Add support for extension-specific tests
pull/95/head
Michele Locati 2019-12-27 12:16:05 +01:00 committed by GitHub
commit 9159b0aac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 93 additions and 2 deletions

View File

@ -5,6 +5,12 @@ $numTestedExtensions = 0;
$nameMap = array( $nameMap = array(
'opcache' => 'Zend OPcache', 'opcache' => 'Zend OPcache',
); );
$testsDir = __DIR__ . '/tests';
function runTest($testFile)
{
return include $testFile;
}
for ($index = 1, $count = isset($argv) ? count($argv) : 0; $index < $count; $index++) { for ($index = 1, $count = isset($argv) ? count($argv) : 0; $index < $count; $index++) {
$numTestedExtensions++; $numTestedExtensions++;
$rcThis = 1; $rcThis = 1;
@ -18,11 +24,27 @@ for ($index = 1, $count = isset($argv) ? count($argv) : 0; $index < $count; $ind
} }
if (!extension_loaded($extension)) { if (!extension_loaded($extension)) {
fprintf(STDERR, sprintf("Extension not loaded: %s\n", $extension)); fprintf(STDERR, sprintf("Extension not loaded: %s\n", $extension));
} else {
$testFile = "${testsDir}/${extension}.php";
if (is_file($testFile)) {
try {
if (runTest($testFile) === true) {
fprintf(STDOUT, sprintf("Extension tested successfully: %s\n", $extension));
$rcThis = 0;
} else {
fprintf(STDERR, sprintf("Extension test failed: %s\n", $extension));
}
} catch (Exception $x) {
fprintf(STDERR, sprintf("Extension test failed: %s (%s)\n", $extension, $x->getMessage()));
} catch (Throwable $x) {
fprintf(STDERR, sprintf("Extension test failed: %s (%s)\n", $extension, $x->getMessage()));
}
} else { } else {
fprintf(STDOUT, sprintf("Extension correctly loaded: %s\n", $extension)); fprintf(STDOUT, sprintf("Extension correctly loaded: %s\n", $extension));
$rcThis = 0; $rcThis = 0;
} }
} }
}
if ($rcThis !== 0) { if ($rcThis !== 0) {
$rc = $rcThis; $rc = $rcThis;
} }

69
scripts/tests/gd.php Normal file
View File

@ -0,0 +1,69 @@
<?php
$imageWidth = 8;
$imageHeight = 16;
$image = imagecreatetruecolor($imageWidth, $imageHeight);
$formats = array(
'gd2',
'gif',
'jpeg',
'png',
'wbmp',
'webp',
'wbmp',
'xbm',
'xpm',
'gd',
);
if (PHP_VERSION_ID >= 70200) {
$formats = array_merge($formats, array(
'bmp',
));
}
$tempFile = null;
$image2 = null;
try {
foreach ($formats as $format) {
$loadFuntion = "imagecreatefrom${format}";
if (!function_exists($loadFuntion)) {
throw new Exception("$loadFuntion() function is missing");
}
if ($format === 'xpm') {
continue;
}
$saveFuntion = "image${format}";
if (!function_exists($saveFuntion)) {
throw new Exception("$saveFuntion() function is missing");
}
$tempFile = tempnam(sys_get_temp_dir(), 'dpei');
if ($saveFuntion($image, $tempFile) === false) {
throw new Exception("$saveFuntion() failed");
}
if (!is_file($tempFile) || filesize($tempFile) < 1) {
throw new Exception("$saveFuntion() created an empty file");
}
$image2 = $loadFuntion($tempFile);
unlink($tempFile);
$tempFile = null;
if (!is_resource($image2) || imagesx($image2) !== $imageWidth || imagesy($image2) !== $imageHeight) {
throw new Exception("$loadFuntion() failed");
}
imagedestroy($image2);
}
} finally {
imagedestroy($image);
if (is_resource($image2)) {
imagedestroy($image2);
}
if($tempFile !== null) {
unlink($tempFile);
}
}
if (!function_exists('imagefttext')) {
throw new Exception("imagefttext() function is missing");
}
if (!function_exists('imageantialias')) {
throw new Exception("imageantialias() function is missing");
}
return true;