SupportComposerTest.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace Illuminate\Tests\Support;
  3. use Illuminate\Filesystem\Filesystem;
  4. use Illuminate\Support\Composer;
  5. use Mockery as m;
  6. use PHPUnit\Framework\TestCase;
  7. use Symfony\Component\Process\Process;
  8. class SupportComposerTest extends TestCase
  9. {
  10. protected function tearDown(): void
  11. {
  12. m::close();
  13. }
  14. public function testDumpAutoloadRunsTheCorrectCommand()
  15. {
  16. $composer = $this->mockComposer(['composer', 'dump-autoload']);
  17. $composer->dumpAutoloads();
  18. }
  19. public function testDumpAutoloadRunsTheCorrectCommandWhenCustomComposerPharIsPresent()
  20. {
  21. $escape = '\\' === DIRECTORY_SEPARATOR ? '"' : '\'';
  22. $expectedProcessArguments = [$escape.PHP_BINARY.$escape, 'composer.phar', 'dump-autoload'];
  23. $customComposerPhar = true;
  24. $composer = $this->mockComposer($expectedProcessArguments, $customComposerPhar);
  25. $composer->dumpAutoloads();
  26. }
  27. public function testDumpAutoloadRunsTheCorrectCommandWithExtraArguments()
  28. {
  29. $composer = $this->mockComposer(['composer', 'dump-autoload', '--no-scripts']);
  30. $composer->dumpAutoloads('--no-scripts');
  31. }
  32. public function testDumpOptimizedTheCorrectCommand()
  33. {
  34. $composer = $this->mockComposer(['composer', 'dump-autoload', '--optimize']);
  35. $composer->dumpOptimized();
  36. }
  37. private function mockComposer(array $expectedProcessArguments, $customComposerPhar = false)
  38. {
  39. $directory = __DIR__;
  40. $files = m::mock(Filesystem::class);
  41. $files->shouldReceive('exists')->once()->with($directory.'/composer.phar')->andReturn($customComposerPhar);
  42. $process = m::mock(Process::class);
  43. $process->shouldReceive('run')->once();
  44. $composer = $this->getMockBuilder(Composer::class)
  45. ->onlyMethods(['getProcess'])
  46. ->setConstructorArgs([$files, $directory])
  47. ->getMock();
  48. $composer->expects($this->once())
  49. ->method('getProcess')
  50. ->with($expectedProcessArguments)
  51. ->willReturn($process);
  52. return $composer;
  53. }
  54. }