123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
- /**
- * Humbug
- *
- * @category Humbug
- * @package Humbug
- * @subpackage UnitTests
- * @copyright Copyright (c) 2015 Pádraic Brady (http://blog.astrumfutura.com)
- * @license https://github.com/padraic/pharupdater/blob/master/LICENSE New BSD License
- */
- namespace Humbug\Test\SelfUpdate;
- use Humbug\SelfUpdate\Updater;
- use Humbug\SelfUpdate\Strategy\GithubStrategy;
- class UpdaterGithubStrategyTest extends \PHPUnit_Framework_TestCase
- {
- private $files;
- /** @var Updater */
- private $updater;
- private $tmp;
- private $data;
- public function setup()
- {
- $this->tmp = sys_get_temp_dir();
- $this->files = __DIR__ . '/_files';
- $this->updater = new Updater($this->files . '/test.phar', false, Updater::STRATEGY_GITHUB);
- }
- public function teardown()
- {
- $this->deleteTempPhars();
- }
- public function testConstruction()
- {
- $updater = new Updater(null, false, Updater::STRATEGY_GITHUB);
- $this->assertTrue(
- $updater->getStrategy() instanceof GithubStrategy
- );
- }
- public function testSetCurrentLocalVersion()
- {
- $this->updater->getStrategy()->setCurrentLocalVersion('1.0');
- $this->assertEquals(
- '1.0',
- $this->updater->getStrategy()->getCurrentLocalVersion($this->updater)
- );
- }
- public function testSetPharName()
- {
- $this->updater->getStrategy()->setPharName('foo.phar');
- $this->assertEquals(
- 'foo.phar',
- $this->updater->getStrategy()->getPharName()
- );
- }
- public function testSetPackageName()
- {
- $this->updater->getStrategy()->setPackageName('foo/bar');
- $this->assertEquals(
- 'foo/bar',
- $this->updater->getStrategy()->getPackageName()
- );
- }
- public function testSetStability()
- {
- $this->assertEquals(
- 'stable',
- $this->updater->getStrategy()->getStability()
- );
- $this->updater->getStrategy()->setStability('unstable');
- $this->assertEquals(
- 'unstable',
- $this->updater->getStrategy()->getStability()
- );
- }
- public function testSetStabilityThrowsExceptionOnInvalidStabilityValue()
- {
- $this->setExpectedException(
- 'Humbug\\SelfUpdate\\Exception\\InvalidArgumentException'
- );
- $this->updater->getStrategy()->setStability('foo');
- }
- /**
- * @runInSeparateProcess
- */
- public function testUpdatePhar()
- {
- if (!extension_loaded('openssl')) {
- $this->markTestSkipped('This test requires the openssl extension to run.');
- }
- $this->createTestPharAndKey();
- $this->assertEquals('old', $this->getPharOutput($this->tmp . '/old.phar'));
- $updater = new Updater($this->tmp . '/old.phar');
- $updater->setStrategyObject(new GithubTestStrategy);
- $updater->getStrategy()->setPharName('new.phar');
- $updater->getStrategy()->setPackageName('humbug/test-phar');
- $updater->getStrategy()->setCurrentLocalVersion('1.0.0');
- $this->assertTrue($updater->update());
- $this->assertEquals('new', $this->getPharOutput($this->tmp . '/old.phar'));
- }
- /**
- * Helpers
- */
- private function getPharOutput($path)
- {
- return exec('php ' . escapeshellarg($path));
- }
- private function deleteTempPhars()
- {
- @unlink($this->tmp . '/old.phar');
- @unlink($this->tmp . '/old.phar.pubkey');
- @unlink($this->tmp . '/releases/download/1.0.1/new.phar');
- @unlink($this->tmp . '/releases/download/1.0.1/new.phar.pubkey');
- @unlink($this->tmp . '/old.1c7049180abee67826d35ce308c38272242b64b8.phar');
- @unlink($this->tmp . '/packages.json');
- }
- private function createTestPharAndKey()
- {
- copy($this->files.'/build/old.phar', $this->tmp.'/old.phar');
- chmod($this->tmp.'/old.phar', 0755);
- copy(
- $this->files.'/build/old.phar.pubkey',
- $this->tmp.'/old.phar.pubkey'
- );
- @mkdir($this->tmp.'/releases/download/1.0.1', 0755, true);
- copy($this->files.'/build/new.phar', $this->tmp.'/releases/download/1.0.1/new.phar');
- file_put_contents($this->tmp . '/packages.json', json_encode(array(
- 'packages' => array(
- 'humbug/test-phar' => array(
- '1.0.1' => array(
- 'source' => array(
- 'url' => 'file://' . $this->tmp . '.git'
- )
- ),
- '1.0.0' => array(
- )
- )
- )
- )));
- }
- }
- class GithubTestStrategy extends GithubStrategy
- {
- protected function getApiUrl()
- {
- return 'file://' . sys_get_temp_dir() . '/packages.json';
- }
- }
|