From 1054cf670219e181075b62a70e7270026a4d566b Mon Sep 17 00:00:00 2001 From: Simon Frings Date: Tue, 30 Mar 2021 11:43:49 +0200 Subject: [PATCH 1/3] Use GitHub actions for continuous integration (CI) Bye bye Travis CI, you've served us well --- .gitattributes | 2 +- .github/workflows/ci.yml | 46 ++++++++++++++++++++++++++++++++++++++++ .gitignore | 2 +- .travis.yml | 27 ----------------------- README.md | 4 +++- 5 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.gitattributes b/.gitattributes index eccc763..da20d18 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ /.gitattributes export-ignore +/.github/workflows/ export-ignore /.gitignore export-ignore -/.travis.yml export-ignore /examples/ export-ignore /phpunit.xml.dist export-ignore /phpunit.xml.legacy export-ignore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fa22f84 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,46 @@ +name: CI + +on: + push: + pull_request: + +jobs: + PHPUnit: + name: PHPUnit (PHP ${{ matrix.php }}) + runs-on: ubuntu-20.04 + strategy: + matrix: + php: + - 7.4 + - 7.3 + - 7.2 + - 7.1 + - 7.0 + - 5.6 + - 5.5 + - 5.4 + - 5.3 + steps: + - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + coverage: xdebug + - run: composer install + - run: vendor/bin/phpunit --coverage-text + if: ${{ matrix.php >= 7.3 }} + - run: vendor/bin/phpunit --coverage-text -c phpunit.xml.legacy + if: ${{ matrix.php < 7.3 }} + + PHPUnit-hhvm: + name: PHPUnit (HHVM) + runs-on: ubuntu-18.04 + continue-on-error: true + steps: + - uses: actions/checkout@v2 + - uses: azjezz/setup-hhvm@v1 + with: + version: lts-3.30 + - run: hhvm $(which composer) require phpunit/phpunit:^5 --dev --no-interaction + - run: hhvm $(which composer) install + - run: hhvm vendor/bin/phpunit diff --git a/.gitignore b/.gitignore index de4a392..4fbb073 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -/vendor +/vendor/ /composer.lock diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5623330..0000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -language: php - -# lock distro so new future defaults will not break the build -dist: trusty - -jobs: - include: - - php: 5.3 - dist: precise - - php: 5.4 - - php: 5.5 - - php: 5.6 - - php: 7.0 - - php: 7.1 - - php: 7.2 - - php: 7.3 - - php: 7.4 - - php: hhvm-3.18 - allow_failures: - - php: hhvm-3.18 - -install: - - composer install - -script: - - if [[ "$TRAVIS_PHP_VERSION" > "7.2" ]]; then vendor/bin/phpunit --coverage-text; fi - - if [[ "$TRAVIS_PHP_VERSION" < "7.3" ]]; then vendor/bin/phpunit --coverage-text -c phpunit.xml.legacy; fi diff --git a/README.md b/README.md index 40f811c..72748a1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# clue/reactphp-socks [![Build Status](https://travis-ci.org/clue/reactphp-socks.svg?branch=master)](https://travis-ci.org/clue/reactphp-socks) +# clue/reactphp-socks + +[![CI status](https://github.com/clue/reactphp-socks/workflows/CI/badge.svg)](https://github.com/clue/reactphp-socks/actions) Async SOCKS proxy connector client and server implementation, tunnel any TCP/IP-based protocol through a SOCKS5 or SOCKS4(a) proxy server, built on top of From d7ee56f9b1c71714ca1e1694f374b9f63f11cb23 Mon Sep 17 00:00:00 2001 From: Simon Frings Date: Tue, 30 Mar 2021 11:49:47 +0200 Subject: [PATCH 2/3] Set Xdebug's stack limit to 256 for legacy PHP --- tests/FunctionalTest.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/FunctionalTest.php b/tests/FunctionalTest.php index 20c904e..9c38b38 100644 --- a/tests/FunctionalTest.php +++ b/tests/FunctionalTest.php @@ -44,6 +44,9 @@ public function setUpClientServer() /** @group internet */ public function testConnection() { + // max_nesting_level was set to 100 for PHP Versions < 5.4 which resulted in failing test for legacy PHP + ini_set('xdebug.max_nesting_level', 256); + $this->assertResolveStream($this->client->connect('www.google.com:80')); } @@ -92,8 +95,8 @@ public function testConnectionSocks5() /** @group internet */ public function testConnectionSocksOverTls() { - if (!function_exists('stream_socket_enable_crypto')) { - $this->markTestSkipped('Required function does not exist in your environment (HHVM?)'); + if (defined('HHVM_VERSION')) { + $this->markTestSkipped('Not supported on HHVM'); } $socket = new \React\Socket\Server('tls://127.0.0.1:0', $this->loop, array('tls' => array( @@ -117,8 +120,8 @@ public function testConnectionSocksOverTls() */ public function testConnectionSocksOverTlsUsesPeerNameFromSocksUri() { - if (!function_exists('stream_socket_enable_crypto')) { - $this->markTestSkipped('Required function does not exist in your environment (HHVM?)'); + if (defined('HHVM_VERSION')) { + $this->markTestSkipped('Not supported on HHVM'); } $socket = new \React\Socket\Server('tls://127.0.0.1:0', $this->loop, array('tls' => array( @@ -421,8 +424,8 @@ public function testConnectorInvalidUnboundPortTimeout() /** @group internet */ public function testSecureConnectorOkay() { - if (!function_exists('stream_socket_enable_crypto')) { - $this->markTestSkipped('Required function does not exist in your environment (HHVM?)'); + if (defined('HHVM_VERSION')) { + $this->markTestSkipped('Not supported on HHVM'); } $ssl = new SecureConnector($this->client, $this->loop); @@ -445,8 +448,8 @@ public function testSecureConnectorToBadSslWithVerifyFails() /** @group internet */ public function testSecureConnectorToBadSslWithoutVerifyWorks() { - if (!function_exists('stream_socket_enable_crypto')) { - $this->markTestSkipped('Required function does not exist in your environment (HHVM?)'); + if (defined('HHVM_VERSION')) { + $this->markTestSkipped('Not supported on HHVM'); } $ssl = new SecureConnector($this->client, $this->loop, array('verify_peer' => false)); From a2ecf61af38616d5ecd62dd37bbfe93e2dd502d7 Mon Sep 17 00:00:00 2001 From: Simon Frings Date: Wed, 31 Mar 2021 10:19:05 +0200 Subject: [PATCH 3/3] Support PHP 8 --- .github/workflows/ci.yml | 1 + README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa22f84..be8fba7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,7 @@ jobs: strategy: matrix: php: + - 8.0 - 7.4 - 7.3 - 7.2 diff --git a/README.md b/README.md index 72748a1..8cf74d9 100644 --- a/README.md +++ b/README.md @@ -1027,7 +1027,7 @@ $ composer require clue/socks-react:^1.2 See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades. This project aims to run on any platform and thus does not require any PHP -extensions and supports running on legacy PHP 5.3 through current PHP 7+ and +extensions and supports running on legacy PHP 5.3 through current PHP 8+ and HHVM. It's *highly recommended to use PHP 7+* for this project.