cd94ef22bf
* 4.0: Bump ext-mongodb to 1.5 on Travis Redesign the Debug error page in prod [DI] fix dumping deprecated service in yaml bumped Symfony version to 4.0.13 updated VERSION for 4.0.12 updated CHANGELOG for 4.0.12 bumped Symfony version to 3.4.13 updated VERSION for 3.4.12 updated CHANGELOG for 3.4.12 bumped Symfony version to 2.8.43 updated VERSION for 2.8.42 update CONTRIBUTORS for 2.8.42 updated CHANGELOG for 2.8.42
223 lines
8.1 KiB
YAML
223 lines
8.1 KiB
YAML
language: php
|
|
|
|
dist: trusty
|
|
sudo: false
|
|
|
|
git:
|
|
depth: 1
|
|
|
|
addons:
|
|
apt_packages:
|
|
- parallel
|
|
- language-pack-fr-base
|
|
- ldap-utils
|
|
- slapd
|
|
- librabbitmq-dev
|
|
|
|
env:
|
|
global:
|
|
- MIN_PHP=7.1.3
|
|
- SYMFONY_PROCESS_PHP_TEST_BINARY=~/.phpenv/shims/php
|
|
- MESSENGER_AMQP_DSN=amqp://localhost/%2f/messages
|
|
|
|
matrix:
|
|
include:
|
|
- php: 7.1.3
|
|
- php: 7.1
|
|
env: deps=high
|
|
- php: 7.2
|
|
env: deps=low
|
|
|
|
fast_finish: true
|
|
|
|
cache:
|
|
directories:
|
|
- .phpunit
|
|
- php-$MIN_PHP
|
|
- ~/php-ext
|
|
|
|
services:
|
|
- memcached
|
|
- mongodb
|
|
- redis-server
|
|
- rabbitmq
|
|
|
|
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
|
|
INI=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
|
|
phpenv config-rm xdebug.ini || echo "xdebug not available"
|
|
echo date.timezone = Europe/Paris >> $INI
|
|
echo memory_limit = -1 >> $INI
|
|
echo session.gc_probability = 0 >> $INI
|
|
echo opcache.enable_cli = 1 >> $INI
|
|
echo apc.enable_cli = 1 >> $INI
|
|
echo extension = redis.so >> $INI
|
|
echo extension = memcached.so >> $INI
|
|
|
|
# tpecl is a helper to compile and cache php extensions
|
|
tpecl () {
|
|
local ext_name=$1
|
|
local ext_so=$2
|
|
local INI=$3
|
|
local ext_dir=$(php -r "echo ini_get('extension_dir');")
|
|
local ext_cache=~/php-ext/$(basename $ext_dir)/$ext_name
|
|
|
|
if [[ -e $ext_cache/$ext_so ]]; then
|
|
echo extension = $ext_cache/$ext_so >> $INI
|
|
else
|
|
mkdir -p $ext_cache
|
|
echo yes | pecl install -f $ext_name &&
|
|
cp $ext_dir/$ext_so $ext_cache
|
|
fi
|
|
}
|
|
export -f tpecl
|
|
|
|
# Matrix lines for intermediate PHP versions are skipped for pull requests
|
|
if [[ ! $deps && ! $PHP = $MIN_PHP && $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://php.net/get/php-$MIN_PHP.tar.bz2/from/this/mirror -O - | tar -xj &&
|
|
(cd php-$MIN_PHP && ./configure --enable-sigchild --enable-pcntl && make -j2)
|
|
fi
|
|
|
|
- |
|
|
# Install extra PHP extensions
|
|
if [[ ! $skip ]]; then
|
|
# Install librabbitmq
|
|
wget http://ftp.debian.org/debian/pool/main/libr/librabbitmq/librabbitmq-dev_0.5.2-2_amd64.deb
|
|
wget http://ftp.debian.org/debian/pool/main/libr/librabbitmq/librabbitmq1_0.5.2-2_amd64.deb
|
|
sudo dpkg -i librabbitmq1_0.5.2-2_amd64.deb librabbitmq-dev_0.5.2-2_amd64.deb
|
|
|
|
# install libsodium
|
|
sudo add-apt-repository ppa:ondrej/php -y
|
|
sudo apt-get update -q
|
|
sudo apt-get install libsodium-dev -y
|
|
|
|
tfold ext.apcu tpecl apcu-5.1.6 apcu.so $INI
|
|
tfold ext.libsodium tpecl libsodium sodium.so $INI
|
|
tfold ext.mongodb tpecl mongodb-1.5.0 mongodb.so $INI
|
|
tfold ext.amqp tpecl amqp-1.9.3 amqp.so $INI
|
|
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 ]]; 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
|
|
- php -i
|
|
|
|
- |
|
|
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'"
|
|
else
|
|
echo "$COMPONENTS" | parallel --gnu "tfold {} $PHPUNIT_X {}"
|
|
tfold tty-group $PHPUNIT --group tty
|
|
if [[ $PHP = $MIN_PHP ]]; then
|
|
tfold src/Symfony/Component/Process.sigchild SYMFONY_DEPRECATIONS_HELPER=weak php-$MIN_PHP/sapi/cli/php ./phpunit --colors=always src/Symfony/Component/Process/
|
|
fi
|
|
fi
|
|
}
|
|
|
|
script:
|
|
- (run_tests)
|