Skip to content

Commit

Permalink
Merge pull request #470 from s1lver/tests_for_php80
Browse files Browse the repository at this point in the history
Adding the ability to run tests on PHP 8.0
  • Loading branch information
bizley authored Sep 30, 2023
2 parents abd6879 + 6961dc0 commit 9efa4b6
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 147 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ jobs:
strategy:
fail-fast: false
matrix:
php: [ 56, 70, 71, 72, 73, 74 ]
php: [ '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0' ]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: PHP Unit tests for PHP ${{ matrix.php }}
run: make test${{ matrix.php }}
run: make test v=${{ matrix.php }}
72 changes: 18 additions & 54 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,62 +1,26 @@
build:
help: ## Display help information
@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//'

build: ## Build an image from a docker-compose file. Params: {{ v=5.6 }}. Default latest PHP 5.6
@cp -n .env.example .env
docker-compose pull
docker-compose build --pull
PHP_VERSION=$(filter-out $@,$(v)) docker-compose up -d --build

test: test74 test73 test72 test71 test70 test56
test74:
docker-compose build --pull php74
docker-compose run php74 vendor/bin/phpunit --colors=always -v --debug
docker-compose down
test73:
docker-compose build --pull php73
docker-compose run php73 vendor/bin/phpunit --colors=always -v --debug
docker-compose down
test72:
make clean
docker-compose build --no-cache --pull php72
docker-compose run php72 vendor/bin/phpunit --colors=always -v --debug
docker-compose down
test71:
docker-compose build --pull php71
docker-compose run php71 vendor/bin/phpunit --colors=always -v --debug
docker-compose down
test70:
make clean
docker-compose build --pull php70
docker-compose run php70 vendor/bin/phpunit --colors=always -v --debug
docker-compose down
test56:
docker-compose build --pull php56
docker-compose run php56 vendor/bin/phpunit --colors=always -v --debug
docker-compose down
test: ## Run tests. Params: {{ v=5.6 }}. Default latest PHP 5.6
PHP_VERSION=$(filter-out $@,$(v)) docker-compose build --pull yii2-queue-php
PHP_VERSION=$(filter-out $@,$(v)) docker-compose run yii2-queue-php vendor/bin/phpunit --colors=always -v --debug
make down

benchmark: benchmark74 benchmark73 benchmark72 benchmark71 benchmark70 benchmark56
benchmark74:
docker-compose build --pull php74
docker-compose run php74 tests/yii benchmark/waiting
docker-compose down
benchmark73:
docker-compose build --pull php73
docker-compose run php73 tests/yii benchmark/waiting
docker-compose down
benchmark72:
docker-compose build --pull php72
docker-compose run php72 tests/yii benchmark/waiting
docker-compose down
benchmark71:
docker-compose build --pull php71
docker-compose run php71 tests/yii benchmark/waiting
docker-compose down
benchmark70:
docker-compose build --pull php70
docker-compose run php70 tests/yii benchmark/waiting
docker-compose down
benchmark56:
docker-compose build --pull php56
docker-compose run php56 tests/yii benchmark/waiting
down: ## Stop and remove containers, networks
docker-compose down

benchmark: ## Run benchmark. Params: {{ v=5.6 }}. Default latest PHP 5.6
PHP_VERSION=$(filter-out $@,$(v)) docker-compose build --pull yii2-queue-php
PHP_VERSION=$(filter-out $@,$(v)) docker-compose run yii2-queue-php tests/yii benchmark/waiting
make down

sh: ## Enter the container with the application
docker exec -it yii2-queue-php bash

