From 352648f173e7b132544bf3eaa494184bec6d5aa2 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 21 Nov 2014 21:34:02 +0100 Subject: [PATCH] [ticket/13358] Fix tests and use exceptions instead of user object PHPBB3-13358 --- phpBB/config/services.yml | 2 -- phpBB/phpbb/file_downloader.php | 25 ++++++------------------- phpBB/phpbb/version_helper.php | 8 +++++++- tests/version/version_fetch_test.php | 1 + tests/version/version_test.php | 3 +++ 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml index 8a58a078f8..8667cbbf84 100644 --- a/phpBB/config/services.yml +++ b/phpBB/config/services.yml @@ -111,8 +111,6 @@ services: file_downloader: class: phpbb\file_downloader - arguments: - - @user http_kernel: class: Symfony\Component\HttpKernel\HttpKernel diff --git a/phpBB/phpbb/file_downloader.php b/phpBB/phpbb/file_downloader.php index 0f33ae9941..2d5d9a7516 100644 --- a/phpBB/phpbb/file_downloader.php +++ b/phpBB/phpbb/file_downloader.php @@ -15,25 +15,12 @@ namespace phpbb; class file_downloader { - /** @var \phpbb\user */ - protected $user; - /** @var string Error string */ public $error_string = ''; /** @var int Error number */ public $error_number = 0; - /** - * Constructor - * - * @param \phpbb\user $user phpBB user object - */ - public function __construct(user $user) - { - $this->user = $user; - } - /** * Retrieve contents from remotely stored file * @@ -45,6 +32,9 @@ class file_downloader * * @return mixed File data as string if file can be read and there is no * timeout, false if there were errors or the connection timed out + * + * @throws \RuntimeException If data can't be retrieved and no error + * message is returned */ function get($host, $directory, $filename, $port = 80, $timeout = 6) { @@ -75,8 +65,7 @@ class file_downloader } else if (stripos($line, '404 not found') !== false) { - $this->error_string = $this->user->lang('FILE_NOT_FOUND', $filename); - return false; + throw new \RuntimeException(array('FILE_NOT_FOUND', $filename)); } } @@ -84,8 +73,7 @@ class file_downloader if (!empty($stream_meta_data['timed_out']) || time() >= $timer_stop) { - $this->error_string = $this->user->lang['FSOCK_TIMEOUT']; - return false; + throw new \RuntimeException('FSOCK_TIMEOUT'); } } @fclose($socket); @@ -99,8 +87,7 @@ class file_downloader } else { - $this->error_string = $this->user->lang['FSOCK_DISABLED']; - return false; + throw new \RuntimeException('FSOCK_DISABLED'); } } diff --git a/phpBB/phpbb/version_helper.php b/phpBB/phpbb/version_helper.php index 3b455ec5ba..d7f1f02678 100644 --- a/phpBB/phpbb/version_helper.php +++ b/phpBB/phpbb/version_helper.php @@ -257,7 +257,13 @@ class version_helper $errstr = $errno = ''; $this->file_downloader->set_error_number($errno) ->set_error_string($errstr); - $info = $this->file_downloader->get($this->host, $this->path, $this->file); + try { + $info = $this->file_downloader->get($this->host, $this->path, $this->file); + } + catch (\RuntimeException $exception) + { + throw new \RuntimeException(call_user_func_array(array($this->user, 'lang'), $exception->getMessage())); + } if (!empty($errstr)) { diff --git a/tests/version/version_fetch_test.php b/tests/version/version_fetch_test.php index 05eac58a52..cfc87183cf 100644 --- a/tests/version/version_fetch_test.php +++ b/tests/version/version_fetch_test.php @@ -33,6 +33,7 @@ class phpbb_version_helper_fetch_test extends phpbb_test_case new \phpbb\config\config(array( 'version' => '3.1.0', )), + new \phpbb\file_downloader(), new \phpbb\user('\phpbb\datetime') ); } diff --git a/tests/version/version_test.php b/tests/version/version_test.php index ba31c79a79..528f1602d6 100644 --- a/tests/version/version_test.php +++ b/tests/version/version_test.php @@ -30,6 +30,7 @@ class phpbb_version_helper_test extends phpbb_test_case new \phpbb\config\config(array( 'version' => '3.1.0', )), + new \phpbb\file_downloader(), new \phpbb\user('\phpbb\datetime') ); } @@ -208,6 +209,7 @@ class phpbb_version_helper_test extends phpbb_test_case new \phpbb\config\config(array( 'version' => $current_version, )), + new \phpbb\file_downloader(), new \phpbb\user('\phpbb\datetime'), )) ->getMock() @@ -318,6 +320,7 @@ class phpbb_version_helper_test extends phpbb_test_case new \phpbb\config\config(array( 'version' => $current_version, )), + new \phpbb\file_downloader(), new \phpbb\user('\phpbb\datetime'), )) ->getMock()