* Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Test\Util; use Composer\Util\Tar; use Composer\Test\TestCase; /** * @author Wissem Riahi */ class TarTest extends TestCase { public function testReturnsNullifTheTarIsNotFound(): void { $result = Tar::getComposerJson(__DIR__.'/Fixtures/Tar/invalid.zip'); $this->assertNull($result); } public function testReturnsNullIfTheTarIsEmpty(): void { $result = Tar::getComposerJson(__DIR__.'/Fixtures/Tar/empty.tar.gz'); $this->assertNull($result); } public function testThrowsExceptionIfTheTarHasNoComposerJson(): void { self::expectException('RuntimeException'); Tar::getComposerJson(__DIR__.'/Fixtures/Tar/nojson.tar.gz'); } public function testThrowsExceptionIfTheComposerJsonIsInASubSubfolder(): void { self::expectException('RuntimeException'); Tar::getComposerJson(__DIR__.'/Fixtures/Tar/subfolders.tar.gz'); } public function testReturnsComposerJsonInTarRoot(): void { $result = Tar::getComposerJson(__DIR__.'/Fixtures/Tar/root.tar.gz'); $this->assertEquals("{\n \"name\": \"foo/bar\"\n}\n", $result); } public function testReturnsComposerJsonInFirstFolder(): void { $result = Tar::getComposerJson(__DIR__.'/Fixtures/Tar/folder.tar.gz'); $this->assertEquals("{\n \"name\": \"foo/bar\"\n}\n", $result); } public function testMultipleTopLevelDirsIsInvalid(): void { self::expectException('RuntimeException'); Tar::getComposerJson(__DIR__.'/Fixtures/Tar/multiple.tar.gz'); } }