Fix more bad tests

This commit is contained in:
Nicolas Grekas 2019-09-06 09:54:22 +02:00
parent 592aacff6f
commit cc3e3d54ea
19 changed files with 365 additions and 269 deletions

View File

@ -0,0 +1,27 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\Monolog\Tests;
use Symfony\Bridge\Monolog\Logger;
class ClassThatInheritLogger extends Logger
{
public function getLogs(): array
{
return parent::getLogs();
}
public function countErrors(): int
{
return parent::countErrors();
}
}

View File

@ -128,33 +128,12 @@ class LoggerTest extends TestCase
/** /**
* @group legacy * @group legacy
* @expectedDeprecation The "Symfony\Bridge\Monolog\Logger::getLogs()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2. * @expectedDeprecation The "Symfony\Bridge\Monolog\Logger::getLogs()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.
* @expectedDeprecation The "Symfony\Bridge\Monolog\Logger::countErrors()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.
*/ */
public function testInheritedClassCallGetLogsWithoutArgument() public function testInheritedClassWithoutArgument()
{ {
$loggerChild = new ClassThatInheritLogger('test'); $loggerChild = new ClassThatInheritLogger('test');
$loggerChild->getLogs(); $loggerChild->getLogs();
}
/**
* @group legacy
* @expectedDeprecation The "Symfony\Bridge\Monolog\Logger::countErrors()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.
*/
public function testInheritedClassCallCountErrorsWithoutArgument()
{
$loggerChild = new ClassThatInheritLogger('test');
$loggerChild->countErrors(); $loggerChild->countErrors();
} }
} }
class ClassThatInheritLogger extends Logger
{
public function getLogs()
{
parent::getLogs();
}
public function countErrors()
{
parent::countErrors();
}
}

View File

@ -0,0 +1,27 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\Monolog\Tests\Processor;
use Symfony\Bridge\Monolog\Processor\DebugProcessor;
class ClassThatInheritDebugProcessor extends DebugProcessor
{
public function getLogs(): array
{
return parent::getLogs();
}
public function countErrors(): int
{
return parent::countErrors();
}
}

View File

@ -66,20 +66,12 @@ class DebugProcessorTest extends TestCase
/** /**
* @group legacy * @group legacy
* @expectedDeprecation The "Symfony\Bridge\Monolog\Processor\DebugProcessor::getLogs()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2. * @expectedDeprecation The "Symfony\Bridge\Monolog\Processor\DebugProcessor::getLogs()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.
* @expectedDeprecation The "Symfony\Bridge\Monolog\Processor\DebugProcessor::countErrors()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.
*/ */
public function testInheritedClassCallGetLogsWithoutArgument() public function testInheritedClassWithoutArgument()
{ {
$debugProcessorChild = new ClassThatInheritDebugProcessor(); $debugProcessorChild = new ClassThatInheritDebugProcessor();
$debugProcessorChild->getLogs(); $debugProcessorChild->getLogs();
}
/**
* @group legacy
* @expectedDeprecation The "Symfony\Bridge\Monolog\Processor\DebugProcessor::countErrors()" method will have a new "Request $request = null" argument in version 5.0, not defining it is deprecated since Symfony 4.2.
*/
public function testInheritedClassCallCountErrorsWithoutArgument()
{
$debugProcessorChild = new ClassThatInheritDebugProcessor();
$debugProcessorChild->countErrors(); $debugProcessorChild->countErrors();
} }
@ -96,16 +88,3 @@ class DebugProcessorTest extends TestCase
]; ];
} }
} }
class ClassThatInheritDebugProcessor extends DebugProcessor
{
public function getLogs()
{
parent::getLogs();
}
public function countErrors()
{
parent::countErrors();
}
}

View File

