ExpressiveInstallerTest\InstallerTestCase::setup PHP Method

setup() protected method

protected setup ( )
    protected function setup()
    {
        // Set config
        $this->refConfig = new ReflectionProperty(OptionalPackages::class, 'config');
        $this->refConfig->setAccessible(true);
        $this->refConfig->setValue(require 'src/ExpressiveInstaller/config.php');
        $this->io = $this->prophesize('Composer\\IO\\IOInterface');
        // Set composer.json
        $composerFile = Factory::getComposerFile();
        $json = new JsonFile($composerFile);
        $localConfig = $json->read();
        $this->refComposerDefinition = new ReflectionProperty(OptionalPackages::class, 'composerDefinition');
        $this->refComposerDefinition->setAccessible(true);
        $this->refComposerDefinition->setValue($localConfig);
        // Load parsed package data
        $manager = $this->prophesize(RepositoryManager::class);
        $composerConfig = new Config();
        $composerConfig->merge(['repositories' => ['packagist' => false]]);
        $loader = new RootPackageLoader($manager->reveal(), $composerConfig);
        $package = $loader->load($localConfig);
        // Set package data
        $this->refComposerRequires = new ReflectionProperty(OptionalPackages::class, 'composerRequires');
        $this->refComposerRequires->setAccessible(true);
        $this->refComposerRequires->setValue($package->getRequires());
        $this->refComposerDevRequires = new ReflectionProperty(OptionalPackages::class, 'composerDevRequires');
        $this->refComposerDevRequires->setAccessible(true);
        $this->refComposerDevRequires->setValue($package->getDevRequires());
        $this->refStabilityFlags = new ReflectionProperty(OptionalPackages::class, 'stabilityFlags');
        $this->refStabilityFlags->setAccessible(true);
        $this->refStabilityFlags->setValue($package->getStabilityFlags());
        // Set project root
        $this->refProjectRoot = new ReflectionProperty(OptionalPackages::class, 'projectRoot');
        $this->refProjectRoot->setAccessible(true);
        $this->refProjectRoot->setValue(realpath(dirname($composerFile)));
        // Cleanup old install files
        $this->cleanup();
    }