Skip to content

Commit 84201bc

Browse files
committed
Ensure success, error, and complete callbacks are called correctly
1 parent f787844 commit 84201bc

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

Curl.class.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,13 +244,13 @@ protected function _exec($_ch=NULL) {
244244
$ch->error_message = $ch->curl_error ? $ch->curl_error_message : $ch->http_error_message;
245245

246246
if (!$ch->error) {
247-
$ch->_call($ch->_success, $ch);
247+
$ch->_call($this->_success, $ch);
248248
}
249249
else {
250-
$ch->_call($ch->_error, $ch);
250+
$ch->_call($this->_error, $ch);
251251
}
252252

253-
$ch->_call($ch->_complete, $ch);
253+
$ch->_call($this->_complete, $ch);
254254

255255
return $ch->error_code;
256256
}

tests/run.php

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,31 +342,48 @@ public function testParallelSuccessCallback() {
342342
$error_called = FALSE;
343343
$complete_called = FALSE;
344344

345+
$success_called_once = FALSE;
346+
$error_called_once = FALSE;
347+
$complete_called_once = FALSE;
348+
345349
$curl = new Curl();
346350
$curl->setHeader('X-DEBUG-TEST', 'get');
347351
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, FALSE);
348352
$curl->setOpt(CURLOPT_SSL_VERIFYHOST, FALSE);
349353

350-
$curl->success(function($instance) use (&$success_called, &$error_called, &$complete_called) {
354+
$curl->success(function($instance) use (&$success_called,
355+
&$error_called,
356+
&$complete_called,
357+
&$success_called_once) {
351358
PHPUnit_Framework_Assert::assertInstanceOf('Curl', $instance);
352359
PHPUnit_Framework_Assert::assertFalse($success_called);
353360
PHPUnit_Framework_Assert::assertFalse($error_called);
354361
PHPUnit_Framework_Assert::assertFalse($complete_called);
355362
$success_called = TRUE;
363+
$success_called_once = TRUE;
356364
});
357-
$curl->error(function($instance) use (&$success_called, &$error_called, &$complete_called, &$curl) {
365+
$curl->error(function($instance) use (&$success_called,
366+
&$error_called,
367+
&$complete_called,
368+
&$curl,
369+
&$error_called_once) {
358370
PHPUnit_Framework_Assert::assertInstanceOf('Curl', $instance);
359371
PHPUnit_Framework_Assert::assertFalse($success_called);
360372
PHPUnit_Framework_Assert::assertFalse($error_called);
361373
PHPUnit_Framework_Assert::assertFalse($complete_called);
362374
$error_called = TRUE;
375+
$error_called_once = TRUE;
363376
});
364-
$curl->complete(function($instance) use (&$success_called, &$error_called, &$complete_called) {
377+
$curl->complete(function($instance) use (&$success_called,
378+
&$error_called,
379+
&$complete_called,
380+
&$complete_called_once) {
365381
PHPUnit_Framework_Assert::assertInstanceOf('Curl', $instance);
366382
PHPUnit_Framework_Assert::assertTrue($success_called);
367383
PHPUnit_Framework_Assert::assertFalse($error_called);
368384
PHPUnit_Framework_Assert::assertFalse($complete_called);
369385
$complete_called = TRUE;
386+
$complete_called_once = TRUE;
370387

371388
PHPUnit_Framework_Assert::assertTrue($success_called);
372389
PHPUnit_Framework_Assert::assertFalse($error_called);
@@ -382,6 +399,9 @@ public function testParallelSuccessCallback() {
382399
Test::TEST_URL . '/b/',
383400
Test::TEST_URL . '/c/',
384401
));
402+
403+
PHPUnit_Framework_Assert::assertTrue($success_called_once || $error_called_once);
404+
PHPUnit_Framework_Assert::assertTrue($complete_called_once);
385405
}
386406

387407
public function testErrorCallback() {

0 commit comments

Comments
 (0)