check-cs:
docker-compose build php72
docker-compose run php72 php-cs-fixer fix --diff --dry-run
Expand Down
40 changes: 26 additions & 14 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,17 @@
"symfony/process": "^3.3||^4.0||^5.0||^6.0"
},
"require-dev": {
"yiisoft/yii2-redis": "*",
"php-amqplib/php-amqplib": "*",
"enqueue/amqp-lib": "^0.8||^0.9.10",
"pda/pheanstalk": "v3.*",
"yiisoft/yii2-redis": "~2.0.0",
"php-amqplib/php-amqplib": "^2.8.0||^3.0.0",
"enqueue/amqp-lib": "^0.8||^0.9.10||^0.10.0",
"pda/pheanstalk": "~3.2.1",
"opis/closure": "*",
"yiisoft/yii2-debug": "*",
"yiisoft/yii2-gii": "*",
"phpunit/phpunit": "~4.4",
"yiisoft/yii2-debug": "~2.1.0",
"yiisoft/yii2-gii": "~2.2.0",
"phpunit/phpunit": "4.8.34",
"aws/aws-sdk-php": ">=2.4",
"enqueue/stomp": "^0.8.39"
"enqueue/stomp": "^0.8.39||^0.10.0",
"cweagans/composer-patches": "^1.7"
},
"suggest": {
"ext-pcntl": "Need for process signals.",
Expand Down Expand Up @@ -62,20 +63,31 @@
"tests\\": "tests"
}
},
"config": {
"allow-plugins": {
"yiisoft/yii2-composer": true,
"cweagans/composer-patches": true
}
},
"extra": {
"branch-alias": {
"dev-master": "2.x-dev"
},
"composer-exit-on-patch-failure": true,
"patches": {
"phpunit/phpunit-mock-objects": {
"Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch"
},
"phpunit/phpunit": {
"Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch",
"Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch"
}
}
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
],
"config": {
"allow-plugins": {
"yiisoft/yii2-composer": true
}
}
]
}
2 changes: 1 addition & 1 deletion src/drivers/amqp_interop/Queue.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class Queue extends CliQueue
const ENQUEUE_AMQP_BUNNY = 'enqueue/amqp-bunny';

/**
* The connection to the borker could be configured as an array of options
* The connection to the broker could be configured as an array of options
* or as a DSN string like amqp:, amqps:, amqps://user:pass@localhost:1000/vhost.
*
* @var string
Expand Down
4 changes: 1 addition & 3 deletions tests/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@

namespace tests;

use PHPUnit\Framework\TestCase as BaseTestCase;

/**
* Base Test Case.
*
* @author Roman Zhuravlev <[email protected]>
*/
abstract class TestCase extends BaseTestCase
abstract class TestCase extends \PHPUnit_Framework_TestCase
{
}
77 changes: 11 additions & 66 deletions tests/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
version: "3.5"
services:

# https://docs.docker.com/samples/library/php/
php73:
# https://hub.docker.com/_/php/
yii2-queue-php:
container_name: yii2-queue-php
build:
context: ..
dockerfile: tests/docker/php/7.3/Dockerfile
dockerfile: tests/docker/php/${PHP_VERSION:-5.6}/Dockerfile
volumes:
- ./runtime/.composer73:/root/.composer
- ./runtime/.composer:/root/.composer
- ..:/code
dns: &php_dns
dns:
- 8.8.8.8
- 4.4.4.4
environment: &php_environment
environment:
MYSQL_HOST: mysql
MYSQL_USER: yii2_queue_test
MYSQL_PASSWORD: yii2_queue_test
Expand All @@ -38,7 +39,7 @@ services:
AWS_SQS_FIFO_ENABLED: ${AWS_SQS_FIFO_ENABLED}
AWS_SQS_FIFO_URL: ${AWS_SQS_FIFO_URL}
AWS_SQS_FIFO_MESSAGE_GROUP_ID: ${AWS_SQS_FIFO_MESSAGE_GROUP_ID}
depends_on: &php_depends_on
depends_on:
- mysql
- postgres
- redis
Expand All @@ -48,64 +49,8 @@ services:
- activemq
networks:
net: {}
php72:
build:
context: ..
dockerfile: tests/docker/php/7.2/Dockerfile
volumes:
- ./runtime/.composer72:/root/.composer
dns: *php_dns
environment: *php_environment
depends_on: *php_depends_on
networks:
net: {}
php71:
build:
context: ..
dockerfile: tests/docker/php/7.1/Dockerfile
volumes:
- ./runtime/.composer71:/root/.composer
dns: *php_dns
environment: *php_environment
depends_on: *php_depends_on
networks:
net: {}
php70:
build:
context: ..
dockerfile: tests/docker/php/7.0/Dockerfile
volumes:
- ./runtime/.composer70:/root/.composer
dns: *php_dns
environment: *php_environment
depends_on: *php_depends_on
networks:
net: {}
php56:
build:
context: ..
dockerfile: tests/docker/php/5.6/Dockerfile
volumes:
- ./runtime/.composer56:/root/.composer
- ..:/code
dns: *php_dns
environment: *php_environment
depends_on: *php_depends_on
networks:
net: {}
php74:
build:
context: ..
dockerfile: tests/docker/php/7.4/Dockerfile
volumes:
- ./runtime/.composer74:/root/.composer
dns: *php_dns
environment: *php_environment
depends_on: *php_depends_on
networks:
net: { }

