18510f8352
* 2.8: [CssSelector] For AND operator, the left operand should have parentheses, not only right operand Removed unused parameter from flattenDataProvider(). Update MongoDB extension on travis to make the builds green again.
209 lines
7.8 KiB
YAML
209 lines
7.8 KiB
YAML
language: php
|
|
|
|
dist: trusty
|
|
sudo: false
|
|
|
|
git:
|
|
depth: 1
|
|
|
|
addons:
|
|
apt_packages:
|
|
- parallel
|
|
- language-pack-fr-base
|
|
- ldap-utils
|
|
- slapd
|
|
|
|
env:
|
|
global:
|
|
- MIN_PHP=5.5.9
|
|
- SYMFONY_PROCESS_PHP_TEST_BINARY=~/.phpenv/versions/5.6/bin/php
|
|
|
|
matrix:
|
|
include:
|
|
- php: hhvm-3.18
|
|
sudo: required
|
|
group: edge
|
|
- php: 5.5
|
|
- php: 5.6
|
|
- php: 7.0
|
|
- php: 7.1
|
|
env: deps=high
|
|
- php: 7.2
|
|
env: deps=low
|
|
fast_finish: true
|
|
|
|
cache:
|
|
directories:
|
|
- .phpunit
|
|
- php-$MIN_PHP
|
|
|
|
services:
|
|
- memcached
|
|
- mongodb
|
|
- redis-server
|
|
|
|
before_install:
|
|
- |
|
|
# General configuration
|
|
stty cols 120
|
|
mkdir /tmp/slapd
|
|
slapd -f src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf -h ldap://localhost:3389 &
|
|
PHP=$TRAVIS_PHP_VERSION
|
|
[ -d ~/.composer ] || mkdir ~/.composer
|
|
cp .composer/* ~/.composer/
|
|
export PHPUNIT=$(readlink -f ./phpunit)
|
|
export PHPUNIT_X="$PHPUNIT --exclude-group tty,benchmark,intl-data"
|
|
export COMPOSER_UP='composer update --no-progress --no-suggest --ansi'
|
|
|
|
nanoseconds() {
|
|
local cmd="date"
|
|
local format="+%s%N"
|
|
local os=$(uname)
|
|
if hash gdate > /dev/null 2>&1; then
|
|
cmd="gdate"
|
|
elif [[ "$os" = Darwin ]]; then
|
|
format="+%s000000000"
|
|
fi
|
|
$cmd -u $format
|
|
}
|
|
export -f nanoseconds
|
|
|
|
# tfold is a helper to create folded reports
|
|
tfold () {
|
|
local title=$1
|
|
local fold=$(echo $title | sed -r 's/[^-_A-Za-z0-9]+/./g')
|
|
shift
|
|
local id=$(printf %08x $(( RANDOM * RANDOM )))
|
|
local start=$(nanoseconds)
|
|
echo -e "travis_fold:start:$fold"
|
|
echo -e "travis_time:start:$id"
|
|
echo -e "\\e[1;34m$title\\e[0m"
|
|
|
|
bash -xc "$*" 2>&1
|
|
local ok=$?
|
|
local end=$(nanoseconds)
|
|
echo -e "\\ntravis_time:end:$id:start=$start,finish=$end,duration=$(($end-$start))"
|
|
(exit $ok) &&
|
|
echo -e "\\e[32mOK\\e[0m $title\\n\\ntravis_fold:end:$fold" ||
|
|
echo -e "\\e[41mKO\\e[0m $title\\n"
|
|
(exit $ok)
|
|
}
|
|
export -f tfold
|
|
|
|
# php.ini configuration
|
|
if [[ $PHP = hhvm* ]]; then
|
|
INI=/etc/hhvm/php.ini
|
|
else
|
|
INI=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
|
|
phpenv config-rm xdebug.ini || echo "xdebug not available"
|
|
fi
|
|
echo date.timezone = Europe/Paris >> $INI
|
|
echo memory_limit = -1 >> $INI
|
|
echo session.gc_probability = 0 >> $INI
|
|
echo opcache.enable_cli = 1 >> $INI
|
|
echo hhvm.jit = 0 >> $INI
|
|
echo apc.enable_cli = 1 >> $INI
|
|
echo extension = redis.so >> $INI
|
|
echo extension = memcached.so >> $INI
|
|
[[ $PHP = 5.* ]] && echo extension = memcache.so >> $INI
|
|
if [[ $PHP = 5.* ]]; then
|
|
echo extension = mongo.so >> $INI
|
|
fi
|
|
|
|
# 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
|
|
else
|
|
COMPONENTS=$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n')
|
|
fi
|
|
|
|
- |
|
|
# Install sigchild-enabled PHP 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
|
|
|
|
- |
|
|
# Install extra PHP extensions
|
|
if [[ ! $skip && $PHP = 5.* ]]; then
|
|
([[ $deps ]] || tfold ext.symfony_debug 'cd src/Symfony/Component/Debug/Resources/ext && phpize && ./configure && make && echo extension = $(pwd)/modules/symfony_debug.so >> '"$INI") &&
|
|
tfold ext.apcu4 'echo yes | pecl install -f apcu-4.0.11'
|
|
elif [[ ! $skip && $PHP = 7.* ]]; then
|
|
tfold ext.apcu5 'echo yes | pecl install -f apcu-5.1.6'
|
|
tfold ext.mongodb pecl install -f mongodb-1.4.0RC1
|
|
fi
|
|
|
|
- |
|
|
# Load fixtures
|
|
if [[ ! $skip ]]; then
|
|
ldapadd -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/base.ldif &&
|
|
ldapadd -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/fixtures.ldif
|
|
fi
|
|
|
|
install:
|
|
- |
|
|
# Create local composer packages for each patched components and reference them in composer.json files when cross-testing components
|
|
if [[ ! $deps ]]; then
|
|
php .github/build-packages.php HEAD^ src/Symfony/Bridge/PhpUnit
|
|
elif [[ ! $skip ]]; then
|
|
export SYMFONY_DEPRECATIONS_HELPER=weak &&
|
|
cp composer.json composer.json.orig &&
|
|
echo -e '{\n"require":{'"$(grep phpunit-bridge composer.json)"'"php":"*"},"minimum-stability":"dev"}' > composer.json &&
|
|
php .github/build-packages.php HEAD^ $COMPONENTS &&
|
|
mv composer.json composer.json.phpunit &&
|
|
mv composer.json.orig composer.json
|
|
fi
|
|
|
|
- |
|
|
# For the master branch, when deps=high, the version before master is checked out and tested with the locally patched components
|
|
if [[ $deps = high && $TRAVIS_BRANCH = master ]]; then
|
|
SYMFONY_VERSION=$(git ls-remote --heads | grep -o '/[1-9].*' | tail -n 1 | sed s/.//) &&
|
|
git fetch origin $SYMFONY_VERSION &&
|
|
git checkout -m FETCH_HEAD &&
|
|
COMPONENTS=$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n')
|
|
elif [[ ! $skip ]]; then
|
|
SYMFONY_VERSION=$(cat composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9.]*')
|
|
fi
|
|
|
|
- |
|
|
# Legacy tests are skipped when deps=high and when the current branch version has not the same major version number than the next one
|
|
[[ $deps = high && ${SYMFONY_VERSION%.*} != $(git show $(git ls-remote --heads | grep -FA1 /$SYMFONY_VERSION | tail -n 1):composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9]*' | head -n 1) ]] && LEGACY=,legacy
|
|
|
|
export COMPOSER_ROOT_VERSION=$SYMFONY_VERSION.x-dev
|
|
if [[ ! $skip && $deps ]]; then mv composer.json.phpunit composer.json; fi
|
|
|
|
if [[ ! $skip && $PHP = 7.* ]]; then
|
|
([[ $deps ]] && cd src/Symfony/Component/HttpFoundation; composer require --dev --no-update mongodb/mongodb)
|
|
fi
|
|
|
|
- if [[ ! $skip ]]; then $COMPOSER_UP; fi
|
|
- if [[ ! $skip ]]; then ./phpunit install; fi
|
|
- |
|
|
# phpinfo
|
|
if [[ ! $PHP = hhvm* ]]; then php -i; else hhvm --php -r 'print_r($_SERVER);print_r(ini_get_all());'; fi
|
|
|
|
- |
|
|
run_tests () {
|
|
set -e
|
|
if [[ $skip ]]; then
|
|
echo -e "\\n\\e[1;34mIntermediate PHP version $PHP is skipped for pull requests.\\e[0m"
|
|
elif [[ $deps = high ]]; then
|
|
echo "$COMPONENTS" | parallel --gnu -j10% "tfold {} 'cd {} && $COMPOSER_UP && $PHPUNIT_X$LEGACY'"
|
|
elif [[ $deps = low ]]; then
|
|
echo "$COMPONENTS" | parallel --gnu -j10% "tfold {} 'cd {} && $COMPOSER_UP --prefer-lowest --prefer-stable && $PHPUNIT_X'"
|
|
elif [[ $PHP = hhvm* ]]; then
|
|
$PHPUNIT --exclude-group no-hhvm,benchmark,intl-data
|
|
else
|
|
echo "$COMPONENTS" | parallel --gnu "tfold {} $PHPUNIT_X {}"
|
|
tfold tty-group $PHPUNIT --group tty
|
|
if [[ $PHP = ${MIN_PHP%.*} ]]; then
|
|
echo -e "1\\n0" | xargs -I{} bash -c "tfold src/Symfony/Component/Process.sigchild{} SYMFONY_DEPRECATIONS_HELPER=weak ENHANCE_SIGCHLD={} php-$MIN_PHP/sapi/cli/php .phpunit/phpunit-4.8/phpunit --colors=always src/Symfony/Component/Process/"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
script:
|
|
- (run_tests)
|