Commit f51da0dd authored by Fabien Potencier's avatar Fabien Potencier

feature #1607 Drop support for older versions of PHP and Symfony (fabpot)

This PR was squashed before being merged into the 2.3.x-dev branch (closes #1607).

Discussion
----------

Drop support for older versions of PHP and Symfony

Let's make it much simpler to maintain future versions of Silex. This pull request does the following (@Ocramius would be proud of me :)):

 * drop support for Twig < 2.0
 * drop support for PHP < 7.1
 * drop support for Symfony 2.x and 3.x

Commits
-------

816f4591 removed obsolete code
63851cc6 use namespaced PHPUnit
182ecf05 removed obsolete code
f1f9ce42 dropped support for older versions of PHP and Symfony
parents a50ba322 816f4591
......@@ -14,31 +14,6 @@ cache:
before_install:
- phpenv config-rm xdebug.ini
# Twig 1.x
- if [[ $TWIG_VERSION != 2.0 ]]; then sed -i 's/~1.8|~2.0/~1.8/g' composer.json; fi
# Symfony 2.8
- if [[ $SYMFONY_DEPS_VERSION = 2.8 ]]; then sed -i 's/~2\.8|^3\.0/2.8.*/g' composer.json; fi
# Symfony 3.3
- |
if [[ $SYMFONY_DEPS_VERSION = 3.3 ]]; then
sed -i 's/~2\.8|^3\.0/3.3.*/g' composer.json;
composer require --no-update symfony/web-link:3.3.*
fi
# Symfony 3.4
- |
if [[ $SYMFONY_DEPS_VERSION = 3.4 ]]; then
sed -i 's/~2\.8|^3\.0/3.4.*/g' composer.json;
composer require --no-update symfony/web-link:3.4.*
fi
# Symfony 4.0
- |
if [[ $SYMFONY_DEPS_VERSION = 4.0 ]]; then
sed -i 's/~2\.8|^3\.0/4.0.*/g' composer.json;
composer require --no-update symfony/web-link:4.0.*
fi
- composer update --no-suggest
install:
......@@ -48,18 +23,5 @@ script: ./vendor/bin/simple-phpunit
matrix:
include:
- php: 5.5
- php: 5.6
env: TWIG_VERSION=2.0
- php: 5.6
env: SYMFONY_DEPS_VERSION=2.8
- php: 5.6
env: SYMFONY_DEPS_VERSION=3.3
- php: 5.6
env: SYMFONY_DEPS_VERSION=3.4
- php: 7.2
env: SYMFONY_DEPS_VERSION=4.0
- php: 5.6
- php: 7.0
- php: 7.1
- php: 7.2
......@@ -15,43 +15,40 @@
}
],
"require": {
"php": ">=5.5.9",
"pimple/pimple": "~3.0",
"symfony/event-dispatcher": "~2.8|^3.4|^4.0",
"symfony/http-foundation": "~2.8|^3.4|^4.0",
"symfony/http-kernel": "~2.8|^3.4|^4.0",
"symfony/routing": "~2.8|^3.4|^4.0"
"php": ">=7.1.3",
"pimple/pimple": "^3.0",
"symfony/event-dispatcher": "^4.0",
"symfony/http-foundation": "^4.0",
"symfony/http-kernel": "^4.0",
"symfony/routing": "^4.0"
},
"require-dev": {
"symfony/asset": "~2.8|^3.4|^4.0",
"symfony/expression-language": "~2.8|^3.4|^4.0",
"symfony/security": "~2.8|^3.4|^4.0",
"symfony/config": "~2.8|^3.4|^4.0",
"symfony/form": "~2.8|^3.4|^4.0",
"symfony/browser-kit": "~2.8|^3.4|^4.0",
"symfony/css-selector": "~2.8|^3.4|^4.0",
"symfony/debug": "~2.8|^3.4|^4.0",
"symfony/dom-crawler": "~2.8|^3.4|^4.0",
"symfony/finder": "~2.8|^3.4|^4.0",
"symfony/intl": "~2.8|^3.4|^4.0",
"symfony/monolog-bridge": "~2.8|^3.4|^4.0",
"symfony/doctrine-bridge": "~2.8|^3.4|^4.0",
"symfony/options-resolver": "~2.8|^3.4|^4.0",
"symfony/asset": "^4.0",
"symfony/expression-language": "^4.0",
"symfony/security": "^4.0",
"symfony/config": "^4.0",
"symfony/form": "^4.0",
"symfony/browser-kit": "^4.0",
"symfony/css-selector": "^4.0",
"symfony/debug": "^4.0",
"symfony/dom-crawler": "^4.0",
"symfony/finder": "^4.0",
"symfony/intl": "^4.0",
"symfony/monolog-bridge": "^4.0",
"symfony/doctrine-bridge": "^4.0",
"symfony/options-resolver": "^4.0",
"symfony/phpunit-bridge": "^3.2",
"symfony/process": "~2.8|^3.4|^4.0",
"symfony/serializer": "~2.8|^3.4|^4.0",
"symfony/translation": "~2.8|^3.4|^4.0",
"symfony/twig-bridge": "~2.8|^3.4|^4.0",
"symfony/validator": "~2.8|^3.4|^4.0",
"symfony/var-dumper": "~2.8|^3.4|^4.0",
"twig/twig": "~1.30|~2.0",
"doctrine/dbal": "~2.2",
"swiftmailer/swiftmailer": "~5",
"symfony/process": "^4.0",
"symfony/serializer": "^4.0",
"symfony/translation": "^4.0",
"symfony/twig-bridge": "^4.0",
"symfony/validator": "^4.0",
"symfony/var-dumper": "^4.0",
"twig/twig": "^2.0",
"doctrine/dbal": "^2.2",
"swiftmailer/swiftmailer": "^5",
"monolog/monolog": "^1.4.1",
"symfony/web-link": "^3.4|^4.0"
},
"conflict": {
"phpunit/phpunit": "<4.8.35 || >= 5.0, <5.4.3"
"symfony/web-link": "^4.0"
},
"replace": {
"silex/api": "self.version",
......
......@@ -9,6 +9,9 @@ Changelog
* allow setting custom status code on exception response with Symfony 3.3+
* made CSRF extension work with Validator translations domain
* fixed Security provider context usage
* dropped support for Twig < 2.0
* dropped support for PHP < 7.1
* dropped support for Symfony 2.x and 3.x
* added support for Symfony 4
2.2.3 (2018-02-25)
......
......@@ -26,10 +26,12 @@ PHPUnit
`PHPUnit <https://github.com/sebastianbergmann/phpunit>`_ is the de-facto
standard testing framework for PHP. It was built for writing unit tests, but it
can be used for functional tests too. You write tests by creating a new class,
that extends the ``PHPUnit_Framework_TestCase``. Your test cases are methods
that extends the ``PHPUnit\Framework\TestCase``. Your test cases are methods
prefixed with ``test``::
class ContactFormTest extends \PHPUnit_Framework_TestCase
use PHPUnit\Framework\TestCase;
class ContactFormTest extends TestCase
{
public function testInitialPage()
{
......
<?php
/*
* This file is part of the Silex framework.
*
* (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 Silex;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Controller\ControllerResolver as BaseControllerResolver;
use Symfony\Component\HttpFoundation\Request;
/**
* Adds Application as a valid argument for controllers.
*
* @author Fabien Potencier <fabien@symfony.com>
*
* @deprecated This class can be dropped once Symfony 3.0 is not supported anymore.
*/
class ControllerResolver extends BaseControllerResolver
{
protected $app;
/**
* Constructor.
*
* @param Application $app An Application instance
* @param LoggerInterface $logger A LoggerInterface instance
*/
public function __construct(Application $app, LoggerInterface $logger = null)
{
$this->app = $app;
parent::__construct($logger);
}
protected function doGetArguments(Request $request, $controller, array $parameters)
{
foreach ($parameters as $param) {
if ($param->getClass() && $param->getClass()->isInstance($this->app)) {
$request->attributes->set($param->getName(), $this->app);
break;
}
}
return parent::doGetArguments($request, $controller, $parameters);
}
}
......@@ -72,10 +72,6 @@ class AssetServiceProvider implements ServiceProviderInterface
}
if ($jsonManifestPath) {
if (!class_exists('Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy')) {
throw new \RuntimeException('You must require symfony/asset >= 3.3 to use JSON manifest version strategy.');
}
return new JsonManifestVersionStrategy($jsonManifestPath);
}
......
......@@ -7,23 +7,17 @@ use Pimple\ServiceProviderInterface;
use Silex\Api\EventListenerProviderInterface;
use Silex\AppArgumentValueResolver;
use Silex\CallbackResolver;
use Silex\ControllerResolver;
use Silex\EventListener\ConverterListener;
use Silex\EventListener\MiddlewareListener;
use Silex\EventListener\StringToResponseListener;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver;
use Symfony\Component\HttpKernel\Controller\ControllerResolver as SfControllerResolver;
use Symfony\Component\HttpKernel\Controller\ControllerResolver;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
use Symfony\Component\HttpKernel\EventListener\ResponseListener;
use Symfony\Component\HttpKernel\HttpKernel;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\WebLink\EventListener\AddLinkHeaderListener;
use Symfony\Component\WebLink\HttpHeaderSerializer;
......@@ -35,36 +29,18 @@ class HttpKernelServiceProvider implements ServiceProviderInterface, EventListen
public function register(Container $app)
{
$app['resolver'] = function ($app) {
if (Kernel::VERSION_ID >= 30100) {
return new SfControllerResolver($app['logger']);
}
return new ControllerResolver($app, $app['logger']);
return new ControllerResolver($app['logger']);
};
if (Kernel::VERSION_ID >= 30100) {
$app['argument_metadata_factory'] = function ($app) {
return new ArgumentMetadataFactory();
};
$app['argument_value_resolvers'] = function ($app) {
if (Kernel::VERSION_ID < 30200) {
return [
new AppArgumentValueResolver($app),
new RequestAttributeValueResolver(),
new RequestValueResolver(),
new DefaultValueResolver(),
new VariadicValueResolver(),
];
}
return array_merge([new AppArgumentValueResolver($app)], ArgumentResolver::getDefaultArgumentValueResolvers());
};
}
$app['argument_metadata_factory'] = function ($app) {
return new ArgumentMetadataFactory();
};
$app['argument_value_resolvers'] = function ($app) {
return array_merge([new AppArgumentValueResolver($app)], ArgumentResolver::getDefaultArgumentValueResolvers());
};
$app['argument_resolver'] = function ($app) {
if (Kernel::VERSION_ID >= 30100) {
return new ArgumentResolver($app['argument_metadata_factory'], $app['argument_value_resolvers']);
}
return new ArgumentResolver($app['argument_metadata_factory'], $app['argument_value_resolvers']);
};
$app['kernel'] = function ($app) {
......
......@@ -19,7 +19,6 @@ use Monolog\Handler;
use Monolog\ErrorHandler;
use Silex\Application;
use Silex\Api\BootableProviderInterface;
use Symfony\Bridge\Monolog\Handler\DebugHandler;
use Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy;
use Symfony\Bridge\Monolog\Processor\DebugProcessor;
use Silex\EventListener\LogListener;
......@@ -38,12 +37,6 @@ class MonologServiceProvider implements ServiceProviderInterface, BootableProvid
};
if ($bridge = class_exists('Symfony\Bridge\Monolog\Logger')) {
$app['monolog.handler.debug'] = function () use ($app) {
$level = MonologServiceProvider::translateLevel($app['monolog.level']);
return new DebugHandler($level);
};
if (isset($app['request_stack'])) {
$app['monolog.not_found_activation_strategy'] = function () use ($app) {
return new NotFoundActivationStrategy($app['request_stack'], ['^/'], $app['monolog.level']);
......@@ -64,11 +57,7 @@ class MonologServiceProvider implements ServiceProviderInterface, BootableProvid
$log->pushHandler($handler);
if ($app['debug'] && $bridge) {
if (class_exists(DebugProcessor::class)) {
$log->pushProcessor(new DebugProcessor());
} else {
$log->pushHandler($app['monolog.handler.debug']);
}
$log->pushProcessor(new DebugProcessor());
}
return $log;
......
......@@ -13,10 +13,8 @@ namespace Silex\Provider;
use Pimple\Container;
use Pimple\ServiceProviderInterface;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Formatter\MessageFormatter;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader;
use Symfony\Component\Translation\Loader\XliffFileLoader;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
......@@ -79,10 +77,6 @@ class TranslationServiceProvider implements ServiceProviderInterface, EventListe
}
$app['translator.message_selector'] = function () {
if (Kernel::VERSION_ID < 30400) {
return new MessageSelector();
}
return new MessageFormatter();
};
......
......@@ -25,11 +25,8 @@ use Symfony\Bridge\Twig\Extension\HttpFoundationExtension;
use Symfony\Bridge\Twig\Extension\HttpKernelExtension;
use Symfony\Bridge\Twig\Extension\WebLinkExtension;
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
use Symfony\Bridge\Twig\Form\TwigRenderer;
use Symfony\Bridge\Twig\Extension\HttpKernelRuntime;
use Symfony\Component\Form\FormRenderer;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\WebLink\HttpHeaderSerializer;
/**
* Twig integration for Silex.
......@@ -128,14 +125,10 @@ class TwigServiceProvider implements ServiceProviderInterface
$app['twig.form.renderer'] = function ($app) {
$csrfTokenManager = isset($app['csrf.token_manager']) ? $app['csrf.token_manager'] : null;
if (Kernel::VERSION_ID < 30400) {
return new TwigRenderer($app['twig.form.engine'], $csrfTokenManager);
}
return new FormRenderer($app['twig.form.engine'], $csrfTokenManager);
};
$twig->addExtension(new FormExtension(class_exists(HttpKernelRuntime::class) ? null : $app['twig.form.renderer']));
$twig->addExtension(new FormExtension());
// add loader for Symfony built-in form templates
$reflected = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension');
......@@ -147,13 +140,8 @@ class TwigServiceProvider implements ServiceProviderInterface
$twig->addExtension(new DumpExtension($app['var_dumper.cloner']));
}
if (class_exists(HttpKernelRuntime::class)) {
$twig->addRuntimeLoader($app['twig.runtime_loader']);
}
if (class_exists(HttpHeaderSerializer::class) && class_exists(WebLinkExtension::class)) {
$twig->addExtension(new WebLinkExtension($app['request_stack']));
}
$twig->addRuntimeLoader($app['twig.runtime_loader']);
$twig->addExtension(new WebLinkExtension($app['request_stack']));
}
return $twig;
......@@ -192,19 +180,10 @@ class TwigServiceProvider implements ServiceProviderInterface
};
$app['twig.runtimes'] = function ($app) {
$runtimes = [];
if (class_exists(HttpKernelRuntime::class)) {
$runtimes[HttpKernelRuntime::class] = 'twig.runtime.httpkernel';
}
if (Kernel::VERSION_ID < 30400) {
$runtimes[TwigRenderer::class] = 'twig.form.renderer';
} else {
$runtimes[FormRenderer::class] = 'twig.form.renderer';
}
return $runtimes;
return [
HttpKernelRuntime::class => 'twig.runtime.httpkernel',
FormRenderer::class => 'twig.form.renderer',
];
};
$app['twig.runtime_loader'] = function ($app) {
......
......@@ -17,8 +17,6 @@ use Monolog\Handler\TestHandler;
use Monolog\Logger;
/**
* MonologTrait test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class MonologTraitTest extends TestCase
......
......@@ -17,8 +17,6 @@ use Symfony\Component\Security\Core\User\User;
use Symfony\Component\HttpFoundation\Request;
/**
* SecurityTrait test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class SecurityTraitTest extends TestCase
......
......@@ -15,8 +15,6 @@ use PHPUnit\Framework\TestCase;
use Silex\Provider\SwiftmailerServiceProvider;
/**
* SwiftmailerTrait test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class SwiftmailerTraitTest extends TestCase
......
......@@ -15,8 +15,6 @@ use PHPUnit\Framework\TestCase;
use Silex\Provider\TranslationServiceProvider;
/**
* TranslationTrait test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class TranslationTraitTest extends TestCase
......
......@@ -17,8 +17,6 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\StreamedResponse;
/**
* TwigTrait test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class TwigTraitTest extends TestCase
......
......@@ -25,7 +25,6 @@ use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\WebLink\HttpHeaderSerializer;
/**
* Application test cases.
......@@ -661,10 +660,6 @@ class ApplicationTest extends TestCase
public function testWebLinkListener()
{
if (!class_exists(HttpHeaderSerializer::class)) {
self::markTestSkipped('Symfony WebLink component is required.');
}
$app = new Application();
$app->get('/', function () {
......
<?php
/*
* This file is part of the Silex framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Silex\Tests;
use PHPUnit\Framework\TestCase;
use Silex\ControllerResolver;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Kernel;
/**
* ControllerResolver test cases.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class ControllerResolverTest extends TestCase
{
/**
* @group legacy
*/
public function testGetArguments()
{
if (Kernel::VERSION_ID >= 30100) {
self::markTestSkipped('HttpKernel < 3.1.0 is required');
}
$app = new Application();
$resolver = new ControllerResolver($app);
$controller = function (Application $app) {};
$args = $resolver->getArguments(Request::create('/'), $controller);
$this->assertSame($app, $args[0]);
}
}
......@@ -36,12 +36,6 @@ class AssetServiceProviderTest extends TestCase
public function testJsonManifestVersionStrategy()
{
if (!class_exists('Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy')) {
$this->markTestSkipped('JsonManifestVersionStrategy class is not available.');
return;
}
$app = new Application();
$app->register(new AssetServiceProvider(), [
'assets.json_manifest_path' => __DIR__.'/../Fixtures/manifest.json',
......
......@@ -23,7 +23,6 @@ use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormTypeGuesserChain;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Translation\Exception\NotFoundResourceException;
class FormServiceProviderTest extends TestCase
......@@ -313,52 +312,19 @@ class FormServiceProviderTest extends TestCase
}
}
if (!class_exists('Symfony\Component\Form\Deprecated\FormEvents')) {
class DummyFormType extends AbstractType
{
}
} else {
// FormTypeInterface::getName() is needed by the form component 2.8.x
class DummyFormType extends AbstractType
{
/**
* @return string The name of this type
*/
public function getName()
{
return 'dummy';
}
}
class DummyFormType extends AbstractType
{
}
if (method_exists('Symfony\Component\Form\AbstractType', 'configureOptions')) {
class DummyFormTypeExtension extends AbstractTypeExtension
class DummyFormTypeExtension extends AbstractTypeExtension
{
public function getExtendedType()
{
public function getExtendedType()
{
return 'Symfony\Component\Form\Extension\Core\Type\FileType';
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefined(['image_path']);
}
return 'Symfony\Component\Form\Extension\Core\Type\FileType';
}
} else {
class DummyFormTypeExtension extends AbstractTypeExtension
{
public function getExtendedType()
{
return 'Symfony\Component\Form\Extension\Core\Type\FileType';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
if (!method_exists($resolver, 'setDefined')) {
$resolver->setOptional(['image_path']);
} else {
$resolver->setDefined(['image_path']);
}
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefined(['image_path']);
}
}
......@@ -11,16 +11,15 @@
namespace Silex\Tests\Provider;
use PHPUnit\Framework\TestCase;
use Monolog\Formatter\JsonFormatter;
use Monolog\Handler\TestHandler;
use Monolog\Logger;
use PHPUnit\Framework\TestCase;
use Silex\Application;
use Silex\Provider\MonologServiceProvider;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Kernel;
/**
* MonologProvider test cases.
......@@ -59,12 +58,8 @@ class MonologServiceProviderTest extends TestCase
$this->assertTrue($app['monolog.handler']->hasDebug('< 200'));
$records = $app['monolog.handler']->getRecords();
if (Kernel::VERSION_ID < 30100) {
$this->assertContains('Matched route "GET_foo"', $records[0]['message']);
} else {
$this->assertContains('Matched route "{route}".', $records[0]['message']);
$this->assertSame('GET_foo', $records[0]['context']['route']);
}
$this->assertContains('Matched route "{route}".', $records[0]['message']);
$this->assertSame('GET_foo', $records[0]['context']['route']);
}
public function testManualLogging()
......
......@@ -13,7 +13,6 @@ namespace Silex\Tests\Provider\SecurityServiceProviderTest;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Guard\AbstractGuardAuthenticator;
......@@ -28,7 +27,7 @@ class TokenAuthenticator extends AbstractGuardAuthenticator
public function getCredentials(Request $request)
{
if (!$token = $request->headers->get('X-AUTH-TOKEN')) {
return Kernel::VERSION_ID < 30400 ? null : false;
return false;
}
list($username, $secret) = explode(':', $token);
......
......@@ -18,10 +18,7 @@ use Silex\Provider\CsrfServiceProvider;
use Silex\Provider\FormServiceProvider;
use Silex\Provider\TwigServiceProvider;
use Silex\Provider\AssetServiceProvider;
use Symfony\Bridge\Twig\Extension\WebLinkExtension;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\WebLink\HttpHeaderSerializer;
/**
* TwigProvider test cases.
......@@ -112,11 +109,7 @@ class TwigServiceProviderTest extends TestCase
$this->assertInstanceOf('Twig_Environment', $app['twig']);
$this->assertInstanceOf('Symfony\Bridge\Twig\Form\TwigRendererEngine', $app['twig.form.engine']);
if (Kernel::VERSION_ID < 30400) {
$this->assertInstanceOf('Symfony\Bridge\Twig\Form\TwigRenderer', $app['twig.form.renderer']);
} else {
$this->assertInstanceOf('Symfony\Component\Form\FormRenderer', $app['twig.form.renderer']);
}
$this->assertInstanceOf('Symfony\Component\Form\FormRenderer', $app['twig.form.renderer']);
}
public function testFormWithoutCsrf()
......@@ -152,10 +145,6 @@ class TwigServiceProviderTest extends TestCase
public function testWebLinkIntegration()
{
if (!class_exists(HttpHeaderSerializer::class) || !class_exists(WebLinkExtension::class)) {
$this->markTestSkipped('Twig WebLink extension not available.');
}
$app = new Application();
$app['request_stack']->push($request = Request::create('/'));
$app->register(new TwigServiceProvider(), [
......
......@@ -20,7 +20,6 @@ use Symfony\Component\Translation\Exception\NotFoundResourceException;
use Symfony\Component\Validator\Constraints as Assert;
use Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint\Custom;
use Silex\Tests\Provider\ValidatorServiceProviderTest\Constraint\CustomValidator;
use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;
/**
......@@ -36,8 +35,6 @@ class ValidatorServiceProviderTest extends TestCase
$app->register(new ValidatorServiceProvider());
$app->register(new FormServiceProvider());
$this->assertInstanceOf('Symfony\Component\Validator\Validator\ValidatorInterface', $app['validator']);
return $app;
}
......@@ -55,8 +52,6 @@ class ValidatorServiceProviderTest extends TestCase
],
]);
$this->assertInstanceOf('Symfony\Component\Validator\Validator\ValidatorInterface', $app['validator']);
return $app;
}
......@@ -86,7 +81,7 @@ class ValidatorServiceProviderTest extends TestCase
*/
public function testValidatorServiceIsAValidator($app)
{
$this->assertTrue($app['validator'] instanceof ValidatorInterface || $app['validator'] instanceof LegacyValidatorInterface);
$this->assertTrue($app['validator'] instanceof ValidatorInterface);
}
/**
......
......@@ -15,7 +15,6 @@ use PHPUnit\Framework\TestCase;
use Silex\ServiceControllerResolver;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Kernel;
/**
* Unit tests for ServiceControllerResolver, see ServiceControllerResolverRouterTest for some
......@@ -77,22 +76,4 @@ class ServiceControllerResolverTest extends Testcase
$this->assertEquals(123, $this->resolver->getController($req));
}
/**
* @group legacy
*/
public function testShouldDelegateGetArguments()
{
if (Kernel::VERSION_ID >= 40000) {
self::markTestSkipped('HttpKernel < 4.0 is required');
}
$req = Request::create('/');
$this->mockResolver->expects($this->once())
->method('getArguments')
->with($req)
->will($this->returnValue(123));
$this->assertEquals(123, $this->resolver->getArguments($req, function () {}));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment