Fixed Bug in Windows in Webreader

This commit is contained in:
kremsy 2017-04-15 23:00:24 +02:00
parent 26b508311c
commit 32514fe740
7 changed files with 93 additions and 17 deletions

View File

@ -0,0 +1,28 @@
<?php
/**
* Created by PhpStorm.
* User: Lukas
* Date: 15. Apr. 2017
* Time: 22:44
*/
namespace Tests\core\Update;
use ManiaControl\ManiaControl;
use ManiaControl\Update\PluginUpdateManager;
use ManiaControl\Utils\WebReader;
class PluginUpdateManagerTest extends \PHPUnit_Framework_TestCase {
public function testGetPluginUpdates(){
$maniaControl = new ManiaControl();
$updateManager = $maniaControl->getUpdateManager();
$pluginUpdateManager = $updateManager->getPluginUpdateManager();
var_dump($pluginUpdateManager->getPluginsUpdates());
$url = ManiaControl::URL_WEBSERVICE . 'plugins';
$response = WebReader::getUrl($url);
$dataJson = $response->getContent();
var_dump($dataJson);
}
}

View File

@ -10,11 +10,15 @@ use ManiaControl\Update\UpdateManager;
final class UpdateManagerTest extends \PHPUnit_Framework_TestCase {
private function getBuildDateFileName() {
return MANIACONTROL_PATH . "core" . DIRECTORY_SEPARATOR . UpdateManager::BUILD_DATE_FILE_NAME;
}
public function testBuildDate() {
$maniaControl = new ManiaControl();
$updateManager = new UpdateManager($maniaControl);
$fileName = MANIACONTROL_PATH . "core" . DIRECTORY_SEPARATOR . UpdateManager::BUILD_DATE_FILE_NAME;
$fileName = $this->getBuildDateFileName();
if (!file_exists($fileName)) {
$this->assertTrue($updateManager->setBuildDate("BuildDateTest-6543210"));
@ -101,6 +105,43 @@ final class UpdateManagerTest extends \PHPUnit_Framework_TestCase {
$updateManager->setCoreUpdateData($updateData);
//Methods should return its non closure success
$this->assertTrue($updateManager->performCoreUpdate());
$this->assertTrue($updateManager->performCoreUpdate($player));
$maniaControl->run(5);
//Check if Tempfolder got Deleted
$tempFolder = MANIACONTROL_PATH . 'temp' . DIRECTORY_SEPARATOR;
$this->assertFileNotExists($tempFolder);
//Check if UpdateFileName got Deleted
$updateFileName = $tempFolder . basename($updateData->url);
$this->assertFileNotExists($updateFileName);
$fileName = $this->getBuildDateFileName();
$this->assertStringEqualsFile($fileName, $updateData->releaseDate);
$this->assertEquals($updateData->releaseDate, $updateManager->getBuildDate());
$this->assertContains("Update finished!", $this->getActualOutput());
}
public function testPerformCoreUpdateFailUrl() {
$maniaControl = new ManiaControl();
$updateManager = $maniaControl->getUpdateManager();
$dataJson = '[{"id":"260","version":"0.166","channel":"nightly","min_dedicated_build":"2014-04-02_18_00","release_date":"2017-03-16 21:57:40","url":"https:\/\/download.maniacontrol.com\/nightly\/ManiaControl_nightly_0-166.zip"}]';
//Create and Test Core Update Data
$updateData = new UpdateData(json_decode($dataJson)[0]);
$updateData->url = "Invalid_URL";
$updateManager->setCoreUpdateData($updateData);
$updateManager->performCoreUpdate();
$maniaControl->run(5);
$player = new Player($maniaControl, true);
$this->assertTrue($updateManager->performCoreUpdate($player));
$this->assertContains("[ERROR] Update failed: Couldn't load Update zip! Could not resolve host: Invalid_URL", $this->getActualOutput());
}
//TODO real test with download and unpack in a certain dir
}

View File

@ -3,7 +3,7 @@
beStrictAboutTestsThatDoNotTestAnything="true" beStrictAboutChangesToGlobalState="true">
<testsuites>
<testsuite name="ManiaControl">
<directory>Tests</directory>
<directory>core</directory>
</testsuite>
</testsuites>
<filter>
@ -16,10 +16,10 @@
<log type="coverage-clover" target="build/logs/clover.xml"/>
</logging>
<php>
<!--<ini name="error_reporting" value="E_ALL"/>
<ini name="error_reporting" value="E_ALL"/>
<ini name="display_errors" value="On"/>
<ini name="display_startup_errors" value="On"/>
<get name="test-get-name" value="test-get-value"/>
<post name="test-post-name" value="test-post-value"/>-->
<post name="test-post-name" value="test-post-value"/>
</php>
</phpunit>

View File

@ -520,7 +520,9 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
Logger::log('Restarting ManiaControl... ' . $message);
// Start new instance
SystemUtil::restart();
if (!defined('PHP_UNIT_TEST')) {
SystemUtil::restart();
}
// Quit old instance
$this->quit('Quitting ManiaControl to restart.');
@ -587,7 +589,7 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
$this->getChat()->sendInformation('ManiaControl v' . self::VERSION . ' successfully started!');
$this->startTime = time();
// Main loop
while (!$this->requestQuitMessage) {
$this->loop();
@ -601,7 +603,7 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
}
// Shutdown
$this->quit($this->requestQuitMessage);
$this->quit($this->requestQuitMessage);
} catch (TransportException $exception) {
Logger::logError('Connection interrupted!');
$this->getErrorHandler()->handleException($exception);
@ -690,7 +692,7 @@ class ManiaControl implements CallbackListener, CommandListener, TimerListener,
$loopStart = microtime(true);
// Extend script timeout
if(!defined('PHP_UNIT_TEST')){
if (!defined('PHP_UNIT_TEST')) {
set_time_limit(self::SCRIPT_TIMEOUT);
}

View File

@ -204,6 +204,7 @@ class PluginUpdateManager implements CallbackListener, CommandListener, TimerLis
$response = WebReader::getUrl($url);
$dataJson = $response->getContent();
$pluginData = json_decode($dataJson);
if (!$pluginData || empty($pluginData)) {
return false;
}

View File

@ -46,7 +46,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener
/** @var UpdateData $coreUpdateData */
private $coreUpdateData = null;
/** @var PluginUpdateManager $pluginUpdateManager */
/** @var PluginUpdateManager $pluginUpdateManager */
private $pluginUpdateManager = null;
/**
@ -377,13 +377,16 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener
return;
}
if(!defined('PHP_UNIT_TEST')){
//Don't overwrite the files while testing
if (!defined('PHP_UNIT_TEST')) {
$zip->extractTo(MANIACONTROL_PATH);
$zip->close();
unlink($updateFileName);
FileUtil::deleteTempFolder();
}
$zip->close();
unlink($updateFileName);
FileUtil::deleteTempFolder();
// Set the build date
$this->setBuildDate($updateData->releaseDate);

View File

@ -15,7 +15,6 @@ use ManiaControl\ManiaControl;
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/
abstract class WebReader {
/**
* Load a URL via GET
*
@ -58,10 +57,12 @@ abstract class WebReader {
->set(CURLOPT_ENCODING, '')// accept encoding
->set(CURLOPT_USERAGENT, 'ManiaControl v' . ManiaControl::VERSION)// user-agent
->set(CURLOPT_RETURNTRANSFER, true)// return instead of output content
->set(CURLOPT_AUTOREFERER, true); // follow redirects
->set(CURLOPT_AUTOREFERER, true)// follow redirects
->set(CURLOPT_SSL_VERIFYPEER, false);
return $request;
}
/**
* Perform the given callback function with the response
*