ComposerFactoryTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Composer\Test\Unit;
  7. use Magento\Framework\App\Filesystem\DirectoryList;
  8. use Magento\Framework\Composer\ComposerFactory;
  9. use Magento\Framework\Composer\ComposerJsonFinder;
  10. use Magento\Framework\Filesystem\Driver\File;
  11. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  12. class ComposerFactoryTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /** @var string Test COMPOSER_HOME environment variable value */
  15. private $testComposerHome = __DIR__ . '/_files/composer_home';
  16. /** @var string Location of test fixtures */
  17. private $fixturesDir = __DIR__ . '/_files/';
  18. /** @var string Original value of COMPOSER_HOME environment variable */
  19. private $originalComposerHome;
  20. /** @var File */
  21. private $fileDriver;
  22. public function setUp()
  23. {
  24. $this->fileDriver = new File();
  25. $this->originalComposerHome = getenv('COMPOSER_HOME');
  26. putenv('COMPOSER_HOME');
  27. }
  28. public function tearDown()
  29. {
  30. if ($this->originalComposerHome) {
  31. putenv('COMPOSER_HOME=' . $this->originalComposerHome);
  32. }
  33. // Composer home directory is created one level up from where composer.json is.
  34. if (is_dir($this->testComposerHome)) {
  35. $this->fileDriver->deleteDirectory($this->testComposerHome);
  36. }
  37. }
  38. public function testCreate()
  39. {
  40. $objectManager = new ObjectManager($this);
  41. $dirListMock = $this->getMockBuilder(DirectoryList::class)->disableOriginalConstructor()->getMock();
  42. $composerJsonFinderMock = $this->getMockBuilder(ComposerJsonFinder::class)
  43. ->disableOriginalConstructor()
  44. ->getMock();
  45. $composerJsonPath = $this->fixturesDir . 'composer.json';
  46. $dirListMock->expects($this->once())
  47. ->method('getPath')
  48. ->willReturn($this->testComposerHome);
  49. $composerJsonFinderMock->expects($this->once())
  50. ->method('findComposerJson')
  51. ->willReturn($composerJsonPath);
  52. /** @var ComposerFactory $factory */
  53. $factory = $objectManager->getObject(
  54. ComposerFactory::class,
  55. [
  56. 'directoryList' => $dirListMock,
  57. 'composerJsonFinder' => $composerJsonFinderMock
  58. ]
  59. );
  60. $this->assertInstanceOf(\Composer\Composer::class, $factory->create());
  61. }
  62. }