Merge remote-tracking branch 'github-marc1706/ticket/12071' into develop-ascraeus

* github-marc1706/ticket/12071:
  [ticket/12071] Add test that covers not available fileinfo
  [ticket/12071] Get rid of unneeded cast to boolean in tests
  [ticket/12071] Skip tests that depend on fileinfo and fix expected results
This commit is contained in:
Nils Adermann 2014-05-02 16:54:24 +02:00
commit 1dd02b0a91

View file

@ -19,7 +19,9 @@ function function_exists($name)
class guesser_test extends \phpbb_test_case
{
public static $function_exists = true;
public static $function_exists = false;
protected $fileinfo_supported = false;
public function setUp()
{
@ -28,7 +30,16 @@ class guesser_test extends \phpbb_test_case
$guessers = array(
new \Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser(),
new \Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser(),
new \phpbb\mimetype\extension_guesser,
new \phpbb\mimetype\content_guesser,
);
// Check if any guesser except the extension_guesser is available
$this->fileinfo_supported = $guessers[0]->isSupported() | $guessers[1]->isSupported() | $guessers[3]->is_supported();
// Also create a guesser that emulates not having fileinfo available
$this->guesser_no_fileinfo = new \phpbb\mimetype\guesser(array($guessers[2]));
$this->guesser = new \phpbb\mimetype\guesser($guessers);
$this->path = dirname(__FILE__);
$this->jpg_file = $this->path . '/fixtures/jpg';
@ -52,9 +63,32 @@ class guesser_test extends \phpbb_test_case
*/
public function test_guess_files($expected, $file)
{
// We will always get application/octet-stream as mimetype if only the
// extension guesser is supported
if (!$this->fileinfo_supported)
{
$this->markTestSkipped('Unable to run tests depending on fileinfo if it is not available');
}
$this->assertEquals($expected, $this->guesser->guess($this->path . '/../upload/fixture/' . $file));
}
public function data_guess_files_no_fileinfo()
{
return array(
array('application/octet-stream', 'gif'),
array('application/octet-stream', 'txt'),
array(false, 'foobar'),
);
}
/**
* @dataProvider data_guess_files_no_fileinfo
*/
public function test_guess_files_no_fileinfo($expected, $file)
{
$this->assertEquals($expected, $this->guesser_no_fileinfo->guess($this->path . '/../upload/fixture/' . $file));
}
public function test_file_not_readable()
{
@chmod($this->jpg_file, 0000);
@ -130,6 +164,11 @@ class guesser_test extends \phpbb_test_case
$supported = false;
self::$function_exists = !$overload;
if (!\function_exists('mime_content_type'))
{
$this->markTestSkipped('Emulating supported mime_content_type() when it is not supported will cause a fatal error');
}
// Cover possible LogicExceptions
foreach ($guessers as $cur_guesser)
{