@ -81,8 +81,6 @@ class AbstractControllerTest extends ControllerTraitTest
class TestAbstractController extends AbstractController class TestAbstractController extends AbstractController
{ {
use TestControllerTrait;
private $throwOnUnexpectedService; private $throwOnUnexpectedService;
public function __construct($throwOnUnexpectedService = true) public function __construct($throwOnUnexpectedService = true)
@ -90,6 +88,11 @@ class TestAbstractController extends AbstractController
$this->throwOnUnexpectedService = $throwOnUnexpectedService; $this->throwOnUnexpectedService = $throwOnUnexpectedService;
} }
public function __call(string $method, array $arguments)
{
return $this->$method(...$arguments);
}
public function setContainer(ContainerInterface $container) public function setContainer(ContainerInterface $container)
{ {
if (!$this->throwOnUnexpectedService) { if (!$this->throwOnUnexpectedService) {
@ -114,11 +117,6 @@ class TestAbstractController extends AbstractController
return parent::setContainer($container); return parent::setContainer($container);
} }
public function getParameter(string $name)
{
return parent::getParameter($name);
}
public function fooAction() public function fooAction()
{ {
} }

View File

@ -12,7 +12,6 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\Controller; namespace Symfony\Bundle\FrameworkBundle\Tests\Controller;
use Fig\Link\Link; use Fig\Link\Link;
use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait;
use Symfony\Bundle\FrameworkBundle\Tests\TestCase; use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
use Symfony\Component\DependencyInjection\Container; use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\Form\Form; use Symfony\Component\Form\Form;
@ -550,29 +549,3 @@ abstract class ControllerTraitTest extends TestCase
$this->assertContains($link2, $links); $this->assertContains($link2, $links);
} }
} }
trait TestControllerTrait
{
use ControllerTrait {
generateUrl as public;
redirect as public;
forward as public;
getUser as public;
json as public;
file as public;
isGranted as public;
denyAccessUnlessGranted as public;
redirectToRoute as public;
addFlash as public;
isCsrfTokenValid as public;
renderView as public;
render as public;
stream as public;
createNotFoundException as public;
createAccessDeniedException as public;
createForm as public;
createFormBuilder as public;
getDoctrine as public;
addLink as public;
}
}

View File

@ -3,8 +3,30 @@
namespace Symfony\Bundle\FrameworkBundle\Tests\Controller; namespace Symfony\Bundle\FrameworkBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait;
class TestController extends Controller class TestController extends Controller
{ {
use TestControllerTrait; use ControllerTrait {
generateUrl as public;
redirect as public;
forward as public;
getUser as public;
json as public;
file as public;
isGranted as public;
denyAccessUnlessGranted as public;
redirectToRoute as public;
addFlash as public;
isCsrfTokenValid as public;
renderView as public;
render as public;
stream as public;
createNotFoundException as public;
createAccessDeniedException as public;
createForm as public;
createFormBuilder as public;
getDoctrine as public;
addLink as public;
}
} }

View File

