Вход Регистрация
Файл: vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php
Строк: 505
<?php
namespace ComposerInstallersTest;

use 
ComposerInstallersInstaller;
use 
ComposerUtilFilesystem;
use 
ComposerPackagePackage;
use 
ComposerPackageRootPackage;
use 
ComposerComposer;
use 
ComposerConfig;

class 
InstallerTest extends TestCase
{
    private 
$composer;
    private 
$config;
    private 
$vendorDir;
    private 
$binDir;
    private 
$dm;
    private 
$repository;
    private 
$io;
    private 
$fs;

    
/**
     * setUp
     *
     * @return void
     */
    
public function setUp()
    {
        
$this->fs = new Filesystem;

        
$this->composer = new Composer();
        
$this->config = new Config();
        
$this->composer->setConfig($this->config);

        
$this->vendorDir realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR 'baton-test-vendor';
        
$this->ensureDirectoryExistsAndClear($this->vendorDir);

        
$this->binDir realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR 'baton-test-bin';
        
$this->ensureDirectoryExistsAndClear($this->binDir);

        
$this->config->merge(array(
            
'config' => array(
                
'vendor-dir' => $this->vendorDir,
                
'bin-dir' => $this->binDir,
            ),
        ));

        
$this->dm $this->getMockBuilder('ComposerDownloaderDownloadManager')
            ->
disableOriginalConstructor()
            ->
getMock();
        
$this->composer->setDownloadManager($this->dm);

        
$this->repository $this->getMock('ComposerRepositoryInstalledRepositoryInterface');
        
$this->io $this->getMock('ComposerIOIOInterface');
    }

    
/**
     * tearDown
     *
     * @return void
     */
    
public function tearDown()
    {
        
$this->fs->removeDirectory($this->vendorDir);
        
$this->fs->removeDirectory($this->binDir);
    }

    
/**
     * testSupports
     *
     * @return void
     *
     * @dataProvider dataForTestSupport
     */
    
public function testSupports($type$expected)
    {
        
$installer = new Installer($this->io$this->composer);
        
$this->assertSame($expected$installer->supports($type), sprintf('Failed to show support for %s'$type));
    }

    
/**
     * dataForTestSupport
     */
    
public function dataForTestSupport()
    {
        return array(
            array(
'agl-module'true),
            array(
'aimeos-extension'true),
            array(
'annotatecms-module'true),
            array(
'annotatecms-component'true),
            array(
'annotatecms-service'true),
            array(
'bitrix-module'true),
            array(
'bitrix-component'true),
            array(
'bitrix-theme'true),
            array(
'bonefish-package'true),
            array(
'cakephp'false),
            array(
'cakephp-'false),
            array(
'cakephp-app'false),
            array(
'cakephp-plugin'true),
            array(
'chef-cookbook'true),
            array(
'chef-role'true),
            array(
'codeigniter-app'false),
            array(
'codeigniter-library'true),
            array(
'codeigniter-third-party'true),
            array(
'codeigniter-module'true),
            array(
'concrete5-block'true),
            array(
'concrete5-package'true),
            array(
'concrete5-theme'true),
            array(
'concrete5-update'true),
            array(
'craft-plugin'true),
            array(
'croogo-plugin'true),
            array(
'croogo-theme'true),
            array(
'dokuwiki-plugin'true),
            array(
'dokuwiki-template'true),
            array(
'drupal-module'true),
            array(
'dolibarr-module'true),
            array(
'elgg-plugin'true),
            array(
'fuel-module'true),
            array(
'fuel-package'true),
            array(
'fuel-theme'true),
            array(
'fuelphp-component'true),
            array(
'hurad-plugin'true),
            array(
'hurad-theme'true),
            array(
'joomla-library'true),
            array(
'kirby-plugin'true),
            array(
'kohana-module'true),
            array(
'laravel-library'true),
            array(
'lithium-library'true),
            array(
'magento-library'true),
            array(
'mako-package'true),
            array(
'modxevo-snippet'true),
            array(
'modxevo-plugin'true),
            array(
'modxevo-module'true),
            array(
'modxevo-template'true),
            array(
'modxevo-lib'true),
            array(
'mediawiki-extension'true),
            array(
'mediawiki-skin'true),
            array(
'microweber-module'true),
            array(
'modulework-module'true),
            array(
'moodle-mod'true),
            array(
'october-module'true),
            array(
'october-plugin'true),
            array(
'piwik-plugin'true),
            array(
'phpbb-extension'true),
            array(
'pimcore-plugin'true),
            array(
'ppi-module'true),
            array(
'prestashop-module'true),
            array(
'prestashop-theme'true),
            array(
'puppet-module'true),
            array(
'redaxo-addon'true),
            array(
'redaxo-bestyle-plugin'true),
            array(
'roundcube-plugin'true),
            array(
'shopware-backend-plugin'true),
            array(
'shopware-core-plugin'true),
            array(
'shopware-frontend-plugin'true),
            array(
'shopware-theme'true),
            array(
'silverstripe-module'true),
            array(
'silverstripe-theme'true),
            array(
'smf-module'true),
            array(
'smf-theme'true),
            array(
'symfony1-plugin'true),
            array(
'thelia-module'true),
            array(
'thelia-frontoffice-template'true),
            array(
'thelia-backoffice-template'true),
            array(
'thelia-email-template'true),
            array(
'tusk-task'true),
            array(
'tusk-asset'true),
            array(
'typo3-flow-plugin'true),
            array(
'typo3-cms-extension'true),
            array(
'whmcs-gateway'true),
            array(
'wolfcms-plugin'true),
            array(
'wordpress-plugin'true),
            array(
'wordpress-core'false),
            array(
'zend-library'true),
            array(
'zikula-module'true),
            array(
'zikula-theme'true),
            array(
'kodicms-plugin'true),
            array(
'kodicms-media'true),
        );
    }

    
/**
     * testInstallPath
     *
     * @dataProvider dataForTestInstallPath
     */
    
public function testInstallPath($type$path$name$version '1.0.0')
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package($name$version$version);

        
$package->setType($type);
        
$result $installer->getInstallPath($package);
        
$this->assertEquals($path$result);
    }

    
