PageRenderTime 69ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 1ms

/tests/ZendTest/Filter/Compress/TarTest.php

https://bitbucket.org/gencer/zf2
PHP | 244 lines | 173 code | 26 blank | 45 comment | 10 complexity | 1a5d517185ec5192a350478be630f30d MD5 | raw file
  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. */
  9. namespace ZendTest\Filter\Compress;
  10. use Zend\Filter\Compress\Tar as TarCompression;
  11. use Zend\Loader\StandardAutoloader;
  12. /**
  13. * @group Zend_Filter
  14. */
  15. class TarTest extends \PHPUnit_Framework_TestCase
  16. {
  17. public function setUp()
  18. {
  19. if (!class_exists('Archive_Tar')) {
  20. $autoloader = new StandardAutoloader();
  21. $autoloader->setFallbackAutoloader(true);
  22. if (!$autoloader->autoload('Archive_Tar')) {
  23. $this->markTestSkipped('This filter needs PEARs Archive_Tar');
  24. }
  25. }
  26. $files = array(
  27. dirname(__DIR__) . '/_files/zipextracted.txt',
  28. dirname(__DIR__) . '/_files/_compress/Compress/First/Second/zipextracted.txt',
  29. dirname(__DIR__) . '/_files/_compress/Compress/First/Second',
  30. dirname(__DIR__) . '/_files/_compress/Compress/First/zipextracted.txt',
  31. dirname(__DIR__) . '/_files/_compress/Compress/First',
  32. dirname(__DIR__) . '/_files/_compress/Compress/zipextracted.txt',
  33. dirname(__DIR__) . '/_files/_compress/Compress',
  34. dirname(__DIR__) . '/_files/_compress/zipextracted.txt',
  35. dirname(__DIR__) . '/_files/_compress',
  36. dirname(__DIR__) . '/_files/compressed.tar'
  37. );
  38. foreach ($files as $file) {
  39. if (file_exists($file)) {
  40. if (is_dir($file)) {
  41. rmdir($file);
  42. } else {
  43. unlink($file);
  44. }
  45. }
  46. }
  47. if (!file_exists(dirname(__DIR__) . '/_files/Compress/First/Second')) {
  48. mkdir(dirname(__DIR__) . '/_files/Compress/First/Second', 0777, true);
  49. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/Second/zipextracted.txt', 'compress me');
  50. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/zipextracted.txt', 'compress me');
  51. file_put_contents(dirname(__DIR__) . '/_files/Compress/zipextracted.txt', 'compress me');
  52. }
  53. }
  54. public function tearDown()
  55. {
  56. $files = array(
  57. dirname(__DIR__) . '/_files/zipextracted.txt',
  58. dirname(__DIR__) . '/_files/_compress/Compress/First/Second/zipextracted.txt',
  59. dirname(__DIR__) . '/_files/_compress/Compress/First/Second',
  60. dirname(__DIR__) . '/_files/_compress/Compress/First/zipextracted.txt',
  61. dirname(__DIR__) . '/_files/_compress/Compress/First',
  62. dirname(__DIR__) . '/_files/_compress/Compress/zipextracted.txt',
  63. dirname(__DIR__) . '/_files/_compress/Compress',
  64. dirname(__DIR__) . '/_files/_compress/zipextracted.txt',
  65. dirname(__DIR__) . '/_files/_compress',
  66. dirname(__DIR__) . '/_files/compressed.tar',
  67. dirname(__DIR__) . '/_files/compressed.tar.gz',
  68. dirname(__DIR__) . '/_files/compressed.tar.bz2'
  69. );
  70. foreach ($files as $file) {
  71. if (file_exists($file)) {
  72. if (is_dir($file)) {
  73. rmdir($file);
  74. } else {
  75. unlink($file);
  76. }
  77. }
  78. }
  79. if (!file_exists(dirname(__DIR__) . '/_files/Compress/First/Second')) {
  80. mkdir(dirname(__DIR__) . '/_files/Compress/First/Second', 0777, true);
  81. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/Second/zipextracted.txt', 'compress me');
  82. file_put_contents(dirname(__DIR__) . '/_files/Compress/First/zipextracted.txt', 'compress me');
  83. file_put_contents(dirname(__DIR__) . '/_files/Compress/zipextracted.txt', 'compress me');
  84. }
  85. }
  86. /**
  87. * Basic usage
  88. *
  89. * @return void
  90. */
  91. public function testBasicUsage()
  92. {
  93. $filter = new TarCompression(
  94. array(
  95. 'archive' => dirname(__DIR__) . '/_files/compressed.tar',
  96. 'target' => dirname(__DIR__) . '/_files/zipextracted.txt'
  97. )
  98. );
  99. $content = $filter->compress('compress me');
  100. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  101. . DIRECTORY_SEPARATOR . 'compressed.tar', $content);
  102. $content = $filter->decompress($content);
  103. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR, $content);
  104. $content = file_get_contents(dirname(__DIR__) . '/_files/zipextracted.txt');
  105. $this->assertEquals('compress me', $content);
  106. }
  107. /**
  108. * Setting Options
  109. *
  110. * @return void
  111. */
  112. public function testTarGetSetOptions()
  113. {
  114. $filter = new TarCompression();
  115. $this->assertEquals(
  116. array(
  117. 'archive' => null,
  118. 'target' => '.',
  119. 'mode' => null),
  120. $filter->getOptions()
  121. );
  122. $this->assertEquals(null, $filter->getOptions('archive'));
  123. $this->assertNull($filter->getOptions('nooption'));
  124. $filter->setOptions(array('nooptions' => 'foo'));
  125. $this->assertNull($filter->getOptions('nooption'));
  126. $filter->setOptions(array('archive' => 'temp.txt'));
  127. $this->assertEquals('temp.txt', $filter->getOptions('archive'));
  128. }
  129. /**
  130. * Setting Archive
  131. *
  132. * @return void
  133. */
  134. public function testTarGetSetArchive()
  135. {
  136. $filter = new TarCompression();
  137. $this->assertEquals(null, $filter->getArchive());
  138. $filter->setArchive('Testfile.txt');
  139. $this->assertEquals('Testfile.txt', $filter->getArchive());
  140. $this->assertEquals('Testfile.txt', $filter->getOptions('archive'));
  141. }
  142. /**
  143. * Setting Target
  144. *
  145. * @return void
  146. */
  147. public function testTarGetSetTarget()
  148. {
  149. $filter = new TarCompression();
  150. $this->assertEquals('.', $filter->getTarget());
  151. $filter->setTarget('Testfile.txt');
  152. $this->assertEquals('Testfile.txt', $filter->getTarget());
  153. $this->assertEquals('Testfile.txt', $filter->getOptions('target'));
  154. $this->setExpectedException('\Zend\Filter\Exception\InvalidArgumentException', 'does not exist');
  155. $filter->setTarget('/unknown/path/to/file.txt');
  156. }
  157. /**
  158. * Setting Archive
  159. *
  160. * @return void
  161. */
  162. public function testTarCompressToFile()
  163. {
  164. $filter = new TarCompression(
  165. array(
  166. 'archive' => dirname(__DIR__) . '/_files/compressed.tar',
  167. 'target' => dirname(__DIR__) . '/_files/zipextracted.txt'
  168. )
  169. );
  170. file_put_contents(dirname(__DIR__) . '/_files/zipextracted.txt', 'compress me');
  171. $content = $filter->compress(dirname(__DIR__) . '/_files/zipextracted.txt');
  172. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  173. . DIRECTORY_SEPARATOR . 'compressed.tar', $content);
  174. $content = $filter->decompress($content);
  175. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR, $content);
  176. $content = file_get_contents(dirname(__DIR__) . '/_files/zipextracted.txt');
  177. $this->assertEquals('compress me', $content);
  178. }
  179. /**
  180. * Compress directory to Filename
  181. *
  182. * @return void
  183. */
  184. public function testTarCompressDirectory()
  185. {
  186. $filter = new TarCompression(
  187. array(
  188. 'archive' => dirname(__DIR__) . '/_files/compressed.tar',
  189. 'target' => dirname(__DIR__) . '/_files/_compress'
  190. )
  191. );
  192. $content = $filter->compress(dirname(__DIR__) . '/_files/Compress');
  193. $this->assertEquals(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files'
  194. . DIRECTORY_SEPARATOR . 'compressed.tar', $content);
  195. }
  196. public function testSetModeShouldWorkWithCaseInsensitive()
  197. {
  198. $filter = new TarCompression;
  199. $filter->setTarget(dirname(__DIR__).'/_files/zipextracted.txt');
  200. foreach (array('GZ', 'Bz2') as $mode) {
  201. $archive = dirname(__DIR__).'/_files/compressed.tar.'.strtolower($mode);
  202. $filter->setArchive($archive);
  203. $filter->setMode($mode);
  204. $content = $filter->compress('compress me');
  205. $this->assertEquals($archive, $content);
  206. }
  207. }
  208. /**
  209. * testing toString
  210. *
  211. * @return void
  212. */
  213. public function testTarToString()
  214. {
  215. $filter = new TarCompression();
  216. $this->assertEquals('Tar', $filter->toString());
  217. }
  218. }