123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- /*
- * This file is part of PHP CS Fixer.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- * Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace PhpCsFixer\Tests\Runner;
- use PhpCsFixer\FixerFileProcessedEvent;
- use PhpCsFixer\Runner\FileFilterIterator;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\EventDispatcher\EventDispatcher;
- /**
- * @author SpacePossum
- *
- * @internal
- *
- * @covers \PhpCsFixer\Runner\FileFilterIterator
- */
- final class FileFilterIteratorTest extends TestCase
- {
- /**
- * @param int $repeat
- *
- * @testWith [1]
- * [2]
- * [3]
- */
- public function testAccept($repeat)
- {
- $file = __FILE__;
- $content = file_get_contents($file);
- $events = array();
- $eventDispatcher = new EventDispatcher();
- $eventDispatcher->addListener(
- FixerFileProcessedEvent::NAME,
- function ($event) use (&$events) {
- $events[] = $event;
- }
- );
- $cache = $this->prophesize('PhpCsFixer\Cache\CacheManagerInterface');
- $cache->needFixing($file, $content)->willReturn(true);
- $fileInfo = new \SplFileInfo($file);
- $filter = new FileFilterIterator(
- new \ArrayIterator(array_fill(0, $repeat, $fileInfo)),
- $eventDispatcher,
- $cache->reveal()
- );
- $this->assertCount(0, $events);
- $files = iterator_to_array($filter);
- $this->assertCount(1, $files);
- $this->assertSame($fileInfo, reset($files));
- }
- public function testEmitSkipEventWhenCacheNeedFixingFalse()
- {
- $file = __FILE__;
- $content = file_get_contents($file);
- $events = array();
- $eventDispatcher = new EventDispatcher();
- $eventDispatcher->addListener(
- FixerFileProcessedEvent::NAME,
- function ($event) use (&$events) {
- $events[] = $event;
- }
- );
- $cache = $this->prophesize('PhpCsFixer\Cache\CacheManagerInterface');
- $cache->needFixing($file, $content)->willReturn(false);
- $filter = new FileFilterIterator(
- new \ArrayIterator(array(new \SplFileInfo($file))),
- $eventDispatcher,
- $cache->reveal()
- );
- $this->assertCount(0, $filter);
- $this->assertCount(1, $events);
- /** @var FixerFileProcessedEvent $event */
- $event = reset($events);
- $this->assertInstanceOf('PhpCsFixer\FixerFileProcessedEvent', $event);
- $this->assertSame(FixerFileProcessedEvent::STATUS_SKIPPED, $event->getStatus());
- }
- public function testIgnoreEmptyFile()
- {
- $file = __DIR__.'/../Fixtures/empty.php';
- $content = file_get_contents($file);
- $events = array();
- $eventDispatcher = new EventDispatcher();
- $eventDispatcher->addListener(
- FixerFileProcessedEvent::NAME,
- function ($event) use (&$events) {
- $events[] = $event;
- }
- );
- $cache = $this->prophesize('PhpCsFixer\Cache\CacheManagerInterface');
- $cache->needFixing($file, $content)->willReturn(true);
- $filter = new FileFilterIterator(
- new \ArrayIterator(array(new \SplFileInfo($file))),
- $eventDispatcher,
- $cache->reveal()
- );
- $this->assertCount(0, $filter);
- $this->assertCount(1, $events);
- /** @var FixerFileProcessedEvent $event */
- $event = reset($events);
- $this->assertInstanceOf('PhpCsFixer\FixerFileProcessedEvent', $event);
- $this->assertSame(FixerFileProcessedEvent::STATUS_SKIPPED, $event->getStatus());
- }
- public function testIgnore()
- {
- $eventDispatcher = new EventDispatcher();
- $eventDispatcher->addListener(
- FixerFileProcessedEvent::NAME,
- function () {
- throw new \Exception('No event expected.');
- }
- );
- $filter = new FileFilterIterator(
- new \ArrayIterator(array(
- new \SplFileInfo(__DIR__),
- new \SplFileInfo('__INVALID__'),
- )),
- $eventDispatcher,
- $this->prophesize('PhpCsFixer\Cache\CacheManagerInterface')->reveal()
- );
- $this->assertCount(0, $filter);
- }
- public function testWithoutDispatcher()
- {
- $file = __FILE__;
- $content = file_get_contents($file);
- $cache = $this->prophesize('PhpCsFixer\Cache\CacheManagerInterface');
- $cache->needFixing($file, $content)->willReturn(false);
- $filter = new FileFilterIterator(
- new \ArrayIterator(array(new \SplFileInfo($file))),
- null,
- $cache->reveal()
- );
- $this->assertCount(0, $filter);
- }
- public function testInvalidIterator()
- {
- $filter = new FileFilterIterator(
- new \ArrayIterator(array(__FILE__)),
- null,
- $this->prophesize('PhpCsFixer\Cache\CacheManagerInterface')->reveal()
- );
- $this->setExpectedExceptionRegExp(
- 'RuntimeException',
- '#^Expected instance of "\\\SplFileInfo", got "string"\.$#'
- );
- iterator_to_array($filter);
- }
- }
|