@@ -45,17 +45,19 @@ services:
45
45
before_install :
46
46
- |
47
47
# General configuration
48
+ set -e
48
49
stty cols 120
49
50
mkdir /tmp/slapd
50
51
slapd -f src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf -h ldap://localhost:3389 &
51
- PHP=$TRAVIS_PHP_VERSION
52
52
[ -d ~/.composer ] || mkdir ~/.composer
53
53
cp .composer/* ~/.composer/
54
54
export PHPUNIT=$(readlink -f ./phpunit)
55
55
export PHPUNIT_X="$PHPUNIT --exclude-group tty,benchmark,intl-data"
56
56
export COMPOSER_UP='composer update --no-progress --no-suggest --ansi'
57
+ export COMPONENTS=$(find src/Symfony -mindepth 2 -type f -name phpunit.xml.dist -printf '%h\n')
58
+ find ~/.phpenv -name xdebug.ini -delete
57
59
58
- nanoseconds() {
60
+ nanoseconds () {
59
61
local cmd="date"
60
62
local format="+%s%N"
61
63
local os=$(uname)
@@ -70,7 +72,7 @@ before_install:
70
72
71
73
# tfold is a helper to create folded reports
72
74
tfold () {
73
- local title=$1
75
+ local title="🐘 $PHP $1"
74
76
local fold=$(echo $title | sed -r 's/[^-_A-Za-z0-9]+/./g')
75
77
shift
76
78
local id=$(printf %08x $(( RANDOM * RANDOM )))
@@ -90,17 +92,6 @@ before_install:
90
92
}
91
93
export -f tfold
92
94
93
- # php.ini configuration
94
- INI=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
95
- phpenv config-rm xdebug.ini || echo "xdebug not available"
96
- echo date.timezone = Europe/Paris >> $INI
97
- echo memory_limit = -1 >> $INI
98
- echo session.gc_probability = 0 >> $INI
99
- echo opcache.enable_cli = 1 >> $INI
100
- echo apc.enable_cli = 1 >> $INI
101
- echo extension = redis.so >> $INI
102
- echo extension = memcached.so >> $INI
103
-
104
95
# tpecl is a helper to compile and cache php extensions
105
96
tpecl () {
106
97
local ext_name=$1
@@ -112,31 +103,42 @@ before_install:
112
103
if [[ -e $ext_cache/$ext_so ]]; then
113
104
echo extension = $ext_cache/$ext_so >> $INI
114
105
else
106
+ rm ~/.pearrc /tmp/pear 2>/dev/null || true
115
107
mkdir -p $ext_cache
116
108
echo yes | pecl install -f $ext_name &&
117
109
cp $ext_dir/$ext_so $ext_cache
118
110
fi
119
111
}
120
112
export -f tpecl
121
113
122
- # Matrix lines for intermediate PHP versions are skipped for pull requests
123
- if [[ ! $deps && ! $PHP = $MIN_PHP && $TRAVIS_PULL_REQUEST != false ]]; then
124
- deps=skip
125
- skip=1
126
- else
127
- COMPONENTS=$(find src/Symfony -mindepth 2 -type f -name phpunit.xml.dist -printf '%h\n')
128
- fi
129
-
130
114
- |
131
115
# Install sigchild-enabled PHP to test the Process component on the lowest PHP matrix line
132
- if [[ ! $deps && $PHP = $MIN_PHP && ! -d php-$MIN_PHP/sapi ]]; then
116
+ if [[ ! $deps && $TRAVIS_PHP_VERSION = $MIN_PHP && ! -d php-$MIN_PHP/sapi ]]; then
133
117
wget http://php.net/get/php-$MIN_PHP.tar.bz2/from/this/mirror -O - | tar -xj &&
134
118
(cd php-$MIN_PHP && ./configure --enable-sigchild --enable-pcntl && make -j2)
135
119
fi
136
120
121
+ - |
122
+ # php.ini configuration
123
+ for PHP in $TRAVIS_PHP_VERSION $php_extra; do
124
+ phpenv global $PHP 2>/dev/null || (cd / && wget https://s3.amazonaws.com/travis-php-archives/binaries/ubuntu/14.04/x86_64/php-$PHP.tar.bz2 -O - | tar -xj)
125
+ INI=~/.phpenv/versions/$PHP/etc/conf.d/travis.ini
126
+ echo date.timezone = Europe/Paris >> $INI
127
+ echo memory_limit = -1 >> $INI
128
+ echo session.gc_probability = 0 >> $INI
129
+ echo opcache.enable_cli = 1 >> $INI
130
+ echo apc.enable_cli = 1 >> $INI
131
+ echo extension = redis.so >> $INI
132
+ echo extension = memcached.so >> $INI
133
+ done
134
+
137
135
- |
138
136
# Install extra PHP extensions
139
- if [[ ! $skip ]]; then
137
+ for PHP in $TRAVIS_PHP_VERSION $php_extra; do
138
+ export PHP=$PHP
139
+ phpenv global $PHP
140
+ INI=~/.phpenv/versions/$PHP/etc/conf.d/travis.ini
141
+
140
142
# Install librabbitmq
141
143
wget http://ftp.debian.org/debian/pool/main/libr/librabbitmq/librabbitmq-dev_0.5.2-2_amd64.deb
142
144
wget http://ftp.debian.org/debian/pool/main/libr/librabbitmq/librabbitmq1_0.5.2-2_amd64.deb
@@ -152,7 +154,7 @@ before_install:
152
154
tfold ext.mongodb tpecl mongodb-1.5.0 mongodb.so $INI
153
155
tfold ext.amqp tpecl amqp-1.9.3 amqp.so $INI
154
156
tfold ext.igbinary tpecl igbinary-2.0.6 igbinary.so $INI
155
- fi
157
+ done
156
158
157
159
- |
158
160
# Load fixtures
@@ -166,7 +168,7 @@ install:
166
168
# Create local composer packages for each patched components and reference them in composer.json files when cross-testing components
167
169
if [[ ! $deps ]]; then
168
170
php .github/build-packages.php HEAD^ src/Symfony/Bridge/PhpUnit
169
- elif [[ ! $skip ]]; then
171
+ else
170
172
export SYMFONY_DEPRECATIONS_HELPER=weak &&
171
173
cp composer.json composer.json.orig &&
172
174
echo -e '{\n"require":{'"$(grep phpunit-bridge composer.json)"'"php":"*"},"minimum-stability":"dev"}' > composer.json &&
@@ -182,7 +184,7 @@ install:
182
184
git fetch origin $SYMFONY_VERSION &&
183
185
git checkout -m FETCH_HEAD &&
184
186
COMPONENTS=$(find src/Symfony -mindepth 2 -type f -name phpunit.xml.dist -printf '%h\n')
185
- elif [[ ! $skip ]]; then
187
+ else
186
188
SYMFONY_VERSION=$(cat composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9.]*')
187
189
fi
188
190
@@ -191,33 +193,34 @@ install:
191
193
[[ $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
192
194
193
195
export COMPOSER_ROOT_VERSION=$SYMFONY_VERSION.x-dev
194
- if [[ ! $skip && $deps ]]; then mv composer.json.phpunit composer.json; fi
195
-
196
- if [[ ! $skip ]]; then
197
- ([[ $deps ]] && cd src/Symfony/Component/HttpFoundation; composer require --dev --no-update mongodb/mongodb)
198
- fi
196
+ if [[ $deps ]]; then mv composer.json.phpunit composer.json; fi
199
197
200
- - if [[ ! $skip ]]; then $COMPOSER_UP; fi
201
- - if [[ ! $skip ]]; then ./phpunit install; fi
202
198
- php -i
203
199
204
200
- |
205
201
run_tests () {
206
202
set -e
207
- if [[ $skip ]]; then
203
+ export PHP=$1
204
+ if [[ $PHP != $TRAVIS_PHP_VERSION && $TRAVIS_PULL_REQUEST != false ]]; then
208
205
echo -e "\\n\\e[1;34mIntermediate PHP version $PHP is skipped for pull requests.\\e[0m"
209
- elif [[ $deps = high ]]; then
206
+ break
207
+ fi
208
+ phpenv global $PHP
209
+ tfold 'composer update' $COMPOSER_UP
210
+ tfold 'phpunit install' ./phpunit install
211
+ ([[ $deps ]] && cd src/Symfony/Component/HttpFoundation; composer require --dev --no-update mongodb/mongodb)
212
+ if [[ $deps = high ]]; then
210
213
echo "$COMPONENTS" | parallel --gnu -j10% "tfold {} 'cd {} && $COMPOSER_UP && $PHPUNIT_X$LEGACY'"
211
214
elif [[ $deps = low ]]; then
212
215
echo "$COMPONENTS" | parallel --gnu -j10% "tfold {} 'cd {} && $COMPOSER_UP --prefer-lowest --prefer-stable && $PHPUNIT_X'"
213
216
else
214
217
echo "$COMPONENTS" | parallel --gnu "tfold {} $PHPUNIT_X {}"
215
- tfold tty-group $PHPUNIT --group tty
218
+ tfold src/Symfony/Component/Console. tty $PHPUNIT src/Symfony/Component/Console --group tty
216
219
if [[ $PHP = $MIN_PHP ]]; then
217
220
tfold src/Symfony/Component/Process.sigchild SYMFONY_DEPRECATIONS_HELPER=weak php-$MIN_PHP/sapi/cli/php ./phpunit --colors=always src/Symfony/Component/Process/
218
221
fi
219
222
fi
220
223
}
221
224
222
225
script :
223
- - (run_tests)
226
+ - for PHP in $TRAVIS_PHP_VERSION $php_extra; do (run_tests $PHP); done
0 commit comments