diff -u b/core/tests/Drupal/KernelTests/Core/Composer/Dependencies/DevDependencyFinderTest.php b/core/tests/Drupal/KernelTests/Core/Composer/Dependencies/DevDependencyFinderTest.php --- b/core/tests/Drupal/KernelTests/Core/Composer/Dependencies/DevDependencyFinderTest.php +++ b/core/tests/Drupal/KernelTests/Core/Composer/Dependencies/DevDependencyFinderTest.php @@ -23,9 +23,50 @@ // Data provider methods are run before setUp(), so they can't use // constants from *.inc files. REQUIREMENT_OK = 0, REQUIREMENT_WARNING = 1. return [ - [0, [], []], - [0, ['any_requirement' => '0.0.1'], []], - [1, ['dev_requirement' => '0.0.1'], ['dev_requirement' => '0.0.*']], + // Tests data for a case when vendor dir is located under app root. + [ + 'expected' => 0, + 'app_root' => '/var/www/drupal/web', + 'vendor_dir' => '/var/www/drupal/web/vendor', + 'installed' => [], + 'dev_requirements' => [] + ], + [ + 'expected' => 0, + 'app_root' => '/var/www/drupal/web', + 'vendor_dir' => '/var/www/drupal/web/vendor', + 'installed' => ['any_requirement' => '0.0.1'], + 'dev_requirements' => [] + ], + [ + 'expected' => 1, + 'app_root' => '/var/www/drupal/web', + 'vendor_dir' => '/var/www/drupal/web/vendor', + 'installed' => ['dev_requirement' => '0.0.1'], + 'dev_requirements' => ['dev_requirement' => '0.0.*'] + ], + // Tests data for a case when vendor dir is located outside app root. + [ + 'expected' => 0, + 'app_root' => '/var/www/drupal/web', + 'vendor_dir' => '/var/www/drupal/vendor', + 'installed' => [], + 'dev_requirements' => [] + ], + [ + 'expected' => 0, + 'app_root' => '/var/www/drupal/web', + 'vendor_dir' => '/var/www/drupal/vendor', + 'installed' => ['any_requirement' => '0.0.1'], + 'dev_requirements' => [] + ], + [ + 'expected' => 0, + 'app_root' => '/var/www/drupal/web', + 'vendor_dir' => '/var/www/drupal/vendor', + 'installed' => ['dev_requirement' => '0.0.1'], + 'dev_requirements' => ['dev_requirement' => '0.0.*'] + ], ]; } @@ -33,14 +74,20 @@ * @covers ::buildRequirements * @dataProvider provideBuildRequirements */ - public function testBuildRequirements($expected, $installed, $dev_requirements) { + public function testBuildRequirements($expected, $app_root, $vendor_dir, $installed, $dev_requirements) { $mock_root = $this->getMockBuilder(ProjectRootInterface::class) - ->setMethods(['getInstalledPackages', 'getDevRequirements']) + ->setMethods(['getProjectRootDirectory', 'getProjectVendorDirectory', 'getInstalledPackages', 'getDevRequirements']) ->getMockForAbstractClass(); $mock_root->expects($this->once()) + ->method('getProjectRootDirectory') + ->willReturn($app_root); + $mock_root->expects($this->once()) + ->method('getProjectVendorDirectory') + ->willReturn($vendor_dir); + $mock_root->expects($this->atMost(1)) ->method('getInstalledPackages') ->willReturn($installed); - $mock_root->expects($this->once()) + $mock_root->expects($this->atMost(1)) ->method('getDevRequirements') ->willReturn($dev_requirements);