diff --git a/.github/workflows/phpunit.yaml b/.github/workflows/phpunit.yaml
new file mode 100644
index 0000000..22dfdef
--- /dev/null
+++ b/.github/workflows/phpunit.yaml
@@ -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
diff --git a/.gitignore b/.gitignore
index d2cb556..717b31c 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
+.phpunit.result.cache
phpunit.xml
+var/
vendor/*
composer.lock
Tests/fixtures/app/cache
diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php
index 90bbdfa..c9b6e90 100644
--- a/DependencyInjection/Configuration.php
+++ b/DependencyInjection/Configuration.php
@@ -12,11 +12,10 @@ class Configuration implements ConfigurationInterface
*
* @return TreeBuilder
*/
- public function getConfigTreeBuilder()
+ public function getConfigTreeBuilder(): TreeBuilder
{
$treeBuilder = new TreeBuilder('knp_markdown');
- // BC layer for symfony/config < 4.2
- $rootNode = method_exists($treeBuilder, 'getRootNode') ? $treeBuilder->getRootNode() : $treeBuilder->root('knp_markdown');
+ $rootNode = $treeBuilder->getRootNode();
$rootNode
->addDefaultsIfNotSet()
diff --git a/Helper/MarkdownHelper.php b/Helper/MarkdownHelper.php
index 0b3974f..fc7de2d 100644
--- a/Helper/MarkdownHelper.php
+++ b/Helper/MarkdownHelper.php
@@ -50,7 +50,7 @@ class MarkdownHelper implements HelperInterface
*
* @return string The default charset
*/
- public function getCharset()
+ public function getCharset(): string
{
return $this->charset;
}
diff --git a/Parser/MarkdownParser.php b/Parser/MarkdownParser.php
index df369b3..378786a 100644
--- a/Parser/MarkdownParser.php
+++ b/Parser/MarkdownParser.php
@@ -124,7 +124,7 @@ class MarkdownParser extends MarkdownExtra implements MarkdownParserInterface
/**
* Simplify detab
*/
- public function detab($text)
+ public function detab($text): string
{
return str_replace("\t", str_repeat(' ', $this->tab_width), $text);
}
diff --git a/Parser/Preset/Min.php b/Parser/Preset/Min.php
index 2a4646b..50f774f 100644
--- a/Parser/Preset/Min.php
+++ b/Parser/Preset/Min.php
@@ -15,7 +15,7 @@ class Min extends MarkdownParser
$this->features[$name] = false;
}
- return parent::__construct($features);
+ parent::__construct($features);
}
}
diff --git a/README.markdown b/README.markdown
index 715d6ad..398d3a7 100644
--- a/README.markdown
+++ b/README.markdown
@@ -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)
+![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
Add KnpMarkdownBundle to your project via [Composer](https://getcomposer.org/):
diff --git a/Twig/Extension/MarkdownTwigExtension.php b/Twig/Extension/MarkdownTwigExtension.php
index e9ab8c0..9d20683 100644
--- a/Twig/Extension/MarkdownTwigExtension.php
+++ b/Twig/Extension/MarkdownTwigExtension.php
@@ -15,19 +15,19 @@ class MarkdownTwigExtension extends AbstractExtension
$this->parserManager = $parserManager;
}
- public function getFilters()
+ public function getFilters(): array
{
return array(
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);
}
- public function getName()
+ public function getName(): string
{
return 'markdown';
}
diff --git a/composer.json b/composer.json
index 961801c..c064cb9 100644
--- a/composer.json
+++ b/composer.json
@@ -18,14 +18,16 @@
],
"require": {
- "php": "^7.1.3|^8.0",
- "symfony/framework-bundle": "~3.4|^4.0|^5.0",
- "symfony/dependency-injection": "~3.4|^4.0|^5.0",
- "michelf/php-markdown": "~1.4"
+ "php": "^7.4|^8.0",
+ "symfony/framework-bundle": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "michelf/php-markdown": "^1.9"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.4.0 || ^5.0",
- "symfony/templating": "~3.4|^4.0|^5.0"
+ "symfony/phpunit-bridge": "^4.4.11|^5.0|^6.0",
+ "symfony/templating": "^4.4|^5.0|^6.0",
+ "phpstan/phpstan": "^1.2",
+ "phpstan/phpstan-symfony": "^1.0"
},
"suggest": {
"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": {
"psr-4": {
"Knp\\Bundle\\MarkdownBundle\\": ""
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 0bdd033..e8fcfce 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -2,30 +2,30 @@
That\'s some text with a footnote.assertContains(' And that\'s the footnote. assertStringContainsString(' That\'s some text with a footnote.assertStringContainsString('