Merge branch '3.0' into 3.1
* 3.0: [travis] Don't use parallel on HHVM [appveyor] Ignore STATUS_HEAP_CORRUPTION errors on Windows Skip some tests on HHVM due to a PHPunit bug Use the Trusty Travis infrastructure for HHVM builds Add 3.1 to PR template branch row, remove 2.3 Improve memory efficiency document method name changes in Voter class Conflicts: .travis.yml
This commit is contained in:
commit
98303d34a1
|
@ -1,6 +1,6 @@
|
||||||
| Q | A
|
| Q | A
|
||||||
| ------------- | ---
|
| ------------- | ---
|
||||||
| Branch? | "master" for new features / 2.3, 2.7, 2.8 or 3.0 for fixes
|
| Branch? | "master" for new features / 2.7, 2.8, 3.0 or 3.1 for fixes
|
||||||
| Bug fix? | yes/no
|
| Bug fix? | yes/no
|
||||||
| New feature? | yes/no
|
| New feature? | yes/no
|
||||||
| BC breaks? | yes/no
|
| BC breaks? | yes/no
|
||||||
|
|
22
.travis.yml
22
.travis.yml
|
@ -19,7 +19,11 @@ env:
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
|
# Use the newer stack for HHVM as HHVM does not support Precise anymore since a long time and so Precise has an outdated version
|
||||||
- php: hhvm
|
- php: hhvm
|
||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
group: edge
|
||||||
- php: 5.5
|
- php: 5.5
|
||||||
- php: 5.6
|
- php: 5.6
|
||||||
env: deps=high
|
env: deps=high
|
||||||
|
@ -37,14 +41,15 @@ services:
|
||||||
- redis-server
|
- redis-server
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
|
- stty cols 120
|
||||||
- mkdir /tmp/slapd
|
- mkdir /tmp/slapd
|
||||||
- slapd -f src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf -h ldap://localhost:3389 &
|
- slapd -f src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf -h ldap://localhost:3389 &
|
||||||
- PHP=$TRAVIS_PHP_VERSION
|
- PHP=$TRAVIS_PHP_VERSION
|
||||||
# Matrix lines for intermediate PHP versions are skipped for pull requests
|
# Matrix lines for intermediate PHP versions are skipped for pull requests
|
||||||
- if [[ ! $deps && ! $PHP = ${MIN_PHP%.*} && $PHP != hhvm && $TRAVIS_PULL_REQUEST != false ]]; then deps=skip; skip=1; fi
|
- if [[ ! $deps && ! $PHP = ${MIN_PHP%.*} && ! $PHP = hhvm* && $TRAVIS_PULL_REQUEST != false ]]; then deps=skip; skip=1; fi
|
||||||
# A sigchild-enabled-PHP is used to test the Process component on the lowest PHP matrix line
|
# A sigchild-enabled-PHP is used to test the Process component on the lowest PHP matrix line
|
||||||
- if [[ ! $deps && $PHP = ${MIN_PHP%.*} && ! -d php-$MIN_PHP/sapi ]]; then wget http://museum.php.net/php5/php-$MIN_PHP.tar.bz2 -O - | tar -xj; (cd php-$MIN_PHP; ./configure --enable-sigchild --enable-pcntl; make -j2); fi
|
- if [[ ! $deps && $PHP = ${MIN_PHP%.*} && ! -d php-$MIN_PHP/sapi ]]; then wget http://museum.php.net/php5/php-$MIN_PHP.tar.bz2 -O - | tar -xj; (cd php-$MIN_PHP; ./configure --enable-sigchild --enable-pcntl; make -j2); fi
|
||||||
- if [[ $PHP != hhvm ]]; then INI_FILE=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; else INI_FILE=/etc/hhvm/php.ini; fi
|
- if [[ ! $PHP = hhvm* ]]; then INI_FILE=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; else INI_FILE=/etc/hhvm/php.ini; fi
|
||||||
- if [[ ! $skip ]]; then echo memory_limit = -1 >> $INI_FILE; fi
|
- if [[ ! $skip ]]; then echo memory_limit = -1 >> $INI_FILE; fi
|
||||||
- if [[ ! $skip ]]; then echo session.gc_probability = 0 >> $INI_FILE; fi
|
- if [[ ! $skip ]]; then echo session.gc_probability = 0 >> $INI_FILE; fi
|
||||||
- if [[ ! $skip && $PHP = 5.* ]]; then echo extension = mongo.so >> $INI_FILE; fi
|
- if [[ ! $skip && $PHP = 5.* ]]; then echo extension = mongo.so >> $INI_FILE; fi
|
||||||
|
@ -53,9 +58,9 @@ before_install:
|
||||||
- if [[ ! $skip && $PHP = 7.* ]]; then (echo yes | pecl install -f apcu-5.1.2 && echo apc.enable_cli = 1 >> $INI_FILE); fi
|
- if [[ ! $skip && $PHP = 7.* ]]; then (echo yes | pecl install -f apcu-5.1.2 && echo apc.enable_cli = 1 >> $INI_FILE); fi
|
||||||
- if [[ ! $deps && $PHP = 5.* ]]; then (cd src/Symfony/Component/Debug/Resources/ext && phpize && ./configure && make && echo extension = $(pwd)/modules/symfony_debug.so >> $INI_FILE); fi
|
- if [[ ! $deps && $PHP = 5.* ]]; then (cd src/Symfony/Component/Debug/Resources/ext && phpize && ./configure && make && echo extension = $(pwd)/modules/symfony_debug.so >> $INI_FILE); fi
|
||||||
- if [[ ! $skip && $PHP = 5.* ]]; then pecl install -f memcached-2.1.0; fi
|
- if [[ ! $skip && $PHP = 5.* ]]; then pecl install -f memcached-2.1.0; fi
|
||||||
- if [[ ! $skip && $PHP != hhvm ]]; then echo extension = ldap.so >> $INI_FILE; fi
|
- if [[ ! $skip && ! $PHP = hhvm* ]]; then echo extension = ldap.so >> $INI_FILE; fi
|
||||||
- if [[ ! $skip && $PHP != hhvm ]]; then echo extension = redis.so >> $INI_FILE; fi;
|
- if [[ ! $skip && ! $PHP = hhvm* ]]; then echo extension = redis.so >> $INI_FILE; fi;
|
||||||
- if [[ ! $skip && $PHP != hhvm ]]; then phpenv config-rm xdebug.ini; fi
|
- if [[ ! $skip && ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini; fi
|
||||||
- if [[ ! $skip ]]; then composer self-update --stable; fi
|
- if [[ ! $skip ]]; then composer self-update --stable; fi
|
||||||
- if [[ ! $skip ]]; then cp .composer/* ~/.composer/; fi
|
- if [[ ! $skip ]]; then cp .composer/* ~/.composer/; fi
|
||||||
- if [[ ! $skip ]]; then ./phpunit install; fi
|
- if [[ ! $skip ]]; then ./phpunit install; fi
|
||||||
|
@ -75,12 +80,13 @@ install:
|
||||||
- export COMPOSER_ROOT_VERSION=$SYMFONY_VERSION.x-dev
|
- export COMPOSER_ROOT_VERSION=$SYMFONY_VERSION.x-dev
|
||||||
- if [[ ! $deps ]]; then composer update; else export SYMFONY_DEPRECATIONS_HELPER=weak; fi
|
- if [[ ! $deps ]]; then composer update; else export SYMFONY_DEPRECATIONS_HELPER=weak; fi
|
||||||
- if [[ $TRAVIS_BRANCH = master ]]; then export SYMFONY_PHPUNIT_OVERLOAD=1; fi
|
- if [[ $TRAVIS_BRANCH = master ]]; then export SYMFONY_PHPUNIT_OVERLOAD=1; fi
|
||||||
- if [[ $PHP != hhvm ]]; then php -i; else hhvm --php -r 'print_r($_SERVER);print_r(ini_get_all());'; fi
|
- if [[ ! $PHP = hhvm* ]]; then php -i; else hhvm --php -r 'print_r($_SERVER);print_r(ini_get_all());'; fi
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- if [[ $skip ]]; then echo -e "\\n\\e[1;34mIntermediate PHP version $PHP is skipped for pull requests.\\e[0m"; fi
|
- if [[ $skip ]]; then echo -e "\\n\\e[1;34mIntermediate PHP version $PHP is skipped for pull requests.\\e[0m"; fi
|
||||||
- if [[ ! $deps ]]; then echo "$COMPONENTS" | parallel --gnu '$PHPUNIT --exclude-group tty,benchmark,intl-data {}'; fi
|
- if [[ ! $deps && ! $PHP = hhvm* ]]; then echo "$COMPONENTS" | parallel --gnu '$PHPUNIT --exclude-group tty,benchmark,intl-data {}'; fi
|
||||||
- if [[ ! $deps ]]; then echo -e "\\nRunning tests requiring tty"; $PHPUNIT --group tty; fi
|
- if [[ ! $deps && ! $PHP = hhvm* ]]; then echo -e "\\nRunning tests requiring tty"; $PHPUNIT --group tty; fi
|
||||||
|
- if [[ ! $deps && $PHP = hhvm* ]]; then $PHPUNIT --exclude-group benchmark,intl-data; fi
|
||||||
- if [[ ! $deps && $PHP = ${MIN_PHP%.*} ]]; then echo -e "1\\n0" | xargs -I{} sh -c 'echo "\\nPHP --enable-sigchild enhanced={}" && ENHANCE_SIGCHLD={} php-$MIN_PHP/sapi/cli/php .phpunit/phpunit-4.8/phpunit --colors=always src/Symfony/Component/Process/'; fi
|
- if [[ ! $deps && $PHP = ${MIN_PHP%.*} ]]; then echo -e "1\\n0" | xargs -I{} sh -c 'echo "\\nPHP --enable-sigchild enhanced={}" && ENHANCE_SIGCHLD={} php-$MIN_PHP/sapi/cli/php .phpunit/phpunit-4.8/phpunit --colors=always src/Symfony/Component/Process/'; fi
|
||||||
- if [[ $deps = high ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --no-progress --ansi; $PHPUNIT --exclude-group tty,benchmark,intl-data'$LEGACY; fi
|
- if [[ $deps = high ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --no-progress --ansi; $PHPUNIT --exclude-group tty,benchmark,intl-data'$LEGACY; fi
|
||||||
- if [[ $deps = low ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --no-progress --ansi --prefer-lowest --prefer-stable; $PHPUNIT --exclude-group tty,benchmark,intl-data'; fi
|
- if [[ $deps = low ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --no-progress --ansi --prefer-lowest --prefer-stable; $PHPUNIT --exclude-group tty,benchmark,intl-data'; fi
|
||||||
|
|
|
@ -1086,7 +1086,7 @@ UPGRADE FROM 2.x to 3.0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
* The `AbstractVoter::isGranted()` method have been replaced by `AbstractVoter::voteOnAttribute()`.
|
* The `AbstractVoter::isGranted()` method has been replaced by `Voter::voteOnAttribute()`.
|
||||||
|
|
||||||
Before:
|
Before:
|
||||||
|
|
||||||
|
@ -1105,7 +1105,7 @@ UPGRADE FROM 2.x to 3.0
|
||||||
After:
|
After:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
class MyVoter extends AbstractVoter
|
class MyVoter extends Voter
|
||||||
{
|
{
|
||||||
protected function voteOnAttribute($attribute, $object, TokenInterface $token)
|
protected function voteOnAttribute($attribute, $object, TokenInterface $token)
|
||||||
{
|
{
|
||||||
|
@ -1116,8 +1116,8 @@ UPGRADE FROM 2.x to 3.0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
* The `supportsAttribute()` and `supportsClass()` methods of classes `AuthenticatedVoter`, `ExpressionVoter`
|
* The `supportsAttribute()` and `supportsClass()` methods of the `AuthenticatedVoter`, `ExpressionVoter`,
|
||||||
and `RoleVoter` have been removed.
|
and `RoleVoter` classes have been removed.
|
||||||
|
|
||||||
* The `intention` option was renamed to `csrf_token_id` for all the authentication listeners.
|
* The `intention` option was renamed to `csrf_token_id` for all the authentication listeners.
|
||||||
|
|
||||||
|
|
10
phpunit
10
phpunit
|
@ -53,6 +53,9 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__
|
||||||
chdir("phpunit-$PHPUNIT_VERSION");
|
chdir("phpunit-$PHPUNIT_VERSION");
|
||||||
passthru("$COMPOSER remove --no-update phpspec/prophecy");
|
passthru("$COMPOSER remove --no-update phpspec/prophecy");
|
||||||
passthru("$COMPOSER remove --no-update symfony/yaml");
|
passthru("$COMPOSER remove --no-update symfony/yaml");
|
||||||
|
if (5.1 <= $PHPUNIT_VERSION && $PHPUNIT_VERSION < 5.4) {
|
||||||
|
passthru("$COMPOSER require --no-update phpunit/phpunit-mock-objects \"~3.1.0\"");
|
||||||
|
}
|
||||||
passthru("$COMPOSER require --dev --no-update symfony/phpunit-bridge \">=3.1@dev\"");
|
passthru("$COMPOSER require --dev --no-update symfony/phpunit-bridge \">=3.1@dev\"");
|
||||||
passthru("$COMPOSER install --prefer-dist --no-progress --ansi", $exit);
|
passthru("$COMPOSER install --prefer-dist --no-progress --ansi", $exit);
|
||||||
if ($exit) {
|
if ($exit) {
|
||||||
|
@ -170,8 +173,11 @@ if (isset($argv[1]) && 'symfony' === $argv[1]) {
|
||||||
unlink($file);
|
unlink($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fail on any individual component failures but ignore STATUS_STACK_BUFFER_OVERRUN (-1073740791/0xC0000409) and STATUS_ACCESS_VIOLATION (-1073741819/0xC0000005) on Windows when APCu is enabled
|
// Fail on any individual component failures but ignore some error codes on Windows when APCu is enabled:
|
||||||
if ($procStatus && ('\\' !== DIRECTORY_SEPARATOR || !extension_loaded('apcu') || !ini_get('apc.enable_cli') || (-1073740791 !== $procStatus && -1073741819 !== $procStatus))) {
|
// STATUS_STACK_BUFFER_OVERRUN (-1073740791/0xC0000409)
|
||||||
|
// STATUS_ACCESS_VIOLATION (-1073741819/0xC0000005)
|
||||||
|
// STATUS_HEAP_CORRUPTION (-1073740940/0xC0000374)
|
||||||
|
if ($procStatus && ('\\' !== DIRECTORY_SEPARATOR || !extension_loaded('apcu') || !ini_get('apc.enable_cli') || !in_array($procStatus, array(-1073740791, -1073741819, -1073740940)))) {
|
||||||
$exit = $procStatus;
|
$exit = $procStatus;
|
||||||
echo "\033[41mKO\033[0m $component\n\n";
|
echo "\033[41mKO\033[0m $component\n\n";
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -72,7 +72,7 @@ class StreamOutput extends Output
|
||||||
*/
|
*/
|
||||||
protected function doWrite($message, $newline)
|
protected function doWrite($message, $newline)
|
||||||
{
|
{
|
||||||
if (false === @fwrite($this->stream, $message.($newline ? PHP_EOL : ''))) {
|
if (false === @fwrite($this->stream, $message) || ($newline && (false === @fwrite($this->stream, PHP_EOL)))) {
|
||||||
// should never happen
|
// should never happen
|
||||||
throw new RuntimeException('Unable to write output.');
|
throw new RuntimeException('Unable to write output.');
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,10 @@ class MemcacheSessionHandlerTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
if (defined('HHVM_VERSION')) {
|
||||||
|
$this->markTestSkipped('PHPUnit_MockObject cannot mock the Memcache class on HHVM. See https://github.com/sebastianbergmann/phpunit-mock-objects/pull/289');
|
||||||
|
}
|
||||||
|
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->memcache = $this->getMock('Memcache');
|
$this->memcache = $this->getMock('Memcache');
|
||||||
$this->storage = new MemcacheSessionHandler(
|
$this->storage = new MemcacheSessionHandler(
|
||||||
|
|
|
@ -31,6 +31,10 @@ class MemcachedSessionHandlerTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
if (defined('HHVM_VERSION')) {
|
||||||
|
$this->markTestSkipped('PHPUnit_MockObject cannot mock the Memcached class on HHVM. See https://github.com/sebastianbergmann/phpunit-mock-objects/pull/289');
|
||||||
|
}
|
||||||
|
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
if (version_compare(phpversion('memcached'), '2.2.0', '>=')) {
|
if (version_compare(phpversion('memcached'), '2.2.0', '>=')) {
|
||||||
|
|
|
@ -135,6 +135,10 @@ class PdoSessionHandlerTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
public function testReadConvertsStreamToString()
|
public function testReadConvertsStreamToString()
|
||||||
{
|
{
|
||||||
|
if (defined('HHVM_VERSION')) {
|
||||||
|
$this->markTestSkipped('PHPUnit_MockObject cannot mock the PDOStatement class on HHVM. See https://github.com/sebastianbergmann/phpunit-mock-objects/pull/289');
|
||||||
|
}
|
||||||
|
|
||||||
$pdo = new MockPdo('pgsql');
|
$pdo = new MockPdo('pgsql');
|
||||||
$pdo->prepareResult = $this->getMock('PDOStatement');
|
$pdo->prepareResult = $this->getMock('PDOStatement');
|
||||||
|
|
||||||
|
@ -152,6 +156,10 @@ class PdoSessionHandlerTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
public function testReadLockedConvertsStreamToString()
|
public function testReadLockedConvertsStreamToString()
|
||||||
{
|
{
|
||||||
|
if (defined('HHVM_VERSION')) {
|
||||||
|
$this->markTestSkipped('PHPUnit_MockObject cannot mock the PDOStatement class on HHVM. See https://github.com/sebastianbergmann/phpunit-mock-objects/pull/289');
|
||||||
|
}
|
||||||
|
|
||||||
$pdo = new MockPdo('pgsql');
|
$pdo = new MockPdo('pgsql');
|
||||||
$selectStmt = $this->getMock('PDOStatement');
|
$selectStmt = $this->getMock('PDOStatement');
|
||||||
$insertStmt = $this->getMock('PDOStatement');
|
$insertStmt = $this->getMock('PDOStatement');
|
||||||
|
|
|
@ -113,7 +113,7 @@ EOTXT;
|
||||||
$line = __LINE__ - 1;
|
$line = __LINE__ - 1;
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
$collector = null;
|
$collector->__destruct();
|
||||||
$this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", ob_get_clean());
|
$this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", ob_get_clean());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue