diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..4cd7f93 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,64 @@ +name: PHPUnit + +on: [push, pull_request] + +env: + SWOOLE_VERSION: '4.7.0' + SWOW_VERSION: 'develop' + +jobs: + ci: + name: Test PHP ${{ matrix.php-version }} on ${{ matrix.engine }} + runs-on: "${{ matrix.os }}" + strategy: + matrix: + os: [ubuntu-latest] + php-version: ['7.3', '7.4', '8.0'] + engine: ['none', 'swoole', 'swow'] + max-parallel: 5 + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + tools: phpize + ini-values: opcache.enable_cli=1 + coverage: none + - name: Setup Swoole + if: ${{ matrix.engine == 'swoole' }} + run: | + sudo apt-get install libcurl4-openssl-dev + wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz + mkdir -p swoole + tar -xf swoole.tar.gz -C swoole --strip-components=1 + rm swoole.tar.gz + cd swoole + phpize + ./configure --enable-openssl --enable-http2 --enable-swoole-curl --enable-swoole-json + make -j$(nproc) + sudo make install + sudo sh -c "echo extension=swoole > /etc/php/${{ matrix.php-version }}/cli/conf.d/swoole.ini" + php --ri swoole + - name: Setup Swow + if: ${{ matrix.engine == 'swow' }} + run: | + wget https://github.com/swow/swow/archive/"${SWOW_VERSION}".tar.gz -O swow.tar.gz + mkdir -p swow + tar -xf swow.tar.gz -C swow --strip-components=1 + rm swow.tar.gz + cd swow/ext || exit + + phpize + ./configure --enable-debug + make -j "$(nproc)" + sudo make install + sudo sh -c "echo extension=swow > /etc/php/${{ matrix.php-version }}/cli/conf.d/swow.ini" + php --ri swow + - name: Setup Packages + run: composer update -o --no-scripts + - name: Run Test Cases + run: | + composer analyse + composer test diff --git a/.travis/swoole.install.sh b/.travis/swoole.install.sh index 0067690..bdf3cd2 100644 --- a/.travis/swoole.install.sh +++ b/.travis/swoole.install.sh @@ -1,10 +1,15 @@ #!/usr/bin/env bash -wget https://github.com/swoole/swoole-src/archive/v"${SW_VERSION}".tar.gz -O swoole.tar.gz +sudo apt-get update +sudo apt-get install libcurl4-openssl-dev +wget https://github.com/swoole/swoole-src/archive/${SW_VERSION}.tar.gz -O swoole.tar.gz mkdir -p swoole tar -xf swoole.tar.gz -C swoole --strip-components=1 rm swoole.tar.gz -cd swoole || exit +cd swoole phpize -./configure --enable-openssl --enable-mysqlnd --enable-http2 -make -j "$(nproc)" -make install +./configure --enable-openssl --enable-http2 --enable-swoole-curl --enable-swoole-json +make -j$(nproc) +sudo make install +sudo sh -c "echo extension=swoole > /etc/php/${PHP_VERSION}/cli/conf.d/swoole.ini" +sudo sh -c "echo swoole.use_shortname='Off' >> /etc/php/${PHP_VERSION}/cli/conf.d/swoole.ini" +php --ri swoole diff --git a/composer.json b/composer.json index 852ed61..e19b108 100644 --- a/composer.json +++ b/composer.json @@ -30,14 +30,13 @@ }, "require": { "php": ">=7.3", - "ext-swoole": ">=4.5", - "hyperf/config": "~2.2.0", - "hyperf/di": "~2.2.0", - "hyperf/framework": "~2.2.0" + "hyperf/config": "^2.1", + "hyperf/di": "^2.1", + "hyperf/framework": "^2.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.0", - "hyperf/testing": "~2.2.0", + "hyperf/testing": "^2.1", "phpstan/phpstan": "^0.12", "swoole/ide-helper": "dev-master" }, @@ -45,7 +44,7 @@ "sort-packages": true }, "scripts": { - "test": "co-phpunit --prepend tests/bootstrap.php -c phpunit.xml --colors=always", + "test": "phpunit --prepend tests/bootstrap.php -c phpunit.xml --colors=always", "analyse": "phpstan analyse --memory-limit 1024M -l 0 ./src", "cs-fix": "php-cs-fixer fix $1" },