diff --git a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php index d51251499..4387eb728 100644 --- a/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php +++ b/core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilder.php @@ -14,6 +14,7 @@ namespace Thelia\Core\FileFormat\Archive\ArchiveBuilder; use Thelia\Core\FileFormat\Archive\AbstractArchiveBuilder; use Thelia\Core\FileFormat\Archive\ArchiveBuilder\Exception\TarArchiveException; <<<<<<< HEAD +<<<<<<< HEAD use Thelia\Core\HttpFoundation\Response; use Thelia\Core\Thelia; use Thelia\Core\Translation\Translator; @@ -23,6 +24,12 @@ use Thelia\Core\FileFormat\Archive\ArchiveBuilderInterface; use Thelia\Core\Thelia; use Thelia\Core\Translation\Translator; >>>>>>> Finish implementing and testing zip +======= +use Thelia\Core\HttpFoundation\Response; +use Thelia\Core\Thelia; +use Thelia\Core\Translation\Translator; +use Thelia\Exception\FileNotReadableException; +>>>>>>> Finish Tar archive builder use Thelia\Log\Tlog; use Thelia\Tools\FileDownload\FileDownloaderInterface; @@ -77,8 +84,12 @@ class TarArchiveBuilder extends AbstractArchiveBuilder $this->compression = $compressionType; } +<<<<<<< HEAD /** >>>>>>> Finish implementing and testing zip +======= + +>>>>>>> Finish Tar archive builder public function __destruct() { if ($this->tar instanceof \PharData) { @@ -86,6 +97,7 @@ class TarArchiveBuilder extends AbstractArchiveBuilder unlink($this->cacheFile); } } +<<<<<<< HEAD <<<<<<< HEAD } @@ -96,6 +108,9 @@ class TarArchiveBuilder extends AbstractArchiveBuilder * @param bool $isOnline ======= }*/ +======= + } +>>>>>>> Finish Tar archive builder /** * @param string $filePath It is the path to access the file. @@ -147,13 +162,19 @@ class TarArchiveBuilder extends AbstractArchiveBuilder $this->tar->addFile($filePath, $name); <<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> Finish Tar archive builder /** * And clear the download temp file */ unlink($fileDownloadCache); +<<<<<<< HEAD ======= >>>>>>> Finish implementing and testing zip +======= +>>>>>>> Finish Tar archive builder return $this; } @@ -371,9 +392,32 @@ class TarArchiveBuilder extends AbstractArchiveBuilder ======= public function buildArchiveResponse() { - $this->tar->setMetadata("comment", "Generated by Thelia v" . Thelia::THELIA_VERSION); + $this->tar->setMetadata("Generated by Thelia v" . Thelia::THELIA_VERSION); + if (!is_file($this->cacheFile)) { + $this->throwFileNotFound($this->cacheFile); + } + if (!is_readable($this->cacheFile)) { + throw new FileNotReadableException( + $this->translator->trans( + "The file %file is not readable", + [ + "%file" => $this->cacheFile + ] + ) + ); + } + + $content = file_get_contents($this->cacheFile); + + return new Response( + $content, + 200, + [ + "Content-Type" => $this->getMimeType(), + ] + ); } /** diff --git a/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilderTest.php b/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilderTest.php index 1c9bfba8a..83689d1fa 100644 --- a/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilderTest.php +++ b/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/TarArchiveBuilderTest.php @@ -358,7 +358,6 @@ class TarArchiveBuilderTest extends \PHPUnit_Framework_TestCase ); } - public function testDeleteFile() { $this->tar->addFileFromString( @@ -375,5 +374,143 @@ class TarArchiveBuilderTest extends \PHPUnit_Framework_TestCase $this->tar->hasFile("bar") ); } +<<<<<<< HEAD } >>>>>>> Complete zip tests +======= + + public function testLoadValidArchive() + { + $tar = TarArchiveBuilder::loadArchive( + __DIR__ . DS . "TestResources/well_formatted.tar", + "dev" + ); + + $this->assertInstanceOf( + get_class($this->tar), + $tar + ); + + $this->assertTrue( + $tar->hasFile("LICENSE.txt") + ); + } + + /** + * @expectedException \Thelia\Core\FileFormat\Archive\ArchiveBuilder\Exception\TarArchiveException + */ + public function testLoadInvalidArchive() + { + $tar = TarArchiveBuilder::loadArchive( + __DIR__ . DS . "TestResources/bad_formatted.tar", + "dev" + ); + } + + public function testFormatDirectoryPath() + { + $this->assertEquals( + "foo/", + $this->tar->formatDirectoryPath("foo") + ); + + $this->assertEquals( + "foo/", + $this->tar->formatDirectoryPath("/foo") + ); + + $this->assertEquals( + "foo/", + $this->tar->formatDirectoryPath("foo/") + ); + + $this->assertEquals( + "foo/", + $this->tar->formatDirectoryPath("/foo/") + ); + + $this->assertEquals( + "foo/bar/", + $this->tar->formatDirectoryPath("foo/bar") + ); + + $this->assertEquals( + "foo/bar/", + $this->tar->formatDirectoryPath("/foo/bar") + ); + + $this->assertEquals( + "foo/bar/", + $this->tar->formatDirectoryPath("/foo//bar/") + ); + + $this->assertEquals( + "foo/bar/", + $this->tar->formatDirectoryPath("/foo/bar/") + ); + + $this->assertEquals( + "foo/bar/baz/", + $this->tar->formatDirectoryPath("foo/bar/baz") + ); + + $this->assertEquals( + "foo/bar/baz/", + $this->tar->formatDirectoryPath("//foo/bar///baz/") + ); + } + + public function testFormatFilePath() + { + $this->assertEquals( + "foo", + $this->tar->formatFilePath("foo") + ); + + $this->assertEquals( + "foo", + $this->tar->formatFilePath("/foo") + ); + + $this->assertEquals( + "foo", + $this->tar->formatFilePath("foo/") + ); + + $this->assertEquals( + "foo", + $this->tar->formatFilePath("/foo/") + ); + + $this->assertEquals( + "foo/bar", + $this->tar->formatFilePath("foo/bar") + ); + + $this->assertEquals( + "foo/bar", + $this->tar->formatFilePath("/foo/bar") + ); + + $this->assertEquals( + "foo/bar", + $this->tar->formatFilePath("/foo//bar/") + ); + + $this->assertEquals( + "foo/bar", + $this->tar->formatFilePath("/foo/bar/") + ); + + $this->assertEquals( + "foo/bar/baz", + $this->tar->formatFilePath("foo/bar/baz") + ); + + $this->assertEquals( + "foo/bar/baz", + $this->tar->formatFilePath("//foo/bar///baz/") + ); + } +} +>>>>>>> Finish Tar archive builder diff --git a/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilderTest.php b/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilderTest.php index 10558a2c6..cdbe919b2 100644 --- a/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilderTest.php +++ b/core/lib/Thelia/Tests/FileFormat/Archive/ArchiveBuilder/ZipArchiveBuilderTest.php @@ -69,7 +69,7 @@ class ZipArchiveBuilderTest extends \PHPUnit_Framework_TestCase ======= >>>>>>> Begin tar, tar.bz2 and tar.gz formatter, fix zip test resources */ - public function testGetFilePath() + public function testFormatFilePath() { $this->assertEquals( "foo", @@ -194,6 +194,7 @@ class ZipArchiveBuilderTest extends \PHPUnit_Framework_TestCase } public function testFormatDirectoryPath() +<<<<<<< HEAD { $this->assertEquals( "/foo/", @@ -207,6 +208,8 @@ class ZipArchiveBuilderTest extends \PHPUnit_Framework_TestCase } public function testGetDirectoryPath() +======= +>>>>>>> Finish Tar archive builder { $this->assertEquals( "/foo/",