Output\Image Exceptions update
This commit is contained in:
@@ -470,12 +470,20 @@ class Image
|
|||||||
*
|
*
|
||||||
* @param string $filename path + filename to rotate. This file must be writeable
|
* @param string $filename path + filename to rotate. This file must be writeable
|
||||||
* @return void
|
* @return void
|
||||||
|
* @throws \RuntimeException if exit_read_data is not found
|
||||||
|
* @throws \UnexpectedValueException if file name not writeable or file name not found
|
||||||
*/
|
*/
|
||||||
public static function correctImageOrientation(string $filename): void
|
public static function correctImageOrientation(string $filename): void
|
||||||
{
|
{
|
||||||
// function exists & file is writeable, else do nothing
|
// function exists & file is writeable, else do nothing
|
||||||
if (!function_exists('exif_read_data') || !is_writeable($filename)) {
|
if (!function_exists('exif_read_data')) {
|
||||||
return;
|
throw new \RuntimeException('Function \'exit_read_data\' does not exist');
|
||||||
|
}
|
||||||
|
if (!file_exists($filename) || !is_file($filename)) {
|
||||||
|
throw new \UnexpectedValueException('Missing image file: ' . $filename);
|
||||||
|
}
|
||||||
|
if (!is_writeable($filename)) {
|
||||||
|
throw new \UnexpectedValueException('File name is not writeable: ' . $filename);
|
||||||
}
|
}
|
||||||
[$inc_width, $inc_height, $img_type] = getimagesize($filename) ?: [0, 0, null];
|
[$inc_width, $inc_height, $img_type] = getimagesize($filename) ?: [0, 0, null];
|
||||||
// add @ to avoid "file not supported error"
|
// add @ to avoid "file not supported error"
|
||||||
|
|||||||
@@ -16,17 +16,89 @@ final class CoreLibsOutputImageTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @testdox Output\Image Class tests
|
* @covers ::createThumbnail
|
||||||
|
* @testdox createThumbnail checks
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testOutputImage()
|
public function testCreateThumbnail(): void
|
||||||
{
|
{
|
||||||
// $this->assertTrue(true, 'Output Image Tests not implemented');
|
// CONVERT does not exist
|
||||||
$this->markTestIncomplete(
|
$this->expectException(\RuntimeException::class);
|
||||||
'Output\Image Tests have not yet been implemented'
|
\CoreLibs\Output\Image::createThumbnail('do_not_exist.png', 200, 200);
|
||||||
|
// set convert
|
||||||
|
$paths = [
|
||||||
|
'/bin',
|
||||||
|
'/usr/bin',
|
||||||
|
'/usr/local/bin',
|
||||||
|
];
|
||||||
|
// find convert
|
||||||
|
foreach ($paths as $path) {
|
||||||
|
if (
|
||||||
|
file_exists($path . DIRECTORY_SEPARATOR . 'convert') &&
|
||||||
|
is_file($path . DIRECTORY_SEPARATOR . 'convert')
|
||||||
|
) {
|
||||||
|
// image magick convert location
|
||||||
|
define('CONVERT', $path . DIRECTORY_SEPARATOR . 'convert');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($paths);
|
||||||
|
// cannot set dummy file
|
||||||
|
$this->expectException(\Exception::class);
|
||||||
|
\CoreLibs\Output\Image::createThumbnail('do_not_exist.png', 200, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @covers ::createThumbnailSimple
|
||||||
|
* @testdox createThumbnailSimple checks
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCreateThumbnailSimple(): void
|
||||||
|
{
|
||||||
|
// file does not exist
|
||||||
|
$this->expectException(\UnexpectedValueException::class);
|
||||||
|
\CoreLibs\Output\Image::createThumbnailSimple(
|
||||||
|
'do_not_exist.png',
|
||||||
|
200,
|
||||||
|
200,
|
||||||
|
cache_folder: '/tmp/',
|
||||||
|
web_folder: '/tmp/'
|
||||||
);
|
);
|
||||||
// $this->markTestSkipped('No implementation for Output\Image at the moment');
|
// cache folder is not dir
|
||||||
|
$this->expectException(\UnexpectedValueException::class);
|
||||||
|
\CoreLibs\Output\Image::createThumbnailSimple(
|
||||||
|
'do_not_exist.png',
|
||||||
|
200,
|
||||||
|
200,
|
||||||
|
cache_folder: '/foo/bar/',
|
||||||
|
web_folder: '/tmp/'
|
||||||
|
);
|
||||||
|
// target cache folder is not writeable
|
||||||
|
|
||||||
|
// RuntimeException: imagecreatetruecolor failed
|
||||||
|
// RuntimeException: imagecolorallocatealpha failed
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @covers ::correctImageOrientation
|
||||||
|
* @testdox correctImageOrientation checks
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCorrectImageOrientation(): void
|
||||||
|
{
|
||||||
|
// test file does not exist
|
||||||
|
$this->expectException(\UnexpectedValueException::class);
|
||||||
|
\CoreLibs\Output\Image::correctImageOrientation('do_not_exist.png');
|
||||||
|
// test folder not writeable
|
||||||
|
// test exit_read_data not present (how)?
|
||||||
|
// test image rotate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user