@ -19,61 +19,6 @@ use Symfony\Component\BrowserKit\History;
use Symfony\Component\BrowserKit\Response; use Symfony\Component\BrowserKit\Response;
use Symfony\Component\DomCrawler\Form as DomCrawlerForm; use Symfony\Component\DomCrawler\Form as DomCrawlerForm;
class SpecialResponse extends Response
{
}
class TestClient extends AbstractBrowser
{
protected $nextResponse = null;
protected $nextScript = null;
public function setNextResponse(Response $response)
{
$this->nextResponse = $response;
}
public function setNextScript($script)
{
$this->nextScript = $script;
}
protected function doRequest($request)
{
if (null === $this->nextResponse) {
return new Response();
}
$response = $this->nextResponse;
$this->nextResponse = null;
return $response;
}
protected function filterResponse($response)
{
if ($response instanceof SpecialResponse) {
return new Response($response->getContent(), $response->getStatusCode(), $response->getHeaders());
}
return $response;
}
protected function getScript($request)
{
$r = new \ReflectionClass('Symfony\Component\BrowserKit\Response');
$path = $r->getFileName();
return <<<EOF
<?php
require_once('$path');
echo serialize($this->nextScript);
EOF;
}
}
class AbstractBrowserTest extends TestCase class AbstractBrowserTest extends TestCase
{ {
public function getBrowser(array $server = [], History $history = null, CookieJar $cookieJar = null) public function getBrowser(array $server = [], History $history = null, CookieJar $cookieJar = null)
@ -159,17 +104,6 @@ class AbstractBrowserTest extends TestCase
$this->assertNull($client->getResponse()); $this->assertNull($client->getResponse());
} }
public function testGetInternalResponse()
{
$client = $this->getBrowser();
$client->setNextResponse(new SpecialResponse('foo'));
$client->request('GET', 'http://example.com/');
$this->assertInstanceOf('Symfony\Component\BrowserKit\Response', $client->getInternalResponse());
$this->assertNotInstanceOf('Symfony\Component\BrowserKit\Tests\SpecialResponse', $client->getInternalResponse());
$this->assertInstanceOf('Symfony\Component\BrowserKit\Tests\SpecialResponse', $client->getResponse());
}
/** /**
* @group legacy * @group legacy
* @expectedDeprecation Calling the "Symfony\Component\BrowserKit\Tests\%s::getInternalResponse()" method before the "request()" one is deprecated since Symfony 4.1 and will throw an exception in 5.0. * @expectedDeprecation Calling the "Symfony\Component\BrowserKit\Tests\%s::getInternalResponse()" method before the "request()" one is deprecated since Symfony 4.1 and will throw an exception in 5.0.

View File

@ -0,0 +1,44 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\BrowserKit\Tests;
use Symfony\Component\BrowserKit\AbstractBrowser;
use Symfony\Component\BrowserKit\Response;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\DomCrawler\Form as DomCrawlerForm;
class ClassThatInheritClient extends AbstractBrowser
{
protected $nextResponse = null;
public function setNextResponse(Response $response)
{
$this->nextResponse = $response;
}
protected function doRequest($request): Response
{
if (null === $this->nextResponse) {
return new Response();
}
$response = $this->nextResponse;
$this->nextResponse = null;
return $response;
}
public function submit(DomCrawlerForm $form, array $values = []): Crawler
{
return parent::submit($form, $values);
}
}

View File

@ -14,89 +14,9 @@ namespace Symfony\Component\BrowserKit\Tests;
use Symfony\Component\BrowserKit\CookieJar; use Symfony\Component\BrowserKit\CookieJar;
use Symfony\Component\BrowserKit\History; use Symfony\Component\BrowserKit\History;
use Symfony\Component\BrowserKit\HttpBrowser; use Symfony\Component\BrowserKit\HttpBrowser;
use Symfony\Component\BrowserKit\Response;
use Symfony\Component\HttpClient\MockHttpClient;
use Symfony\Component\HttpClient\Response\MockResponse;
use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface; use Symfony\Contracts\HttpClient\ResponseInterface;
class SpecialHttpResponse extends Response
{
}
class TestHttpClient extends HttpBrowser
{
protected $nextResponse = null;
protected $nextScript = null;
public function __construct(array $server = [], History $history = null, CookieJar $cookieJar = null)
{
$client = new MockHttpClient(function (string $method, string $url, array $options) {
if (null === $this->nextResponse) {
return new MockResponse();
}
return new MockResponse($this->nextResponse->getContent(), [
'http_code' => $this->nextResponse->getStatusCode(),
'response_headers' => $this->nextResponse->getHeaders(),
]);
});
parent::__construct($client);
$this->setServerParameters($server);
$this->history = $history ?? new History();
$this->cookieJar = $cookieJar ?? new CookieJar();
}
public function setNextResponse(Response $response)
{
$this->nextResponse = $response;
}
public function setNextScript($script)
{
$this->nextScript = $script;
}
protected function filterResponse($response)
{
if ($response instanceof SpecialHttpResponse) {
return new Response($response->getContent(), $response->getStatusCode(), $response->getHeaders());
}
return $response;
}
protected function doRequest($request)
{
$response = parent::doRequest($request);
if (null === $this->nextResponse) {
return $response;
}
$class = \get_class($this->nextResponse);
$response = new $class($response->getContent(), $response->getStatusCode(), $response->getHeaders());
$this->nextResponse = null;
return $response;
}
protected function getScript($request)
{
$r = new \ReflectionClass('Symfony\Component\BrowserKit\Response');
$path = $r->getFileName();
return <<<EOF
<?php
require_once('$path');
echo serialize($this->nextScript);
EOF;
}
}
class HttpBrowserTest extends AbstractBrowserTest class HttpBrowserTest extends AbstractBrowserTest
{ {
public function getBrowser(array $server = [], History $history = null, CookieJar $cookieJar = null) public function getBrowser(array $server = [], History $history = null, CookieJar $cookieJar = null)
@ -104,17 +24,6 @@ class HttpBrowserTest extends AbstractBrowserTest
return new TestHttpClient($server, $history, $cookieJar); return new TestHttpClient($server, $history, $cookieJar);
} }
public function testGetInternalResponse()
{
$client = $this->getBrowser();
$client->setNextResponse(new SpecialHttpResponse('foo'));
$client->request('GET', 'http://example.com/');
$this->assertInstanceOf('Symfony\Component\BrowserKit\Response', $client->getInternalResponse());
$this->assertNotInstanceOf('Symfony\Component\BrowserKit\Tests\SpecialHttpResponse', $client->getInternalResponse());
$this->assertInstanceOf('Symfony\Component\BrowserKit\Tests\SpecialHttpResponse', $client->getResponse());
}
/** /**
* @dataProvider validContentTypes * @dataProvider validContentTypes
*/ */

