Skip to content

Commit

Permalink
Merge pull request #110 from GrahamCampbell/php-55
Browse files Browse the repository at this point in the history
Restored support for PHP 5.5 and HHVM 3
  • Loading branch information
Tobion committed Jun 21, 2020
2 parents 89b1a76 + e53e5bf commit bbf3b20
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 33 deletions.
46 changes: 23 additions & 23 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
language: php

dist: xenial

cache:
directories:
- $HOME/.composer/cache/files

php:
- 5.6
- 7.0
- 7.1
- 7.2
- 7.3
- 7.4

env:
global:
- TEST_COMMAND="composer test"

matrix:
fast_finish: true
include:
- php: hhvm-3.24
dist: trusty
- php: 5.5.9
dist: trusty
env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" COVERAGE=true
- php: 5.5
dist: trusty
- php: 5.6
env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" COVERAGE=true TEST_COMMAND="composer test-ci"
dist: xenial
- php: 7.0
dist: xenial
- php: 7.1
dist: bionic
- php: 7.2
dist: bionic
- php: 7.3
dist: bionic
- php: 7.4
dist: bionic
fast_finish: true

before_install:
- if [[ $COVERAGE != true ]]; then phpenv config-rm xdebug.ini || true; fi
- if [[ "$TRAVIS_PHP_VERSION" != "hhvm-3.24" ]]; then echo "xdebug.overload_var_dump = 1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
- if [[ "$TRAVIS_PHP_VERSION" == "hhvm-3.24" ]]; then travis_retry composer require "phpunit/phpunit:^5.7.27" --dev --no-update -n; fi

install:
- travis_retry composer update ${COMPOSER_FLAGS} --prefer-dist --no-interaction
- travis_retry composer update --prefer-dist

script:
- $TEST_COMMAND
- if [[ -z $COVERAGE ]]; then composer test; else composer test-ci; fi
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
}
],
"require": {
"php": ">=5.6"
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "^5.7.27 || ^7.5"
"phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.5"
},
"autoload": {
"psr-4": {
Expand All @@ -33,7 +33,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
"dev-master": "1.3-dev"
}
}
}
8 changes: 8 additions & 0 deletions tests/EachPromiseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,10 @@ private function createSelfResolvingPromise($value)