/**
     * dataFormTestInstallPath
     */
    
public function dataForTestInstallPath()
    {
        return array(
            array(
'agl-module''More/MyTestPackage/''agl/my_test-package'),
            array(
'aimeos-extension''ext/ai-test/''author/ai-test'),
            array(
'annotatecms-module''addons/modules/my_module/''vysinsky/my_module'),
            array(
'annotatecms-component''addons/components/my_component/''vysinsky/my_component'),
            array(
'annotatecms-service''addons/services/my_service/''vysinsky/my_service'),
            array(
'bitrix-module''bitrix/modules/my_module/''author/my_module'),
            array(
'bitrix-component''bitrix/components/my_component/''author/my_component'),
            array(
'bitrix-theme''bitrix/templates/my_theme/''author/my_theme'),
            array(
'bonefish-package''Packages/bonefish/package/''bonefish/package'),
            array(
'cakephp-plugin''Plugin/Ftp/''shama/ftp'),
            array(
'chef-cookbook''Chef/mre/my_cookbook/''mre/my_cookbook'),
            array(
'chef-role''Chef/roles/my_role/''mre/my_role'),
            array(
'codeigniter-library''application/libraries/my_package/''shama/my_package'),
            array(
'codeigniter-module''application/modules/my_package/''shama/my_package'),
            array(
'concrete5-block''blocks/concrete5_block/''remo/concrete5_block'),
            array(
'concrete5-package''packages/concrete5_package/''remo/concrete5_package'),
            array(
'concrete5-theme''themes/concrete5_theme/''remo/concrete5_theme'),
            array(
'concrete5-update''updates/concrete5/''concrete5/concrete5'),
            array(
'craft-plugin''craft/plugins/my_plugin/''mdcpepper/my_plugin'),
            array(
'croogo-plugin''Plugin/Sitemaps/''fahad19/sitemaps'),
            array(
'croogo-theme''View/Themed/Readable/''rchavik/readable'),
            array(
'dokuwiki-plugin''lib/plugins/someplugin/''author/someplugin'),
            array(
'dokuwiki-template''lib/tpl/sometemplate/''author/sometemplate'),
            array(
'dolibarr-module''htdocs/custom/my_module/''shama/my_module'),
            array(
'drupal-module''modules/my_module/''shama/my_module'),
            array(
'drupal-theme''themes/my_module/''shama/my_module'),
            array(
'drupal-profile''profiles/my_module/''shama/my_module'),
            array(
'drupal-drush''drush/my_module/''shama/my_module'),
            array(
'elgg-plugin''mod/sample_plugin/''test/sample_plugin'),
            array(
'fuel-module''fuel/app/modules/module/''fuel/module'),
            array(
'fuel-package''fuel/packages/orm/''fuel/orm'),
            array(
'fuel-theme''fuel/app/themes/theme/''fuel/theme'),
            array(
'fuelphp-component''components/demo/''fuelphp/demo'),
            array(
'hurad-plugin''plugins/Akismet/''atkrad/akismet'),
            array(
'hurad-theme''plugins/Hurad2013/''atkrad/Hurad2013'),
            array(
'joomla-plugin''plugins/my_plugin/''shama/my_plugin'),
            array(
'kirby-plugin''site/plugins/my_plugin/''shama/my_plugin'),
            array(
'kohana-module''modules/my_package/''shama/my_package'),
            array(
'laravel-library''libraries/my_package/''shama/my_package'),
            array(
'lithium-library''libraries/li3_test/''user/li3_test'),
            array(
'magento-library''lib/foo/''test/foo'),
            array(
'modxevo-snippet''assets/snippets/my_snippet/''shama/my_snippet'),
            array(
'modxevo-plugin''assets/plugins/my_plugin/''shama/my_plugin'),
            array(
'modxevo-module''assets/modules/my_module/''shama/my_module'),
            array(
'modxevo-template''assets/templates/my_template/''shama/my_template'),
            array(
'modxevo-lib''assets/lib/my_lib/''shama/my_lib'),
            array(
'mako-package''app/packages/my_package/''shama/my_package'),
            array(
'mediawiki-extension''extensions/APC/''author/APC'),
            array(
'mediawiki-extension''extensions/APC/''author/APC-extension'),
            array(
'mediawiki-extension''extensions/UploadWizard/''author/upload-wizard'),
            array(
'mediawiki-extension''extensions/SyntaxHighlight_GeSHi/''author/syntax-highlight_GeSHi'),
            array(
'mediawiki-skin''skins/someskin/''author/someskin-skin'),
            array(
'mediawiki-skin''skins/someskin/''author/someskin'),
            array(
'microweber-module''userfiles/modules/my-thing/''author/my-thing-module'),
            array(
'modulework-module''modules/my_package/''shama/my_package'),
            array(
'moodle-mod''mod/my_package/''shama/my_package'),
            array(
'october-module''modules/my_plugin/''shama/my_plugin'),
            array(
'october-plugin''plugins/shama/my_plugin/''shama/my_plugin'),
            array(
'october-theme''themes/my_theme/''shama/my_theme'),
            array(
'piwik-plugin''plugins/VisitSummary/''shama/visit-summary'),
            array(
'prestashop-module''modules/a-module/''vendor/a-module'),
            array(
'prestashop-theme''themes/a-theme/''vendor/a-theme'),
            array(
'phpbb-extension''ext/test/foo/''test/foo'),
            array(
'phpbb-style''styles/foo/''test/foo'),
            array(
'phpbb-language''language/foo/''test/foo'),
            array(
'pimcore-plugin''plugins/MyPlugin/''ubikz/my_plugin'),
            array(
'ppi-module''modules/foo/''test/foo'),
            array(
'puppet-module''modules/puppet-name/''puppet/puppet-name'),
            array(
'redaxo-addon''redaxo/include/addons/my_plugin/''shama/my_plugin'),
            array(
'redaxo-bestyle-plugin''redaxo/include/addons/be_style/plugins/my_plugin/''shama/my_plugin'),
            array(
'roundcube-plugin''plugins/base/''test/base'),
            array(
'roundcube-plugin''plugins/replace_dash/''test/replace-dash'),
            array(
'shopware-backend-plugin''engine/Shopware/Plugins/Local/Backend/ShamaMyBackendPlugin/''shama/my-backend-plugin'),
            array(
'shopware-core-plugin''engine/Shopware/Plugins/Local/Core/ShamaMyCorePlugin/''shama/my-core-plugin'),
            array(
'shopware-frontend-plugin''engine/Shopware/Plugins/Local/Frontend/ShamaMyFrontendPlugin/''shama/my-frontend-plugin'),
            array(
'shopware-theme''templates/my_theme/''shama/my-theme'),
            array(
'silverstripe-module''my_module/''shama/my_module'),
            array(
'silverstripe-module''sapphire/''silverstripe/framework''2.4.0'),
            array(
'silverstripe-module''framework/''silverstripe/framework''3.0.0'),
            array(
'silverstripe-module''framework/''silverstripe/framework''3.0.0-rc1'),
            array(
'silverstripe-module''framework/''silverstripe/framework''my/branch'),
            array(
'silverstripe-theme''themes/my_theme/''shama/my_theme'),
            array(
'smf-module''Sources/my_module/''shama/my_module'),
            array(
'smf-theme''Themes/my_theme/''shama/my_theme'),
            array(
'symfony1-plugin''plugins/sfShamaPlugin/''shama/sfShamaPlugin'),
            array(
'symfony1-plugin''plugins/sfShamaPlugin/''shama/sf-shama-plugin'),
            array(
'thelia-module''local/modules/my_module/''shama/my_module'),
            array(
'thelia-frontoffice-template''templates/frontOffice/my_template_fo/''shama/my_template_fo'),
            array(
'thelia-backoffice-template''templates/backOffice/my_template_bo/''shama/my_template_bo'),
            array(
'thelia-email-template''templates/email/my_template_email/''shama/my_template_email'),
            array(
'tusk-task''.tusk/tasks/my_task/''shama/my_task'),
            array(
'typo3-flow-package''Packages/Application/my_package/''shama/my_package'),
            array(
'typo3-flow-build''Build/my_package/''shama/my_package'),
            array(
'typo3-cms-extension''typo3conf/ext/my_extension/''shama/my_extension'),
            array(
'whmcs-gateway''modules/gateways/gateway_name/''vendor/gateway_name'),
            array(
'wolfcms-plugin''wolf/plugins/my_plugin/''shama/my_plugin'),
            array(
'wordpress-plugin''wp-content/plugins/my_plugin/''shama/my_plugin'),
            array(
'wordpress-muplugin''wp-content/mu-plugins/my_plugin/''shama/my_plugin'),
            array(
'zend-extra''extras/library/zend_test/''shama/zend_test'),
            array(
'zikula-module''modules/my-test_module/''my/test_module'),
            array(
'zikula-theme''themes/my-test_theme/''my/test_theme'),
            array(
'kodicms-media''cms/media/vendor/my_media/''shama/my_media'),
            array(
'kodicms-plugin''cms/plugins/my_plugin/''shama/my_plugin'),
        );
    }

    
