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