View File

@ -0,0 +1,57 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\BrowserKit\Tests;
use Symfony\Component\BrowserKit\AbstractBrowser;
use Symfony\Component\BrowserKit\Response;
class TestClient extends AbstractBrowser
{
protected $nextResponse = null;
protected $nextScript = null;
public function setNextResponse(Response $response)
{
$this->nextResponse = $response;
}
public function setNextScript($script)
{
$this->nextScript = $script;
}
protected function doRequest($request): Response
{
if (null === $this->nextResponse) {
return new Response();
}
$response = $this->nextResponse;
$this->nextResponse = null;
return $response;
}
protected function getScript($request)
{
$r = new \ReflectionClass('Symfony\Component\BrowserKit\Response');
$path = $r->getFileName();
return <<<EOF
<?php
require_once('$path');
echo serialize($this->nextScript);
EOF;
}
}

View File

@ -0,0 +1,80 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\BrowserKit\Tests;
use Symfony\Component\BrowserKit\CookieJar;
use Symfony\Component\BrowserKit\History;
use Symfony\Component\BrowserKit\HttpBrowser;
use Symfony\Component\BrowserKit\Response;
use Symfony\Component\HttpClient\MockHttpClient;
use Symfony\Component\HttpClient\Response\MockResponse;
class TestHttpClient extends HttpBrowser
{
protected $nextResponse = null;
protected $nextScript = null;
public function __construct(array $server = [], History $history = null, CookieJar $cookieJar = null)
{
$client = new MockHttpClient(function (string $method, string $url, array $options) {
if (null === $this->nextResponse) {
return new MockResponse();
}
return new MockResponse($this->nextResponse->getContent(), [
'http_code' => $this->nextResponse->getStatusCode(),
'response_headers' => $this->nextResponse->getHeaders(),
]);
});
parent::__construct($client);
$this->setServerParameters($server);
$this->history = $history ?? new History();
$this->cookieJar = $cookieJar ?? new CookieJar();
}
public function setNextResponse(Response $response)
{
$this->nextResponse = $response;
}
public function setNextScript($script)
{
$this->nextScript = $script;
}
protected function doRequest($request): Response
{
if (null === $this->nextResponse) {
return parent::doRequest($request);
}
$response = $this->nextResponse;
$this->nextResponse = null;
return $response;
}
protected function getScript($request)
{
$r = new \ReflectionClass('Symfony\Component\BrowserKit\Response');
$path = $r->getFileName();
return <<<EOF
<?php
require_once('$path');
echo serialize($this->nextScript);
EOF;
}
}