/**
     * testGetCakePHPInstallPathException
     *
     * @return void
     *
     * @expectedException InvalidArgumentException
     */
    
public function testGetCakePHPInstallPathException()
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package('shama/ftp''1.0.0''1.0.0');

        
$package->setType('cakephp-whoops');
        
$result $installer->getInstallPath($package);
    }

    
/**
     * testCustomInstallPath
     */
    
public function testCustomInstallPath()
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package('shama/ftp''1.0.0''1.0.0');
        
$package->setType('cakephp-plugin');
        
$consumerPackage = new RootPackage('foo/bar''1.0.0''1.0.0');
        
$this->composer->setPackage($consumerPackage);
        
$consumerPackage->setExtra(array(
            
'installer-paths' => array(
                
'my/custom/path/{$name}/' => array(
                    
'shama/ftp',
                    
'foo/bar',
                ),
            ),
        ));
        
$result $installer->getInstallPath($package);
        
$this->assertEquals('my/custom/path/Ftp/'$result);
    }

    
/**
     * testCustomInstallerName
     */
    
public function testCustomInstallerName()
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package('shama/cakephp-ftp-plugin''1.0.0''1.0.0');
        
$package->setType('cakephp-plugin');
        
$package->setExtra(array(
            
'installer-name' => 'FTP',
        ));
        
