PHP nightly recently got updated to dev-8.x, which is not supported
by any of the test scripts. This makes the test pretty useless and
doesn't help in any way.
Instead, the build script should focus on current versions of PHP,
starting from 5.6 to 7.3 (current stable release).
PHP 7.3 is a reasonable version to use for finding breaking changes
in the test scripts (phpunit especially warns about changes). These
tests can fail, of course.
This commit makes Travis fail on deprecation warnings for new versions
of PHP and ensures that checks are made against all versions from PHP
5.6 onwards
- Remove HHVM
HHVM recently announced ending PHP support:
https://hhvm.com/blog/2018/09/12/end-of-php-support-future-of-hack.html
"HHVM v3.30 will be the last release series where HHVM aims to support
PHP. [...] Ultimately, we recommend that projects either migrate
entirely to the Hack language, or entirely to PHP7 and the PHP runtime."
RSS-Bridge never "officially" supported HHVM, so support can be removed.
- Use composer for all versions
PHP 5.6 is using PEAR, while all other versions use Composer to manage
packages and dependencies. This commit removes PEAR for PHP 5.6 in favor
of Composer. This also simplifies the script.
- Add PHP compatibility tests
Uses https://github.com/PHPCompatibility/PHPCompatibility
RSS-Bridge supports PHP 5.6 or higher. This commit adds tests to check
compatibility and detect breaking changes.
"phpcompatibility.xml" contains the ruleset.
Notice: Technically RSS-Bridge requires PHP 5.6.1, but for some reason
PHPCompatibility doesn't accept "5.6.1" for "testVersion". This is why
INI_SCANNER_TYPED is excluded from tests.
- Rearrange tests
PHP 5.6:
- Coding style (phpcs.xml)
- PHP compatibility (phpcompatibility.xml)
PHP 7.0:
- Coding style (phpcs.xml)
- Unit tests (phpunit.xml) - using stable release of PHPUnit
PHP nightly:
- Coding style (phpcs.xml)
- Unit tests (phpunit.xml) - using latest version of PHPUnit
- PHP compatibility - no exceptions for PHP 5.6+
- Documentation added to improve maintainability
Adds unit test for bridge implementations:
- Custom functions must be in protected or private scope
- getName() must return a valid string (non-empty)
- getURI() must return a valid URI
- Each bridge must define constants for NAME, URI, DESCRIPTION and
MAINTAINER. CACHE_TIMEOUT and PARAMETERS are optional.
The unit test is written for PHPUnit 6.x and will automatically be
tested by Travis-CI for PHP 7.0 (see .travis.yml).
Remarks:
Unit tests for bridge data were scrapped in #378 for complexity
reasons (tests would have to be maintained for each bridge). This
unit test, however, is written for testing all bridges without
taking specific implementation details into account.
Travis CI upgraded the linux build environment from Ubuntu Precise
to Ubuntu Trusty with Trusty becoming the default build environment
as of August 2017:
https://docs.travis-ci.com/user/reference/overview/
A bug in the configuration of the Ubuntu Trusty distro causes all
builds except nightly to fail. The PHP include_path is set to
include_path='.:/home/travis/.phpenv/versions/5.6.31/share/pear'
instead of
include_path='.:/home/travis/.phpenv/versions/5.6.31/lib/php/pear'
which causes phpcs to fail because it cannot resolve import paths.
This commit adds a hotfix to .travis.yml that circumvents the
issue by overwriting the include_path during initialization. This
hotfix should be removed once a solution is found.
This bug is tracked via
https://github.com/travis-ci/travis-ci/issues/8487
Travis CI recently updated the default distribution from Ubuntu
Precise to Ubuntu Trusty, which causes all builds except nightly
to fail.
For unknown reasons phpcs is unable to locate "PHP/CodeSniffer/
autoload.php" causing it to fail with a fatal error
The root cause of the failure is unknown. We explicitly return to
the previous build system (Ubuntu Precise) for builds to work again.
See the migration guide for reference:
https://docs.travis-ci.com/user/precise-to-trusty-migration-guide/
Notice: Ubuntu Precise is retired as of September 2017 and will be
decommissioned in the near future:
https://docs.travis-ci.com/user/reference/overview/