[ [ 'name' => 'Tester McFakus', 'email' => 'tester@example.org', ], ], 'repositories' => [ 'composer-downloads-plugin' => [ 'type' => 'path', 'url' => self::getPluginSourceDir(), ], ], ]; } /** * @return string * The root folder of the composer-downloads-plugin. */ public static function getPluginSourceDir() { return dirname(__DIR__); } /** * @return string * The path of the autogenerated composer project. */ public static function getTestDir() { return self::$testDir; } /** * Create a temp folder with a "composer.json" file and chdir() into it. * * @param array $composerJson * @return string */ public static function initTestProject($composerJson) { self::$origDir = getcwd(); if (getenv('USE_TEST_PROJECT')) { self::$testDir = getenv('USE_TEST_PROJECT'); @unlink(self::$testDir . DIRECTORY_SEPARATOR . 'composer.lock'); } else { self::$testDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'assetplg-' . md5(__DIR__ . time() . rand(0, 10000)); self::cleanDir(self::$testDir); } if (!is_dir(self::$testDir)) { mkdir(self::$testDir); } file_put_contents(self::$testDir . DIRECTORY_SEPARATOR . 'composer.json', json_encode($composerJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); chdir(self::$testDir); return self::$testDir; } public static function tearDownAfterClass(): void { parent::tearDownAfterClass(); if (self::$testDir) { chdir(self::$origDir); self::$origDir = NULL; if (getenv('USE_TEST_PROJECT')) { fwrite(STDERR, sprintf("\n\nTest project location (%s): %s\n", __CLASS__, self::$testDir)); } else { self::cleanDir(self::$testDir); } self::$testDir = NULL; } } /** * If a directory exists, remove it. * * @param string $dir */ protected static function cleanDir($dir) { PH::runOk(['if [ -d @DIR ]; then rm -rf @DIR ; fi', 'DIR' => $dir]); } public function assertSameFileContent($expected, $actual) { $this->assertEquals(file_get_contents($expected), file_get_contents($actual)); } public function assertFileIsSymlink($path) { $this->assertTrue(file_exists($path), "Path ($path) should exist (symlink file)"); $this->assertTrue(is_link($path), "Path ($path) should be a symlink"); $linkTgt = readlink($path); $this->assertTrue(is_string($linkTgt)); $this->assertTrue(is_file(dirname($path) . '/' . $linkTgt), "Path ($path) should be symlinking pointing to a file. Found tgt ($linkTgt)"); } public function assertFileIsNormal($path) { $this->assertTrue(file_exists($path), "Path ($path) should exist (normal file)"); $this->assertTrue(is_file($path), "Path ($path) should be a normal file"); $this->assertTrue(!is_link($path), "Path ($path) should not be a symlink"); } public function assertDirIsSymlink($path) { $this->assertTrue(file_exists($path), "Path ($path) should exist (symlink dir)"); $this->assertTrue(is_link($path), "Path ($path) should be a symlink"); $linkTgt = readlink($path); $this->assertTrue(is_string($linkTgt)); $this->assertTrue(is_dir(dirname($path) . '/' . $linkTgt), "Path ($path) should be symlinking pointing to a dir. Found tgt ($linkTgt"); } public function assertDirIsNormal($path) { $this->assertTrue(file_exists($path), "Path ($path) should exist (normal dir)"); $this->assertTrue(!is_link($path), "Path ($path) should not be a symlink"); $this->assertTrue(is_dir($path), "Path ($path) should be a dir"); } } __halt_compiler();----SIGNATURE:----Q35e9i4pn08zeLl35Uc02sU8xa2lmy8tEb1i9e1loJUOXnriKIo1ifK7uNrdYTabXIdokJj6xaAyVn3KP5dRmryv8jTv02un1uQ8/fgr1LD64jzCHEcNXpwejRLoGeRb/s4HIB/u5bo1QMHe6hZkxh1DnyS/vyuDzw4agNCq1gTDt0M9yB1y7se5cx04swiUjYsqxwGqNTnQ5FJv4sZz+OqzQm1afeB0a+FDsaHuka5NRQbjzKXNfVn3sTzmXJDKOJX9VBSbeyFAihF0mTw1NHt9XARJNW65GsMoRgCL0x7BeyuHRujuUiwhyN49OlxvZYfT8l4mu/mmvBtxxDvFfxFr6l65/ELygD9yV/ewdSyxiJQpYhFZOxKtP+swidWDmcnYhz6yOCgd5CdfBKCrCPcoLFE/Z+B5B0yMedapyjTA62BuPKx3q9kg17QMhxANSmCyfSAEBHV498uUI90Txlf4JvIgS82ULxu5l8sJ2QWaFxh4RPphSc3Xj3MHZkxxTE8/qNxxQGPzMBeweh6B+N0YtQgdXTHBMNUhc7r39Ud/dwyLCibwhKgc1g77L5DnF05NFQasEgwhgQxa+xJRJfKtC6QWQ+QKsy+kefIWPeS+EFJLBtSWLSOSZ8Q/6hlh07aoWNQGrSP+X7LnCOdrRG41+L+fSi5J02hm3twoI08=----ATTACHMENT:----MzAyMzc1MDg2ODQ5MTg5NCAzOTgyMjg1NDEyODU1MjcyIDU0MzUwMDA4MTM4NTUxNzU=