mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 02:58:43 +02:00
N°2651 rollback gitignore for lib tests dirs
Too dangerous ! We'll work properly on this but for 2.8
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
<?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\Bundle\FrameworkBundle\Tests\Console\Descriptor;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
use Symfony\Component\DependencyInjection\Alias;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\Routing\Route;
|
||||
use Symfony\Component\Routing\RouteCollection;
|
||||
|
||||
abstract class AbstractDescriptorTest extends TestCase
|
||||
{
|
||||
/** @dataProvider getDescribeRouteCollectionTestData */
|
||||
public function testDescribeRouteCollection(RouteCollection $routes, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $routes);
|
||||
}
|
||||
|
||||
public function getDescribeRouteCollectionTestData()
|
||||
{
|
||||
return $this->getDescriptionTestData(ObjectsProvider::getRouteCollections());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeRouteTestData */
|
||||
public function testDescribeRoute(Route $route, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $route);
|
||||
}
|
||||
|
||||
public function getDescribeRouteTestData()
|
||||
{
|
||||
return $this->getDescriptionTestData(ObjectsProvider::getRoutes());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerParametersTestData */
|
||||
public function testDescribeContainerParameters(ParameterBag $parameters, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $parameters);
|
||||
}
|
||||
|
||||
public function getDescribeContainerParametersTestData()
|
||||
{
|
||||
return $this->getDescriptionTestData(ObjectsProvider::getContainerParameters());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerBuilderTestData */
|
||||
public function testDescribeContainerBuilder(ContainerBuilder $builder, $expectedDescription, array $options)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $builder, $options);
|
||||
}
|
||||
|
||||
public function getDescribeContainerBuilderTestData()
|
||||
{
|
||||
return $this->getContainerBuilderDescriptionTestData(ObjectsProvider::getContainerBuilders());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerDefinitionTestData */
|
||||
public function testDescribeContainerDefinition(Definition $definition, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $definition);
|
||||
}
|
||||
|
||||
public function getDescribeContainerDefinitionTestData()
|
||||
{
|
||||
return $this->getDescriptionTestData(ObjectsProvider::getContainerDefinitions());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerDefinitionWithArgumentsShownTestData */
|
||||
public function testDescribeContainerDefinitionWithArgumentsShown(Definition $definition, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $definition, ['show_arguments' => true]);
|
||||
}
|
||||
|
||||
public function getDescribeContainerDefinitionWithArgumentsShownTestData()
|
||||
{
|
||||
$definitions = ObjectsProvider::getContainerDefinitions();
|
||||
$definitionsWithArgs = [];
|
||||
|
||||
foreach ($definitions as $key => $definition) {
|
||||
$definitionsWithArgs[str_replace('definition_', 'definition_arguments_', $key)] = $definition;
|
||||
}
|
||||
|
||||
return $this->getDescriptionTestData($definitionsWithArgs);
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerAliasTestData */
|
||||
public function testDescribeContainerAlias(Alias $alias, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $alias);
|
||||
}
|
||||
|
||||
public function getDescribeContainerAliasTestData()
|
||||
{
|
||||
return $this->getDescriptionTestData(ObjectsProvider::getContainerAliases());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerDefinitionWhichIsAnAliasTestData */
|
||||
public function testDescribeContainerDefinitionWhichIsAnAlias(Alias $alias, $expectedDescription, ContainerBuilder $builder, $options = [])
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $builder, $options);
|
||||
}
|
||||
|
||||
public function getDescribeContainerDefinitionWhichIsAnAliasTestData()
|
||||
{
|
||||
$builder = current(ObjectsProvider::getContainerBuilders());
|
||||
$builder->setDefinition('service_1', $builder->getDefinition('definition_1'));
|
||||
$builder->setDefinition('service_2', $builder->getDefinition('definition_2'));
|
||||
|
||||
$aliases = ObjectsProvider::getContainerAliases();
|
||||
$aliasesWithDefinitions = [];
|
||||
foreach ($aliases as $name => $alias) {
|
||||
$aliasesWithDefinitions[str_replace('alias_', 'alias_with_definition_', $name)] = $alias;
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
$data = $this->getDescriptionTestData($aliasesWithDefinitions);
|
||||
foreach ($aliases as $name => $alias) {
|
||||
$data[$i][] = $builder;
|
||||
$data[$i][] = ['id' => $name];
|
||||
++$i;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeContainerParameterTestData */
|
||||
public function testDescribeContainerParameter($parameter, $expectedDescription, array $options)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $parameter, $options);
|
||||
}
|
||||
|
||||
public function getDescribeContainerParameterTestData()
|
||||
{
|
||||
$data = $this->getDescriptionTestData(ObjectsProvider::getContainerParameter());
|
||||
|
||||
$data[0][] = ['parameter' => 'database_name'];
|
||||
$data[1][] = ['parameter' => 'twig.form.resources'];
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeEventDispatcherTestData */
|
||||
public function testDescribeEventDispatcher(EventDispatcher $eventDispatcher, $expectedDescription, array $options)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $eventDispatcher, $options);
|
||||
}
|
||||
|
||||
public function getDescribeEventDispatcherTestData()
|
||||
{
|
||||
return $this->getEventDispatcherDescriptionTestData(ObjectsProvider::getEventDispatchers());
|
||||
}
|
||||
|
||||
/** @dataProvider getDescribeCallableTestData */
|
||||
public function testDescribeCallable($callable, $expectedDescription)
|
||||
{
|
||||
$this->assertDescription($expectedDescription, $callable);
|
||||
}
|
||||
|
||||
public function getDescribeCallableTestData()
|
||||
{
|
||||
return $this->getDescriptionTestData(ObjectsProvider::getCallables());
|
||||
}
|
||||
|
||||
abstract protected function getDescriptor();
|
||||
|
||||
abstract protected function getFormat();
|
||||
|
||||
private function assertDescription($expectedDescription, $describedObject, array $options = [])
|
||||
{
|
||||
$options['is_debug'] = false;
|
||||
$options['raw_output'] = true;
|
||||
$options['raw_text'] = true;
|
||||
$output = new BufferedOutput(BufferedOutput::VERBOSITY_NORMAL, true);
|
||||
|
||||
if ('txt' === $this->getFormat()) {
|
||||
$options['output'] = new SymfonyStyle(new ArrayInput([]), $output);
|
||||
}
|
||||
|
||||
$this->getDescriptor()->describe($output, $describedObject, $options);
|
||||
|
||||
if ('json' === $this->getFormat()) {
|
||||
$this->assertEquals(json_encode(json_decode($expectedDescription), JSON_PRETTY_PRINT), json_encode(json_decode($output->fetch()), JSON_PRETTY_PRINT));
|
||||
} else {
|
||||
$this->assertEquals(trim($expectedDescription), trim(str_replace(PHP_EOL, "\n", $output->fetch())));
|
||||
}
|
||||
}
|
||||
|
||||
private function getDescriptionTestData(array $objects)
|
||||
{
|
||||
$data = [];
|
||||
foreach ($objects as $name => $object) {
|
||||
$description = file_get_contents(sprintf('%s/../../Fixtures/Descriptor/%s.%s', __DIR__, $name, $this->getFormat()));
|
||||
$data[] = [$object, $description];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function getContainerBuilderDescriptionTestData(array $objects)
|
||||
{
|
||||
$variations = [
|
||||
'services' => ['show_private' => true],
|
||||
'public' => ['show_private' => false],
|
||||
'tag1' => ['show_private' => true, 'tag' => 'tag1'],
|
||||
'tags' => ['group_by' => 'tags', 'show_private' => true],
|
||||
'arguments' => ['show_private' => false, 'show_arguments' => true],
|
||||
];
|
||||
|
||||
$data = [];
|
||||
foreach ($objects as $name => $object) {
|
||||
foreach ($variations as $suffix => $options) {
|
||||
$description = file_get_contents(sprintf('%s/../../Fixtures/Descriptor/%s_%s.%s', __DIR__, $name, $suffix, $this->getFormat()));
|
||||
$data[] = [$object, $description, $options];
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function getEventDispatcherDescriptionTestData(array $objects)
|
||||
{
|
||||
$variations = [
|
||||
'events' => [],
|
||||
'event1' => ['event' => 'event1'],
|
||||
];
|
||||
|
||||
$data = [];
|
||||
foreach ($objects as $name => $object) {
|
||||
foreach ($variations as $suffix => $options) {
|
||||
$description = file_get_contents(sprintf('%s/../../Fixtures/Descriptor/%s_%s.%s', __DIR__, $name, $suffix, $this->getFormat()));
|
||||
$data[] = [$object, $description, $options];
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
@@ -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\Bundle\FrameworkBundle\Tests\Console\Descriptor;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Descriptor\JsonDescriptor;
|
||||
|
||||
class JsonDescriptorTest extends AbstractDescriptorTest
|
||||
{
|
||||
protected function getDescriptor()
|
||||
{
|
||||
return new JsonDescriptor();
|
||||
}
|
||||
|
||||
protected function getFormat()
|
||||
{
|
||||
return 'json';
|
||||
}
|
||||
}
|
||||
@@ -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\Bundle\FrameworkBundle\Tests\Console\Descriptor;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Descriptor\MarkdownDescriptor;
|
||||
|
||||
class MarkdownDescriptorTest extends AbstractDescriptorTest
|
||||
{
|
||||
protected function getDescriptor()
|
||||
{
|
||||
return new MarkdownDescriptor();
|
||||
}
|
||||
|
||||
protected function getFormat()
|
||||
{
|
||||
return 'md';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,204 @@
|
||||
<?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\Bundle\FrameworkBundle\Tests\Console\Descriptor;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Alias;
|
||||
use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
|
||||
use Symfony\Component\DependencyInjection\Reference;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\Routing\CompiledRoute;
|
||||
use Symfony\Component\Routing\Route;
|
||||
use Symfony\Component\Routing\RouteCollection;
|
||||
|
||||
class ObjectsProvider
|
||||
{
|
||||
public static function getRouteCollections()
|
||||
{
|
||||
$collection1 = new RouteCollection();
|
||||
foreach (self::getRoutes() as $name => $route) {
|
||||
$collection1->add($name, $route);
|
||||
}
|
||||
|
||||
return ['route_collection_1' => $collection1];
|
||||
}
|
||||
|
||||
public static function getRoutes()
|
||||
{
|
||||
return [
|
||||
'route_1' => new RouteStub(
|
||||
'/hello/{name}',
|
||||
['name' => 'Joseph'],
|
||||
['name' => '[a-z]+'],
|
||||
['opt1' => 'val1', 'opt2' => 'val2'],
|
||||
'localhost',
|
||||
['http', 'https'],
|
||||
['get', 'head']
|
||||
),
|
||||
'route_2' => new RouteStub(
|
||||
'/name/add',
|
||||
[],
|
||||
[],
|
||||
['opt1' => 'val1', 'opt2' => 'val2'],
|
||||
'localhost',
|
||||
['http', 'https'],
|
||||
['put', 'post']
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
public static function getContainerParameters()
|
||||
{
|
||||
return [
|
||||
'parameters_1' => new ParameterBag([
|
||||
'integer' => 12,
|
||||
'string' => 'Hello world!',
|
||||
'boolean' => true,
|
||||
'array' => [12, 'Hello world!', true],
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
public static function getContainerParameter()
|
||||
{
|
||||
$builder = new ContainerBuilder();
|
||||
$builder->setParameter('database_name', 'symfony');
|
||||
$builder->setParameter('twig.form.resources', [
|
||||
'bootstrap_3_horizontal_layout.html.twig',
|
||||
'bootstrap_3_layout.html.twig',
|
||||
'form_div_layout.html.twig',
|
||||
'form_table_layout.html.twig',
|
||||
]);
|
||||
|
||||
return [
|
||||
'parameter' => $builder,
|
||||
'array_parameter' => $builder,
|
||||
];
|
||||
}
|
||||
|
||||
public static function getContainerBuilders()
|
||||
{
|
||||
$builder1 = new ContainerBuilder();
|
||||
$builder1->setDefinitions(self::getContainerDefinitions());
|
||||
$builder1->setAliases(self::getContainerAliases());
|
||||
|
||||
return ['builder_1' => $builder1];
|
||||
}
|
||||
|
||||
public static function getContainerDefinitions()
|
||||
{
|
||||
$definition1 = new Definition('Full\\Qualified\\Class1');
|
||||
$definition2 = new Definition('Full\\Qualified\\Class2');
|
||||
|
||||
return [
|
||||
'definition_1' => $definition1
|
||||
->setPublic(true)
|
||||
->setSynthetic(false)
|
||||
->setLazy(true)
|
||||
->setAbstract(true)
|
||||
->addArgument(new Reference('definition2'))
|
||||
->addArgument('%parameter%')
|
||||
->addArgument(new Definition('inline_service', ['arg1', 'arg2']))
|
||||
->addArgument([
|
||||
'foo',
|
||||
new Reference('definition2'),
|
||||
new Definition('inline_service'),
|
||||
])
|
||||
->addArgument(new IteratorArgument([
|
||||
new Reference('definition_1'),
|
||||
new Reference('definition_2'),
|
||||
]))
|
||||
->setFactory(['Full\\Qualified\\FactoryClass', 'get']),
|
||||
'definition_2' => $definition2
|
||||
->setPublic(false)
|
||||
->setSynthetic(true)
|
||||
->setFile('/path/to/file')
|
||||
->setLazy(false)
|
||||
->setAbstract(false)
|
||||
->addTag('tag1', ['attr1' => 'val1', 'attr2' => 'val2'])
|
||||
->addTag('tag1', ['attr3' => 'val3'])
|
||||
->addTag('tag2')
|
||||
->addMethodCall('setMailer', [new Reference('mailer')])
|
||||
->setFactory([new Reference('factory.service'), 'get']),
|
||||
];
|
||||
}
|
||||
|
||||
public static function getContainerAliases()
|
||||
{
|
||||
return [
|
||||
'alias_1' => new Alias('service_1', true),
|
||||
'alias_2' => new Alias('service_2', false),
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEventDispatchers()
|
||||
{
|
||||
$eventDispatcher = new EventDispatcher();
|
||||
|
||||
$eventDispatcher->addListener('event1', 'global_function', 255);
|
||||
$eventDispatcher->addListener('event1', function () { return 'Closure'; }, -1);
|
||||
$eventDispatcher->addListener('event2', new CallableClass());
|
||||
|
||||
return ['event_dispatcher_1' => $eventDispatcher];
|
||||
}
|
||||
|
||||
public static function getCallables()
|
||||
{
|
||||
$callables = [
|
||||
'callable_1' => 'array_key_exists',
|
||||
'callable_2' => ['Symfony\\Bundle\\FrameworkBundle\\Tests\\Console\\Descriptor\\CallableClass', 'staticMethod'],
|
||||
'callable_3' => [new CallableClass(), 'method'],
|
||||
'callable_4' => 'Symfony\\Bundle\\FrameworkBundle\\Tests\\Console\\Descriptor\\CallableClass::staticMethod',
|
||||
'callable_5' => ['Symfony\\Bundle\\FrameworkBundle\\Tests\\Console\\Descriptor\\ExtendedCallableClass', 'parent::staticMethod'],
|
||||
'callable_6' => function () { return 'Closure'; },
|
||||
'callable_7' => new CallableClass(),
|
||||
];
|
||||
|
||||
if (\PHP_VERSION_ID >= 70100) {
|
||||
$callables['callable_from_callable'] = \Closure::fromCallable(new CallableClass());
|
||||
}
|
||||
|
||||
return $callables;
|
||||
}
|
||||
}
|
||||
|
||||
class CallableClass
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
}
|
||||
|
||||
public static function staticMethod()
|
||||
{
|
||||
}
|
||||
|
||||
public function method()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
class ExtendedCallableClass extends CallableClass
|
||||
{
|
||||
public static function staticMethod()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
class RouteStub extends Route
|
||||
{
|
||||
public function compile()
|
||||
{
|
||||
return new CompiledRoute('', '#PATH_REGEX#', [], [], '#HOST_REGEX#');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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\Bundle\FrameworkBundle\Tests\Console\Descriptor;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Descriptor\TextDescriptor;
|
||||
|
||||
class TextDescriptorTest extends AbstractDescriptorTest
|
||||
{
|
||||
protected function setUp()
|
||||
{
|
||||
putenv('COLUMNS=121');
|
||||
}
|
||||
|
||||
protected function tearDown()
|
||||
{
|
||||
putenv('COLUMNS');
|
||||
}
|
||||
|
||||
protected function getDescriptor()
|
||||
{
|
||||
return new TextDescriptor();
|
||||
}
|
||||
|
||||
protected function getFormat()
|
||||
{
|
||||
return 'txt';
|
||||
}
|
||||
}
|
||||
@@ -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\Bundle\FrameworkBundle\Tests\Console\Descriptor;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Descriptor\XmlDescriptor;
|
||||
|
||||
class XmlDescriptorTest extends AbstractDescriptorTest
|
||||
{
|
||||
protected function getDescriptor()
|
||||
{
|
||||
return new XmlDescriptor();
|
||||
}
|
||||
|
||||
protected function getFormat()
|
||||
{
|
||||
return 'xml';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user