View File

@ -1238,11 +1238,3 @@ HTML;
return $domxpath->query('//div'); return $domxpath->query('//div');
} }
} }
class ClassThatInheritCrawler extends Crawler
{
public function children()
{
parent::children();
}
}

View File

@ -0,0 +1,25 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DomCrawler\Tests;
use Symfony\Component\DomCrawler\Crawler;
class ClassThatInheritCrawler extends Crawler
{
/**
* @return static
*/
public function children()
{
return parent::children();
}
}

View File

@ -0,0 +1,25 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Finder\Tests;
use Symfony\Component\Finder\Finder;
class ClassThatInheritFinder extends Finder
{
/**
* @return $this
*/
public function sortByName()
{
parent::sortByName();
}
}

View File

@ -873,6 +873,7 @@ class FinderTest extends Iterator\RealIteratorTestCase
$expected = [ $expected = [
self::$tmpDir.\DIRECTORY_SEPARATOR.'test.php', self::$tmpDir.\DIRECTORY_SEPARATOR.'test.php',
__DIR__.\DIRECTORY_SEPARATOR.'ClassThatInheritFinder.php',
__DIR__.\DIRECTORY_SEPARATOR.'GitignoreTest.php', __DIR__.\DIRECTORY_SEPARATOR.'GitignoreTest.php',
__DIR__.\DIRECTORY_SEPARATOR.'FinderTest.php', __DIR__.\DIRECTORY_SEPARATOR.'FinderTest.php',
__DIR__.\DIRECTORY_SEPARATOR.'GlobTest.php', __DIR__.\DIRECTORY_SEPARATOR.'GlobTest.php',
@ -1435,11 +1436,3 @@ class FinderTest extends Iterator\RealIteratorTestCase
return Finder::create(); return Finder::create();
} }
} }
class ClassThatInheritFinder extends Finder
{
public function sortByName()
{
parent::sortByName();
}
}

View File

@ -12,12 +12,13 @@
namespace Symfony\Component\Form\Tests; namespace Symfony\Component\Form\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType; use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
class AbstractTypeExtensionTest extends TestCase class AbstractTypeExtensionTest extends TestCase
{ {
/**
* @group legacy
*/
public function testImplementingNeitherGetExtendedTypeNorExtendsTypeThrowsException() public function testImplementingNeitherGetExtendedTypeNorExtendsTypeThrowsException()
{ {
$this->expectException('Symfony\Component\Form\Exception\LogicException'); $this->expectException('Symfony\Component\Form\Exception\LogicException');
@ -28,6 +29,7 @@ class AbstractTypeExtensionTest extends TestCase
/** /**
* @group legacy * @group legacy
* @expectedDeprecation The Symfony\Component\Form\Tests\MultipleTypesExtension::getExtendedType() method is deprecated since Symfony 4.2 and will be removed in 5.0. Use getExtendedTypes() instead.
*/ */
public function testGetExtendedTypeReturnsFirstConfiguredExtension() public function testGetExtendedTypeReturnsFirstConfiguredExtension()
{ {
@ -36,16 +38,3 @@ class AbstractTypeExtensionTest extends TestCase
$this->assertSame(DateTimeType::class, $extension->getExtendedType()); $this->assertSame(DateTimeType::class, $extension->getExtendedType());
} }
} }
class MultipleTypesExtension extends AbstractTypeExtension
{
public static function getExtendedTypes(): iterable
{
yield DateTimeType::class;
yield DateType::class;
}
}
class TypeExtensionWithoutExtendedTypes extends AbstractTypeExtension
{
}

View File

@ -0,0 +1,25 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\Tests;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
class MultipleTypesExtension extends AbstractTypeExtension
{
public static function getExtendedTypes(): iterable
{
yield DateTimeType::class;
yield DateType::class;
}
}

View File

@ -0,0 +1,18 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Form\Tests;
use Symfony\Component\Form\AbstractTypeExtension;
class TypeExtensionWithoutExtendedTypes extends AbstractTypeExtension
{
}