diff --git a/.travis.yml b/.travis.yml index 6656e6c61533340286f0e506d2719a0d96bb338c..91867623f332e335c1563ebd1ddb3facb1f303f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,17 @@ sudo: required language: php +# Stage order +stages: + - pre-conditions + - test + - quality + + +################ +# Test stage # +################ + php: - 5.6 - 7.0 @@ -10,27 +21,129 @@ php: - 7.3 env: - - COMMAND="install" - - COMMAND="update" - -matrix: - allow_failures: - - php: 7.3 - env: COMMAND="update" + - COMMAND="composer install" + - COMMAND="composer update" before_script: - pecl install krb5 - - composer ${COMMAND} - - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi - - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then composer require --dev php-coveralls/php-coveralls; fi + - ${COMMAND} script: - - bin/check-syntax.sh - - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi - - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + - php vendor/bin/phpunit --no-coverage + +jobs: + fast_finish: true + allow_failures: + - php: 5.6 + env: Psalm + - php: 5.6 + env: Security check (composer install) + - php: 5.6 + env: Security check (composer update) + - php: 5.6 + env: PHP Codesniffer + + include: + + ########################## + # Pre-conditions stage # + ########################## + + - stage: pre-conditions + php: 5.6 + env: Syntax check PHP + before_script: + - composer install + script: + - vendor/bin/check-syntax-php.sh + + - stage: pre-conditions + php: 7.0 + env: Syntax check PHP + before_script: + - composer install + script: + - vendor/bin/check-syntax-php.sh + + - stage: pre-conditions + php: 7.1 + env: Syntax check PHP + before_script: + - composer install + script: + - vendor/bin/check-syntax-php.sh + + - stage: pre-conditions + php: 7.2 + env: Syntax check PHP + before_script: + - composer install + script: + - vendor/bin/check-syntax-php.sh + + - stage: pre-conditions + php: 7.3 + env: Syntax check PHP + before_script: + - composer install + script: + - vendor/bin/check-syntax-php.sh + + - stage: pre-conditions + env: Syntax check YAML / XML / JSON + before_script: + - composer update + script: + - vendor/bin/check-syntax-yaml.sh + - vendor/bin/check-syntax-xml.sh + - vendor/bin/check-syntax-json.sh + + + ################### + # Quality stage # + ################### + + - stage: quality + env: Security check (composer install) + before_script: + - composer install + script: + - vendor/bin/security-checker security:check + + - stage: quality + env: Security check (composer update) + before_script: + - composer update + script: + - vendor/bin/security-checker security:check + + - stage: quality + php: 7.2 + env: Codecov + before_script: + - composer update + - php vendor/bin/phpunit + script: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - ./.codecov -X gcov + # - <(curl -s https://codecov.io/bash) + + - stage: quality + env: Psalm + before_script: + - composer update + script: + - vendor/bin/psalm -after_success: - - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/bin/php-coveralls -v; fi + - stage: quality + env: PHP Codesniffer + before_script: + - composer update + script: + - vendor/bin/phpcs notifications: slack: diff --git a/bin/check-syntax.sh b/bin/check-syntax.sh deleted file mode 100755 index 2c4e25c00294d46a5fbb2796f47ca449a1c91cd2..0000000000000000000000000000000000000000 --- a/bin/check-syntax.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash - -PHP='/usr/bin/env php' -RETURN=0 - -# check PHP files -for FILE in `find attributemap bin config-templates lib metadata-templates modules templates tests www -name "*.php"`; do - $PHP -l $FILE > /dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "Syntax check failed for ${FILE}" - RETURN=`expr ${RETURN} + 1` - fi -done - -# check JSON files -for FILE in `find dictionaries modules -name "*.json"`; do - $PHP -r "exit((json_decode(file_get_contents('$FILE')) === null) ? 1 : 0);" - if [ $? -ne 0 ]; then - echo "Syntax check failed for ${FILE}" - RETURN=`expr ${RETURN} + 1` - fi -done - -# check YAML files -for i in `find . -path ./vendor -prune -o -path ./node_modules -prune -name '*.yml' -o -name '*.yaml' -print` -do - if [ -f "$i" ]; then - FILE="${i%/*}/${i##*/}" - $PHP -r "require(dirname(dirname(__FILE__)).'/vendor/autoload.php'); use Symfony\Component\Yaml\Yaml; use Symfony\Component\Yaml\Exception\ParseException; try { Yaml::parseFile('$FILE'); } catch(ParseException \$e) { exit(1); }" - if [ $? -ne 0 ]; then - echo "Syntax check failed for ${FILE}" - RETURN=$((RETURN + 1)) - fi - fi -done - -exit $RETURN diff --git a/composer.json b/composer.json index 25fda8859f1dc27c7a263f385b7153024bf277c8..816976916b24e1d60a30e32c76ad5de61f65a7e5 100644 --- a/composer.json +++ b/composer.json @@ -88,7 +88,10 @@ "ext-curl": "*", "mikey179/vfsstream": "~1.6", "phpunit/phpunit": "~5.7", - "squizlabs/php_codesniffer": "^3.5" + "sensiolabs/security-checker": "^5.0.3", + "simplesamlphp/simplesamlphp-test-framework": "^0.0.12", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "~1.1.9" }, "suggest": { "predis/predis": "Needed if a Redis server is used to store session information", diff --git a/composer.lock b/composer.lock index 4ed2040391e5ef6f0f5c0ace4c60067f66a317ea..ef4f553ec5ee40561ea7ae7d8abf644557d447e2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "be38a5bcca88dff2425610b5354c0029", + "content-hash": "264ae3da56101d2c96cc1bcce75a1161", "packages": [ { "name": "gettext/gettext", @@ -2883,6 +2883,106 @@ } ], "packages-dev": [ + { + "name": "composer/ca-bundle", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527", + "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2019-08-30T08:44:50+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-05-27T17:52:04+00:00" + }, { "name": "doctrine/instantiator", "version": "1.0.5", @@ -2937,6 +3037,193 @@ ], "time": "2015-06-14T21:17:01+00:00" }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2019-07-01T23:21:34+00:00" + }, { "name": "mikey179/vfsstream", "version": "v1.6.7", @@ -2983,6 +3270,62 @@ "homepage": "http://vfs.bovigo.org/", "time": "2019-08-01T01:38:37+00:00" }, + { + "name": "muglug/package-versions-56", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/muglug/PackageVersions.git", + "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/muglug/PackageVersions/zipball/a67bed26deaaf9269a348e53063bc8d4dcc60ffd", + "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "composer/composer": "^1.3", + "ext-zip": "*", + "phpunit/phpunit": "^5.7.5" + }, + "type": "composer-plugin", + "extra": { + "class": "Muglug\\PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Muglug\\PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Abdul Malik Ikhsan", + "email": "samsonasik@gmail.com" + }, + { + "name": "Matt Brown", + "email": "github@muglug.com" + } + ], + "description": "A backport of ocramius/package-versions that supports php ^5.6. Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2018-03-26T03:22:13+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.7.0", @@ -3028,6 +3371,240 @@ ], "time": "2017-10-19T19:58:43+00:00" }, + { + "name": "nikic/php-parser", + "version": "v3.1.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2018-02-28T20:30:58+00:00" + }, + { + "name": "openlss/lib-array2xml", + "version": "0.5.1", + "source": { + "type": "git", + "url": "https://github.com/nullivex/lib-array2xml.git", + "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/c8b5998a342d7861f2e921403f44e0a2f3ef2be0", + "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "LSS": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Bryan Tong", + "email": "contact@nullivex.com", + "homepage": "http://bryantong.com" + }, + { + "name": "Tony Butler", + "email": "spudz76@gmail.com", + "homepage": "http://openlss.org" + } + ], + "description": "Array2XML conversion library credit to lalit.org", + "homepage": "http://openlss.org", + "keywords": [ + "array", + "array conversion", + "xml", + "xml conversion" + ], + "time": "2016-11-10T19:10:18+00:00" + }, + { + "name": "php-coveralls/php-coveralls", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-coveralls/php-coveralls.git", + "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3b00c229726f892bfdadeaf01ea430ffd04a939d", + "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.0", + "php": "^5.5 || ^7.0", + "psr/log": "^1.0", + "symfony/config": "^2.1 || ^3.0 || ^4.0", + "symfony/console": "^2.1 || ^3.0 || ^4.0", + "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0", + "symfony/yaml": "^2.0 || ^3.0 || ^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0" + }, + "suggest": { + "symfony/http-kernel": "Allows Symfony integration" + }, + "bin": [ + "bin/php-coveralls" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "PhpCoveralls\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kitamura Satoshi", + "email": "with.no.parachute@gmail.com", + "homepage": "https://www.facebook.com/satooshi.jp", + "role": "Original creator" + }, + { + "name": "Takashi Matsuo", + "email": "tmatsuo@google.com" + }, + { + "name": "Google Inc" + }, + { + "name": "Dariusz Ruminski", + "email": "dariusz.ruminski@gmail.com", + "homepage": "https://github.com/keradus" + }, + { + "name": "Contributors", + "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors" + } + ], + "description": "PHP client library for Coveralls API", + "homepage": "https://github.com/php-coveralls/php-coveralls", + "keywords": [ + "ci", + "coverage", + "github", + "test" + ], + "time": "2018-05-22T23:11:08+00:00" + }, + { + "name": "php-cs-fixer/diff", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", + "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "symfony/process": "^3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "SpacePossum" + } + ], + "description": "sebastian/diff v2 backport support for PHP5.6", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "time": "2018-02-15T16:58:55+00:00" + }, { "name": "phpdocumentor/reflection-common", "version": "1.0.1", @@ -3544,89 +4121,179 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-02-01T05:50:59+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "abandoned": true, + "time": "2017-06-30T09:13:00+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "phpunit", - "testing", - "xunit" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], - "time": "2018-02-01T05:50:59+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "files": [ + "src/getallheaders.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -4141,6 +4808,105 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, + { + "name": "sensiolabs/security-checker", + "version": "v5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/security-checker.git", + "reference": "46be3f58adac13084497961e10eed9a7fb4d44d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/46be3f58adac13084497961e10eed9a7fb4d44d1", + "reference": "46be3f58adac13084497961e10eed9a7fb4d44d1", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "php": ">=5.5.9", + "symfony/console": "~2.7|~3.0|~4.0" + }, + "bin": [ + "security-checker" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "SensioLabs\\Security\\": "SensioLabs/Security" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "A security checker for your composer.lock", + "time": "2018-12-19T17:14:59+00:00" + }, + { + "name": "simplesamlphp/simplesamlphp-test-framework", + "version": "v0.0.12", + "source": { + "type": "git", + "url": "https://github.com/simplesamlphp/simplesamlphp-test-framework.git", + "reference": "e582a10084c14dd9bd1ff107d33c48c397e57f64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-test-framework/zipball/e582a10084c14dd9bd1ff107d33c48c397e57f64", + "reference": "e582a10084c14dd9bd1ff107d33c48c397e57f64", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "~5.7|^6.0|^7.0|^8.0", + "vimeo/psalm": "1.1.9|^2.0|^3.0|^4.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-krb5": "*", + "simplesamlphp/simplesamlphp": "dev-master" + }, + "bin": [ + "bin/check-syntax-json.sh", + "bin/check-syntax-php.sh", + "bin/check-syntax-xml.sh", + "bin/check-syntax-yaml.sh" + ], + "type": "project", + "autoload": { + "psr-4": { + "SimpleSAML\\TestUtils\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Tim van Dijen", + "email": "tvdijen@gmail.com" + } + ], + "description": "Test framework for SimpleSAMLphp and related repositories ", + "keywords": [ + "test-framework" + ], + "time": "2019-10-03T09:29:11+00:00" + }, { "name": "squizlabs/php_codesniffer", "version": "3.5.0", @@ -4191,6 +4957,194 @@ "standards" ], "time": "2019-09-26T23:12:26+00:00" + }, + { + "name": "symfony/console", + "version": "v3.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "4510f04e70344d70952566e4262a0b11df39cb10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/4510f04e70344d70952566e4262a0b11df39cb10", + "reference": "4510f04e70344d70952566e4262a0b11df39cb10", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2019-08-26T07:52:58+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v3.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "c0c27e38f8accb452f830a4ec8e8ac94b6ec864a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/c0c27e38f8accb452f830a4ec8e8ac94b6ec864a", + "reference": "c0c27e38f8accb452f830a4ec8e8ac94b6ec864a", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2019-08-06T13:24:37+00:00" + }, + { + "name": "vimeo/psalm", + "version": "1.1.9", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "d15cf3b7f50249caf933144c8926c8e69aff3d34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d15cf3b7f50249caf933144c8926c8e69aff3d34", + "reference": "d15cf3b7f50249caf933144c8926c8e69aff3d34", + "shasum": "" + }, + "require": { + "composer/xdebug-handler": "^1.1", + "muglug/package-versions-56": "1.2.4", + "nikic/php-parser": "^3.1", + "openlss/lib-array2xml": "^0.0.10||^0.5.1", + "php": "^5.6||^7.0", + "php-cs-fixer/diff": "^1.2" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^5.7.4", + "squizlabs/php_codesniffer": "^3.0" + }, + "suggest": { + "ext-igbinary": "^2.0.5" + }, + "bin": [ + "psalm", + "psalter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psalm\\": "src/Psalm" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php" + ], + "time": "2018-08-14T16:06:16+00:00" } ], "aliases": [], diff --git a/phpcs.xml b/phpcs.xml index cf02a457094b50c6f412717cd6cab99fc24ffb29..f0fd05728b1a91b5c80614f68dd42095a3823df6 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -1,22 +1,40 @@ <?xml version="1.0"?> <ruleset name="SimpleSAMLphp ruleset"> + <config name="ignore_warnings_on_exit" value="1"/> + <description> By default it is less stringent about long lines than other coding standards </description> - <!-- Use this to exclude paths. You can have multiple patterns --> - <!--<exclude-pattern>*/tests/*</exclude-pattern>--> - <!--<exclude-pattern>*/other/*</exclude-pattern>--> + <file>bin</file> + <file>config-templates</file> + <file>lib</file> + <file>metadata-templates</file> + <file>modules/admin</file> + <file>modules/core</file> + <file>modules/cron</file> + <file>modules/multiauth</file> + <file>modules/portal</file> + <file>modules/saml</file> + <file>src</file> + <file>tests</file> + <file>www</file> + + <!-- Exclude deprecated classes; they are removed in SSP 2.0 --> <exclude-pattern>lib/SimpleSAML/Auth/LDAP.php</exclude-pattern> <exclude-pattern>lib/SimpleSAML/Auth/TimeLimitedToken.php</exclude-pattern> <exclude-pattern>lib/SimpleSAML/Bindings/Shib13/*</exclude-pattern> <exclude-pattern>lib/SimpleSAML/Utilities.php</exclude-pattern> <exclude-pattern>lib/SimpleSAML/XML/Shib13/*</exclude-pattern> - <exclude-pattern>modules/*/templates/*.tpl.php</exclude-pattern> <exclude-pattern>modules/saml/lib/IdP/SAML1.php</exclude-pattern> <exclude-pattern>modules/saml/www/sp/saml1-acs.php</exclude-pattern> - <exclude-pattern>templates/*.tpl.php</exclude-pattern> <exclude-pattern>tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php</exclude-pattern> + + <!-- Exclude old PHP templates; they are removed in SSP 2.0 --> + <exclude-pattern>modules/*/templates/*.tpl.php</exclude-pattern> + <exclude-pattern>templates/*.tpl.php</exclude-pattern> + + <!-- Exclude Stubs until we use simplesamlphp/simplesamlphp-test-framework --> <exclude-pattern>tests/Utils/Stubs/*</exclude-pattern> <!-- This is the rule we inherit from. If you want to exlude some specific rules, see the docs on how to do that --> @@ -30,12 +48,23 @@ </properties> </rule> + <!-- Ignore these warnings until PHP 7.1 becomes the minimum required version --> + <rule ref="PSR12.Properties.ConstantVisibility"> + <exclude-pattern>lib/*</exclude-pattern> + <exclude-pattern>modules/*</exclude-pattern> + <exclude-pattern>tests/*</exclude-pattern> + </rule> + + <!-- Ignore wrong casing until we can rename then in SSP 2.0 --> <rule ref="PSR1.Methods.CamelCapsMethodName"> <exclude-pattern>lib/SimpleSAML/XHTML/Template.php</exclude-pattern> </rule> + <!-- Ignore files with sid effects that we cannot fix --> <rule ref="PSR1.Files.SideEffects"> - <exclude-pattern>src/_autoload_modules.php</exclude-pattern> + <exclude-pattern>lib/_autoload_modules.php</exclude-pattern> + <exclude-pattern>tests/_autoload_modules.php</exclude-pattern> + <exclude-pattern>www/_include.php</exclude-pattern> </rule> </ruleset>