Merge pull request #115 from bocharsky-bw/symfony6-continue

Symfony 6 continue
This commit is contained in:
Ryan Weaver 2022-01-26 13:46:39 -05:00 committed by GitHub
commit dc113af854
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 163 additions and 44 deletions

91
.github/workflows/phpunit.yaml vendored Normal file
View file

@ -0,0 +1,91 @@
name: PHPUnit
on:
pull_request:
jobs:
phpunit:
name: "PHPUnit - PHP ${{ matrix.php-version }}"
runs-on: ubuntu-20.04
continue-on-error: false
env:
SYMFONY_REQUIRE: ${{matrix.symfony-require}}
SYMFONY_DEPRECATIONS_HELPER: ${{matrix.symfony-deprecations-helper}}
strategy:
matrix:
php-version:
- "7.4"
- "8.0"
- "8.1"
deps:
- "stable"
symfony-require:
- "5.4.*"
symfony-deprecations-helper:
- "5"
include:
- symfony-require: "4.4.*"
php-version: "7.4"
deps: "low"
symfony-deprecations-helper: ""
- symfony-require: "4.4.*"
php-version: "7.4"
deps: "stable"
symfony-deprecations-helper: "5"
- symfony-require: "6.0.*"
php-version: "8.0"
deps: "stable"
symfony-deprecations-helper: "5"
- symfony-require: "6.0.*"
php-version: "8.1"
deps: "stable"
symfony-deprecations-helper: "5"
fail-fast: true
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install PHP with extensions
uses: shivammathur/setup-php@v2
with:
coverage: none
php-version: ${{ matrix.php-version }}
extensions: mbstring, intl, pdo, pdo_sqlite, sqlite3
ini-values: date.timezone=UTC
- name: Validate composer.json and composer.lock
run: composer validate --strict
- name: Install dependencies with Composer
run: composer update --no-interaction --prefer-dist --optimize-autoloader --prefer-stable
- name: Cache dependencies installed with Composer
uses: actions/cache@v2
with:
path: ~/.composer/cache
key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
- name: Install stable dependencies with Composer
run: composer update --no-interaction --prefer-dist --prefer-stable
if: "${{ matrix.deps == 'stable' }}"
- name: Install dev dependencies with Composer
run: composer update --no-interaction --prefer-dist
if: "${{ matrix.deps == 'dev' }}"
- name: Install lowest possible dependencies with Composer
run: composer update --no-interaction --prefer-dist --prefer-stable --prefer-lowest
if: "${{ matrix.deps == 'low' }}"
- name: Install PHPUnit
run: composer run-script test install
- name: Run tests
run: composer run-script test -v

2
.gitignore vendored
View file

@ -1,4 +1,6 @@
.phpunit.result.cache
phpunit.xml phpunit.xml
var/
vendor/* vendor/*
composer.lock composer.lock
Tests/fixtures/app/cache Tests/fixtures/app/cache

View file

@ -12,11 +12,10 @@ class Configuration implements ConfigurationInterface
* *
* @return TreeBuilder * @return TreeBuilder
*/ */
public function getConfigTreeBuilder() public function getConfigTreeBuilder(): TreeBuilder
{ {
$treeBuilder = new TreeBuilder('knp_markdown'); $treeBuilder = new TreeBuilder('knp_markdown');
// BC layer for symfony/config < 4.2 $rootNode = $treeBuilder->getRootNode();
$rootNode = method_exists($treeBuilder, 'getRootNode') ? $treeBuilder->getRootNode() : $treeBuilder->root('knp_markdown');
$rootNode $rootNode
->addDefaultsIfNotSet() ->addDefaultsIfNotSet()

View file

@ -50,7 +50,7 @@ class MarkdownHelper implements HelperInterface
* *
* @return string The default charset * @return string The default charset
*/ */
public function getCharset() public function getCharset(): string
{ {
return $this->charset; return $this->charset;
} }

View file

@ -124,7 +124,7 @@ class MarkdownParser extends MarkdownExtra implements MarkdownParserInterface
/** /**
* Simplify detab * Simplify detab
*/ */
public function detab($text) public function detab($text): string
{ {
return str_replace("\t", str_repeat(' ', $this->tab_width), $text); return str_replace("\t", str_repeat(' ', $this->tab_width), $text);
} }

View file

@ -15,7 +15,7 @@ class Min extends MarkdownParser
$this->features[$name] = false; $this->features[$name] = false;
} }
return parent::__construct($features); parent::__construct($features);
} }
} }

View file

