GdToolkitPngImageManipulationTest.php
Namespace
Drupal\KernelTests\Core\ImageFile
-
core/
tests/ Drupal/ KernelTests/ Core/ Image/ GdToolkitPngImageManipulationTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\KernelTests\Core\Image;
use Drupal\Core\Image\ImageFactory;
use Drupal\system\Plugin\ImageToolkit\GDToolkit;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
// cspell:ignore iccp
/**
* GD image toolkit image manipulation of PNG images.
*/
class GdToolkitPngImageManipulationTest extends GdToolkitImageManipulationTestBase {
/**
* {@inheritdoc}
*/
protected string $sourceTestImage = 'image-test.png';
/**
* Tests that GD doesn't trigger warnings for iCCP sRGB profiles.
*
* If image is saved with 'sRGB IEC61966-2.1' sRGB profile, GD will trigger
* a warning about an incorrect sRGB profile'.
*/
public function testIncorrectIccpSrgbProfile(string $image_uri) : void {
$warning_detected = FALSE;
// @see https://github.com/sebastianbergmann/phpunit/issues/5062
$error_handler = static function () use (&$warning_detected) : void {
$warning_detected = TRUE;
};
// $error_level is intentionally set to 0. It's required for PHP '@'
// suppression not to trigger Drupal error handler. In that case native
// PHP handler will be called and Drupal's will serve like a notification.
set_error_handler($error_handler, 0);
$image_factory = $this->container
->get('image.factory');
\assert($image_factory instanceof ImageFactory);
$image = $image_factory->get($image_uri, 'gd');
// We need to do any image manipulation to trigger GD profile loading.
$image->resize('100', '100');
self::assertFalse($warning_detected);
restore_error_handler();
}
/**
* Provides a list of PNG image URIs for testing.
*
* @return \Generator
* The test data.
*/
public static function pngImageProvider() : \Generator {
yield 'valid image 1' => [
'core/tests/fixtures/files/image-1.png',
];
yield 'valid image 2' => [
'core/tests/fixtures/files/image-test.png',
];
yield 'PNG with iCCP profile' => [
'core/tests/fixtures/files/image-test-iccp-profile.png',
];
}
}
Classes
| Title | Deprecated | Summary |
|---|---|---|
| GdToolkitPngImageManipulationTest | GD image toolkit image manipulation of PNG images. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.