public function testMutexPreventsGeneratorRecursion()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$results = $promises = [];
for ($i = 0; $i < 20; $i++) {
$p = $this->createSelfResolvingPromise($i);
Expand Down Expand Up @@ -356,6 +360,10 @@ public function testMutexPreventsGeneratorRecursion()

public function testIteratorWithSameKey()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$iter = function () {
yield 'foo' => $this->createSelfResolvingPromise(1);
yield 'foo' => $this->createSelfResolvingPromise(2);
Expand Down
86 changes: 79 additions & 7 deletions tests/functionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,10 @@ public function testCanScheduleThunkWithWait()

public function testYieldsFromCoroutine()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = P\coroutine(function () {
$value = (yield new FulfilledPromise('a'));
yield $value . 'b';
Expand All @@ -367,6 +371,10 @@ public function testYieldsFromCoroutine()

public function testCanCatchExceptionsInCoroutine()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = P\coroutine(function () {
try {
yield new RejectedPromise('a');
Expand Down Expand Up @@ -412,6 +420,10 @@ public function rejectsParentExceptionProvider()

public function testCanRejectFromRejectionCallback()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = P\coroutine(function () {
yield new FulfilledPromise(0);
yield new RejectedPromise('no!');
Expand All @@ -427,6 +439,10 @@ function ($reason) use (&$result) { $result = $reason; }

public function testCanAsyncReject()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$rej = new Promise();
$promise = P\coroutine(function () use ($rej) {
yield new FulfilledPromise(0);
Expand Down Expand Up @@ -460,6 +476,10 @@ public function testCanCatchAndThrowOtherException()

public function testCanCatchAndYieldOtherException()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = P\coroutine(function () {
try {
yield new RejectedPromise('a');
Expand Down Expand Up @@ -487,6 +507,10 @@ public function createLotsOfSynchronousPromise()

public function testLotsOfSynchronousDoesNotBlowStack()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = $this->createLotsOfSynchronousPromise();
$promise->then(function ($v) use (&$r) { $r = $v; });
P\queue()->run();
Expand All @@ -495,6 +519,10 @@ public function testLotsOfSynchronousDoesNotBlowStack()

public function testLotsOfSynchronousWaitDoesNotBlowStack()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = $this->createLotsOfSynchronousPromise();
$promise->then(function ($v) use (&$r) { $r = $v; });
$this->assertEquals(999, $promise->wait());
Expand Down Expand Up @@ -522,6 +550,10 @@ private function createLotsOfFlappingPromise()

public function testLotsOfTryCatchingDoesNotBlowStack()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = $this->createLotsOfFlappingPromise();
$promise->then(function ($v) use (&$r) { $r = $v; });
P\queue()->run();
Expand All @@ -530,6 +562,10 @@ public function testLotsOfTryCatchingDoesNotBlowStack()

public function testLotsOfTryCatchingWaitingDoesNotBlowStack()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promise = $this->createLotsOfFlappingPromise();
$promise->then(function ($v) use (&$r) { $r = $v; });
$this->assertEquals(999, $promise->wait());
Expand All @@ -538,21 +574,29 @@ public function testLotsOfTryCatchingWaitingDoesNotBlowStack()

public function testAsyncPromisesWithCorrectlyYieldedValues()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promises = [
new Promise(),
new Promise(),
new Promise()
new Promise(),
];

$promise = P\coroutine(function () use ($promises) {
$this->assertEquals('skip', (yield new FulfilledPromise('skip')));
eval('
$promise = \GuzzleHttp\Promise\coroutine(function () use ($promises) {
$value = null;
$this->assertEquals(\'skip\', (yield new \GuzzleHttp\Promise\FulfilledPromise(\'skip\')));
foreach ($promises as $idx => $p) {
$this->assertEquals($idx, (yield $p));
$this->assertEquals('skip', (yield new FulfilledPromise('skip')));
$value = (yield $p);
$this->assertEquals($idx, $value);
$this->assertEquals(\'skip\', (yield new \GuzzleHttp\Promise\FulfilledPromise(\'skip\')));
}
$this->assertEquals('skip', (yield new FulfilledPromise('skip')));
yield 2;
$this->assertEquals(\'skip\', (yield new \GuzzleHttp\Promise\FulfilledPromise(\'skip\')));
yield $value;
});
');

$promises[0]->resolve(0);
$promises[1]->resolve(1);
Expand All @@ -565,6 +609,10 @@ public function testAsyncPromisesWithCorrectlyYieldedValues()

public function testYieldFinalWaitablePromise()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$p1 = new Promise(function () use (&$p1) {
$p1->resolve('skip me');
});
Expand All @@ -581,6 +629,10 @@ public function testYieldFinalWaitablePromise()

public function testCanYieldFinalPendingPromise()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$p1 = new Promise();
$p2 = new Promise();
$co = P\coroutine(function() use ($p1, $p2) {
Expand All @@ -596,6 +648,10 @@ public function testCanYieldFinalPendingPromise()

public function testCanNestYieldsAndFailures()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$p1 = new Promise();
$p2 = new Promise();
$p3 = new Promise();
Expand Down Expand Up @@ -626,6 +682,10 @@ public function testCanNestYieldsAndFailures()

public function testCanYieldErrorsAndSuccessesWithoutRecursion()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$promises = [];
for ($i = 0; $i < 20; $i++) {
$promises[] = new Promise();
Expand Down Expand Up @@ -657,6 +717,10 @@ public function testCanYieldErrorsAndSuccessesWithoutRecursion()

public function testCanWaitOnPromiseAfterFulfilled()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$f = function () {
static $i = 0;
$i++;
Expand All @@ -682,6 +746,10 @@ public function testCanWaitOnPromiseAfterFulfilled()

public function testCanWaitOnErroredPromises()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$p1 = new Promise(function () use (&$p1) { $p1->reject('a'); });
$p2 = new Promise(function () use (&$p2) { $p2->resolve('b'); });
$p3 = new Promise(function () use (&$p3) { $p3->resolve('c'); });
Expand Down Expand Up @@ -710,6 +778,10 @@ public function testCanWaitOnErroredPromises()

public function testCoroutineOtherwiseIntegrationTest()
{
if (defined('HHVM_VERSION')) {
$this->markTestIncomplete('Broken on HHVM.');
}

$a = new Promise();
$b = new Promise();
$promise = P\coroutine(function () use ($a, $b) {
Expand Down

0 comments on commit bbf3b20

Please sign in to comment.