$result $installer->getInstallPath($package);
        
$this->assertEquals('Plugin/FTP/'$result);
    }

    
/**
     * testCustomTypePath
     */
    
public function testCustomTypePath()
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package('slbmeh/my_plugin''1.0.0''1.0.0');
        
$package->setType('wordpress-plugin');
        
$consumerPackage = new RootPackage('foo/bar''1.0.0''1.0.0');
        
$this->composer->setPackage($consumerPackage);
        
$consumerPackage->setExtra(array(
            
'installer-paths' => array(
                
'my/custom/path/{$name}/' => array(
                    
'type:wordpress-plugin'
                
),
            ),
        ));
        
$result $installer->getInstallPath($package);
        
$this->assertEquals('my/custom/path/my_plugin/'$result);
    }

    
/**
     * testNoVendorName
     */
    
public function testNoVendorName()
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package('sfPhpunitPlugin''1.0.0''1.0.0');

        
$package->setType('symfony1-plugin');
        
$result $installer->getInstallPath($package);
        
$this->assertEquals('plugins/sfPhpunitPlugin/'$result);
    }

    
/**
     * testTypo3Inflection
     */
    
public function testTypo3Inflection()
    {
        
$installer = new Installer($this->io$this->composer);
        
$package = new Package('typo3/fluid''1.0.0''1.0.0');

        
$package->setAutoload(array(
            
'psr-0' => array(
                
'TYPO3\Fluid' => 'Classes',
            ),
        ));

        
$package->setType('typo3-flow-package');
        
$result $installer->getInstallPath($package);
        
$this->assertEquals('Packages/Application/TYPO3.Fluid/'$result);
    }

    public function 
testUninstallAndDeletePackageFromLocalRepo()
    {
        
$package = new Package('foo''1.0.0''1.0.0');

        
$installer $this->getMock('ComposerInstallersInstaller', array('getInstallPath'), array($this->io$this->composer));
        
$installer->expects($this->once())->method('getInstallPath')->with($package)->will($this->returnValue(sys_get_temp_dir().'/foo'));

        
$repo $this->getMock('ComposerRepositoryInstalledRepositoryInterface');
        
$repo->expects($this->once())->method('hasPackage')->with($package)->will($this->returnValue(true));
        
$repo->expects($this->once())->method('removePackage')->with($package);

        
$installer->uninstall($repo$package);
    }
}
Онлайн: 2
Реклама