@ -2,6 +2,9 @@ Provide markdown conversion (based on [Michel Fortin work](https://github.com/mi
[![Build Status](https://secure.travis-ci.org/KnpLabs/KnpMarkdownBundle.svg)](http://travis-ci.org/KnpLabs/KnpMarkdownBundle) [![Build Status](https://secure.travis-ci.org/KnpLabs/KnpMarkdownBundle.svg)](http://travis-ci.org/KnpLabs/KnpMarkdownBundle)
![ci.yml](https://github.com/tacman/KnpMarkdownBundle/actions/workflows/ci.yml/badge.svg)
![php.yml](https://github.com/tacman/KnpMarkdownBundle/actions/workflows/php.yml/badge.svg)
## INSTALLATION ## INSTALLATION
Add KnpMarkdownBundle to your project via [Composer](https://getcomposer.org/): Add KnpMarkdownBundle to your project via [Composer](https://getcomposer.org/):

View file

@ -15,19 +15,19 @@ class MarkdownTwigExtension extends AbstractExtension
$this->parserManager = $parserManager; $this->parserManager = $parserManager;
} }
public function getFilters() public function getFilters(): array
{ {
return array( return array(
new TwigFilter('markdown', array($this, 'markdown'), array('is_safe' => array('html'))), new TwigFilter('markdown', array($this, 'markdown'), array('is_safe' => array('html'))),
); );
} }
public function markdown($text, $parser = null) public function markdown($text, $parser = null): string
{ {
return $this->parserManager->transform($text, $parser); return $this->parserManager->transform($text, $parser);
} }
public function getName() public function getName(): string
{ {
return 'markdown'; return 'markdown';
} }

View file

@ -18,14 +18,16 @@
], ],
"require": { "require": {
"php": "^7.1.3|^8.0", "php": "^7.4|^8.0",
"symfony/framework-bundle": "~3.4|^4.0|^5.0", "symfony/framework-bundle": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "~3.4|^4.0|^5.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0",
"michelf/php-markdown": "~1.4" "michelf/php-markdown": "^1.9"
}, },
"require-dev": { "require-dev": {
"symfony/phpunit-bridge": "^4.4.0 || ^5.0", "symfony/phpunit-bridge": "^4.4.11|^5.0|^6.0",
"symfony/templating": "~3.4|^4.0|^5.0" "symfony/templating": "^4.4|^5.0|^6.0",
"phpstan/phpstan": "^1.2",
"phpstan/phpstan-symfony": "^1.0"
}, },
"suggest": { "suggest": {
"symfony/twig-bundle": "to use the Twig markdown filter", "symfony/twig-bundle": "to use the Twig markdown filter",
@ -38,6 +40,18 @@
} }
}, },
"scripts": {
"test": [
"php ./vendor/bin/simple-phpunit"
]
},
"autoload-dev": {
"psr-4": {
"Knp\\Bundle\\MarkdownBundle\\Tests\\": "tests/"
}
},
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Knp\\Bundle\\MarkdownBundle\\": "" "Knp\\Bundle\\MarkdownBundle\\": ""

View file

@ -2,30 +2,30 @@
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html --> <!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.3/phpunit.xsd" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
backupGlobals="false" backupGlobals="false"
bootstrap="vendor/autoload.php" bootstrap="vendor/autoload.php"
colors="true" colors="true"
failOnRisky="true" failOnRisky="true"
failOnWarning="true" failOnWarning="true"
failOnIncomplete="false"
> >
<php> <php>
<server name="SYMFONY_PHPUNIT_VERSION" value="7.5" /> <server name="SYMFONY_PHPUNIT_VERSION" value="9.5" />
</php> </php>
<coverage processUncoveredFiles="true">
<include>
<directory>.</directory>
</include>
<exclude>
<directory>tests</directory>
<directory>vendor</directory>
</exclude>
</coverage>
<testsuites> <testsuites>
<testsuite name="Markdown Test Suite"> <testsuite name="Markdown Test Suite">
<directory>tests</directory> <directory>tests</directory>
</testsuite> </testsuite>
</testsuites> </testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory>.</directory>
<exclude>
<directory>tests</directory>
<directory>vendor</directory>
</exclude>
</whitelist>
</filter>
</phpunit> </phpunit>

View file

@ -2,13 +2,14 @@
namespace Knp\Bundle\MarkdownBundle\Tests; namespace Knp\Bundle\MarkdownBundle\Tests;
use PHPUnit\Framework\TestCase;
use Knp\Bundle\MarkdownBundle\Parser\MarkdownParser as Parser; use Knp\Bundle\MarkdownBundle\Parser\MarkdownParser as Parser;
class EscapingTest extends \PHPUnit_Framework_TestCase class EscapingTest extends TestCase
{ {
protected $parser; protected $parser;
public function setUp() protected function setUp(): void
{ {
$this->parser = new Parser(); $this->parser = new Parser();
} }

View file

@ -3,8 +3,9 @@
namespace Knp\Bundle\MarkdownBundle\Tests; namespace Knp\Bundle\MarkdownBundle\Tests;
use Knp\Bundle\MarkdownBundle\Parser\MarkdownParser as Parser; use Knp\Bundle\MarkdownBundle\Parser\MarkdownParser as Parser;
use PHPUnit\Framework\TestCase;
class FeatureTest extends \PHPUnit_Framework_TestCase class FeatureTest extends TestCase
{ {
public function testParser() public function testParser()
{ {
@ -754,10 +755,10 @@ EOF;
// asserting a few things instead of comparing full final HTML // asserting a few things instead of comparing full final HTML
// because a few minor things have changed over versions of Michelf // because a few minor things have changed over versions of Michelf
// With assertContains(), tests will pass across all versions // With assertContains(), tests will pass across all versions
$this->assertContains('<p>That\'s some text with a footnote.<sup id="fnref:1"><a href="#fn:1"', $actualHtml); $this->assertStringContainsString('<p>That\'s some text with a footnote.<sup id="fnref:1"><a href="#fn:1"', $actualHtml);
$this->assertContains('<div class="footnotes"', $actualHtml); $this->assertStringContainsString('<div class="footnotes"', $actualHtml);
$this->assertContains('<li id="fn:1"', $actualHtml); $this->assertStringContainsString('<li id="fn:1"', $actualHtml);
$this->assertContains('<p>And that\'s the footnote.&#160;<a href="#fnref:1" class="footnote-backref"', $actualHtml); $this->assertStringContainsString('<p>And that\'s the footnote.&#160;<a href="#fnref:1" class="footnote-backref"', $actualHtml);
} }
/** /**

View file

@ -4,14 +4,16 @@ namespace Knp\Bundle\MarkdownBundle\Tests;
use Knp\Bundle\MarkdownBundle\KnpMarkdownBundle; use Knp\Bundle\MarkdownBundle\KnpMarkdownBundle;
use Knp\Bundle\MarkdownBundle\Parser\MarkdownParser; use Knp\Bundle\MarkdownBundle\Parser\MarkdownParser;
use PHPUnit\Framework\TestCase;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle; use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
use Symfony\Component\Routing\RouteCollectionBuilder; use Symfony\Component\Routing\RouteCollectionBuilder;
class IntegrationTest extends \PHPUnit_Framework_TestCase class IntegrationTest extends TestCase
{ {
public function testServicesAvailable() public function testServicesAvailable()
{ {
@ -29,7 +31,7 @@ class IntegrationKernel extends Kernel
private $cacheDir; private $cacheDir;
public function registerBundles() public function registerBundles(): iterable
{ {
return [ return [
new FrameworkBundle(), new FrameworkBundle(),
@ -37,16 +39,20 @@ class IntegrationKernel extends Kernel
]; ];
} }
protected function configureRoutes(RouteCollectionBuilder $routes) protected function configureRoutes(RoutingConfigurator $routes)
{ {
} }
protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
{ {
$c->setParameter('kernel.secret', '1234');
$c->loadFromExtension('framework', [
'secret' => 'F00',
'router' => ['utf8' => true]
]);
} }
public function getCacheDir() public function getCacheDir(): string
{ {
if (null === $this->cacheDir) { if (null === $this->cacheDir) {
$this->cacheDir = sys_get_temp_dir().'/'.rand(100, 999); $this->cacheDir = sys_get_temp_dir().'/'.rand(100, 999);

View file

@ -5,8 +5,9 @@ namespace Knp\Bundle\MarkdownBundle\Tests\Parser;
use Knp\Bundle\MarkdownBundle\Helper\MarkdownHelper; use Knp\Bundle\MarkdownBundle\Helper\MarkdownHelper;
use Knp\Bundle\MarkdownBundle\Tests\fixtures\app\TestKernel; use Knp\Bundle\MarkdownBundle\Tests\fixtures\app\TestKernel;
use Knp\Bundle\MarkdownBundle\Parser\ParserManager; use Knp\Bundle\MarkdownBundle\Parser\ParserManager;
use PHPUnit\Framework\TestCase;
class ParserManagerTest extends \PHPUnit_Framework_TestCase class ParserManagerTest extends TestCase
{ {
public function testIntegration() public function testIntegration()
{ {

View file

@ -3,8 +3,9 @@
namespace Knp\Bundle\MarkdownBundle\Tests; namespace Knp\Bundle\MarkdownBundle\Tests;
use Knp\Bundle\MarkdownBundle\Parser\Preset as Preset; use Knp\Bundle\MarkdownBundle\Parser\Preset as Preset;
use PHPUnit\Framework\TestCase;
class PresetTest extends \PHPUnit_Framework_TestCase class PresetTest extends TestCase
{ {
public function testMax() public function testMax()
{ {

View file

@ -12,7 +12,7 @@ use Symfony\Component\HttpKernel\Kernel;
class TestKernel extends Kernel class TestKernel extends Kernel
{ {
public function registerBundles() public function registerBundles(): iterable
{ {
return array( return array(
new FrameworkBundle(), new FrameworkBundle(),