docker
make build
make run56
make run71
{ | |
"name": "redis/segfault", | |
"require": { | |
"ext-redis": "3.1.4" | |
}, | |
"require-dev": { | |
"phpunit/phpunit": "~5.0" | |
} | |
} |
FROM php:5.6-cli | |
RUN apt-get update && \ | |
apt-get install -y libzip-dev git git-core | |
COPY composer.json /var/www/project/ | |
COPY php.ini /usr/local/etc/php/php.ini | |
RUN cd /var/www/project/ && \ | |
pecl install redis && \ | |
pecl install zip && \ | |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ | |
php composer-setup.php --install-dir=/var/www/project/ && \ | |
php -r "unlink('composer-setup.php');" && \ | |
php ./composer.phar install | |
COPY Foo.php /var/www/project/ | |
COPY FooTest.php /var/www/project/ |
FROM php:7.1-cli | |
RUN apt-get update && \ | |
apt-get install -y libzip-dev git git-core | |
COPY composer.json /var/www/project/ | |
COPY php.ini /usr/local/etc/php/php.ini | |
RUN cd /var/www/project/ && \ | |
pecl install redis && \ | |
pecl install zip && \ | |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ | |
php composer-setup.php --install-dir=/var/www/project/ && \ | |
php -r "unlink('composer-setup.php');" && \ | |
php ./composer.phar install | |
COPY Foo.php /var/www/project/ | |
COPY FooTest.php /var/www/project/ |
<?php | |
class Foo { | |
private $redis; | |
public function __construct($redis) { | |
$this->redis = $redis; | |
} | |
public function bar() { | |
return $this->redis->incr(); | |
} | |
} |
<?php | |
namespace MyFoo; | |
include "Foo.php"; | |
class BrowserControllerTest extends \PHPUnit_Framework_TestCase | |
{ | |
/** | |
* @group API | |
* @group TRAVIS-PROXY | |
*/ | |
public function testFoo() | |
{ | |
$redis = $this->getMockBuilder(\Redis::class) | |
->disableOriginalConstructor() | |
->setMethods(['incr', 'expire', 'getLastError']) | |
->getMock(); | |
$redis | |
->method('incr') | |
->willReturn(10); | |
$redis | |
->method('expire') | |
->willReturn(true); | |
$redis | |
->method('getLastError') | |
->willReturn(null); | |
$f = new \Foo($redis); | |
$bar = $f->bar(); | |
$this->assertEquals(10, $bar); | |
} | |
} |
build: | |
docker build . -f Dockerfile56 -t test-redis-56 | |
docker build . -f Dockerfile71 -t test-redis-71 | |
run56: | |
docker run -it test-redis-56 /var/www/project/vendor/bin/phpunit /var/www/project/FooTest.php | |
run71: | |
docker run -it test-redis-71 /var/www/project/vendor/bin/phpunit /var/www/project/FooTest.php |
extension=redis.so | |
extension=zip.so |