# https://docs.docker.com/samples/library/mysql/
# https://hub.docker.com/_/mysql/
mysql:
image: mysql:5.7
ports:
Expand All @@ -118,7 +63,7 @@ services:
networks:
net: {}

# https://docs.docker.com/samples/library/postgres/
# https://hub.docker.com/_/postgres/
postgres:
image: postgres:10.4
ports:
Expand All @@ -130,7 +75,7 @@ services:
networks:
net: {}

# https://docs.docker.com/samples/library/redis/
# https://hub.docker.com/_/redis/
redis:
image: redis:4.0
ports:
Expand Down
2 changes: 1 addition & 1 deletion tests/docker/php/7.0/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ RUN apt update -qq \
RUN apt-get update \
&& apt-get install -y unzip curl zlib1g-dev libicu-dev libpq-dev libgearman-dev

RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql
RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql

RUN pecl install igbinary \
&& docker-php-ext-enable igbinary
Expand Down
2 changes: 1 addition & 1 deletion tests/docker/php/7.1/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM php:7.1-cli
RUN apt-get update \
&& apt-get install -y unzip curl zlib1g-dev libicu-dev libpq-dev libgearman-dev

RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql
RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql

RUN pecl install igbinary \
&& docker-php-ext-enable igbinary
Expand Down
4 changes: 2 additions & 2 deletions tests/docker/php/7.2/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM php:7.2-cli

RUN apt-get update \
&& apt-get install -y unzip bzip2 libbz2-dev curl zlib1g-dev libicu-dev libpq-dev libgearman-dev
&& apt-get install -y unzip libbz2-dev curl zlib1g-dev libicu-dev libpq-dev libgearman-dev

RUN docker-php-ext-install bz2 zip intl pcntl bcmath pdo_mysql pdo_pgsql
RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql

RUN pecl install igbinary \
&& docker-php-ext-enable igbinary
Expand Down
2 changes: 1 addition & 1 deletion tests/docker/php/7.3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM php:7.3-cli
RUN apt-get update \
&& apt-get install -y unzip curl zlib1g-dev libzip-dev libicu-dev libpq-dev libgearman-dev

RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql
RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql

RUN pecl install igbinary \
&& docker-php-ext-enable igbinary
Expand Down
2 changes: 1 addition & 1 deletion tests/docker/php/7.4/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM php:7.4-cli
RUN apt-get update \
&& apt-get install -y unzip curl zlib1g-dev libzip-dev libicu-dev libpq-dev libgearman-dev

RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql
RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql

RUN pecl install igbinary gearman \
&& docker-php-ext-enable igbinary gearman
Expand Down
17 changes: 17 additions & 0 deletions tests/docker/php/8.0/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM --platform=linux/amd64 php:8.0.28-cli

RUN apt-get update \
&& apt-get install -y unzip curl zlib1g-dev libzip-dev libicu-dev libpq-dev libgearman-dev

RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql sockets
RUN pecl install igbinary gearman
RUN docker-php-ext-enable igbinary gearman

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
COPY --from=cytopia/php-cs-fixer:latest /usr/bin/php-cs-fixer /usr/local/bin/php-cs-fixer

COPY . /code
WORKDIR /code

ENTRYPOINT ["tests/docker/php/entrypoint.sh"]
CMD ["sleep", "infinity"]
5 changes: 4 additions & 1 deletion tests/drivers/CliTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ protected function runProcess($cmd)
$process->mustRun();

$error = $process->getErrorOutput();
$this->assertEmpty($error, "Can not execute '$cmd' command:\n$error");
$this->assertEmpty(
$error,
"Can not execute " . implode($cmd) . " command:\n$error"
);
}

/**
Expand Down

0 comments on commit 9efa4b6

Please sign in to comment.