From ff2c9582f78b13406a8e9687ed5444626650da34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 11 Sep 2017 21:22:49 +0200 Subject: [PATCH 01/10] Add gitignore file --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..44a9f6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/composer.phar +/vendor/ +/composer.lock From 0524f1b246726327c76d8e4d8f1fe81e28492680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 11 Sep 2017 21:46:47 +0200 Subject: [PATCH 02/10] Add 7zip integration test --- .travis.yml | 26 +++++++--------- composer.json | 3 ++ src/ZipStreamer.php | 10 +++++-- test/ZipComponents.php | 2 -- test/ZipStreamerTest.php | 9 +++--- test/integration/UnpackTest.php | 48 ++++++++++++++++++++++++++++++ test/lib/Count64Test.php | 3 ++ test/phpunit.xml | 4 ++- test/travis/php-modules-install.sh | 4 +-- 9 files changed, 82 insertions(+), 27 deletions(-) create mode 100644 test/integration/UnpackTest.php diff --git a/.travis.yml b/.travis.yml index 39a9183..f00994d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,25 @@ language: php -sudo: false +dist: trusty +sudo: required env: - - PECL_HTTP_VERSION=1.7.6 - - PECL_HTTP_VERSION=2.5.0 - - PECL_HTTP_VERSION=3.0.0RC1 + - PECL_HTTP_VERSION=3.1.1RC1 php: + - 7.2 + - 7.1 - 7.0 - - 5.6 - - 5.5 - - 5.4 - - 5.3 before_install: + - composer install --dev - sh -c "mkdir -p ${TRAVIS_BUILD_DIR}/travis/module-cache/`php-config --vernum`" + - sudo apt-get install unzip p7zip-full libgnutls-dev before_script: - ./test/travis/php-modules-install.sh script: - - phpunit --configuration test/phpunit.xml + - vendor/bin/phpunit --configuration test/phpunit.xml cache: directories: @@ -28,10 +27,7 @@ cache: matrix: fast_finish: true - exclude: - - php: 5.5 - env: PECL_HTTP_VERSION=1.7.6 + include: - php: 5.6 - env: PECL_HTTP_VERSION=1.7.6 - - php: 7.0 - env: PECL_HTTP_VERSION=1.7.6 + env: PECL_HTTP_VERSION=2.6.0 + diff --git a/composer.json b/composer.json index d9c0e44..477f01b 100644 --- a/composer.json +++ b/composer.json @@ -31,5 +31,8 @@ "psr-4": { "ZipStreamer\\": "src/" } + }, + "require-dev": { + "phpunit/phpunit": "^5.7" } } diff --git a/src/ZipStreamer.php b/src/ZipStreamer.php index 18d41a6..07b14bb 100644 --- a/src/ZipStreamer.php +++ b/src/ZipStreamer.php @@ -31,7 +31,7 @@ */ namespace ZipStreamer; -require "lib/Count64.php"; +require_once __DIR__ . "/lib/Count64.php"; class COMPR { // compression method @@ -76,8 +76,10 @@ class ZipStreamer { private $offset; /** @var boolean indicates zip is finalized and sent to client; no further addition possible */ private $isFinalized = false; + /** @var bool only used for unit testing */ + public $turnOffOutputBuffering = true; - /** + /** * Constructor. Initializes ZipStreamer object for immediate usage. * @param array $options Optional, ZipStreamer and zip file options as key/value pairs. * Valid options are: @@ -178,7 +180,9 @@ public function sendHeaders($archiveName = 'archive.zip', $contentType = 'applic } $this->flush(); // turn off output buffering - @ob_end_flush(); + if ($this->turnOffOutputBuffering) { + @ob_end_flush(); + } } /** diff --git a/test/ZipComponents.php b/test/ZipComponents.php index 445c9ee..588cd0d 100644 --- a/test/ZipComponents.php +++ b/test/ZipComponents.php @@ -8,8 +8,6 @@ */ namespace ZipStreamer; -require_once "src/ZipStreamer.php"; - /** * @codeCoverageIgnore */ diff --git a/test/ZipStreamerTest.php b/test/ZipStreamerTest.php index 64d5d99..54894b7 100644 --- a/test/ZipStreamerTest.php +++ b/test/ZipStreamerTest.php @@ -8,8 +8,8 @@ */ namespace ZipStreamer; -require "src/ZipStreamer.php"; -require "test/ZipComponents.php"; +require_once __DIR__ . "/../src/ZipStreamer.php"; +require_once __DIR__ . "/ZipComponents.php"; class File { const FILE = 1; @@ -65,12 +65,12 @@ protected static function getVersionToExtract($zip64, $isDir) { } protected function assertOutputEqualsFile($filename) { - return $this->assertEquals(file_get_contents($filename), $this->getOutput()); + $this->assertEquals(file_get_contents($filename), $this->getOutput()); } protected function assertContainsOneMatch($pattern, $input) { $results = preg_grep($pattern, $input); - return $this->assertEquals(1, sizeof($results)); + $this->assertEquals(1, sizeof($results)); } protected function assertOutputZipfileOK($files, $options) { @@ -311,6 +311,7 @@ public function testSendHeadersOKWithRegularBrowser(array $arguments, $zip = new ZipStreamer(array( 'outstream' => $this->outstream )); + $zip->turnOffOutputBuffering = false; $_SERVER['HTTP_USER_AGENT'] = $browser; call_user_func_array(array($zip, "sendHeaders"), $arguments); $headers = xdebug_get_headers(); diff --git a/test/integration/UnpackTest.php b/test/integration/UnpackTest.php new file mode 100644 index 0000000..1ae645b --- /dev/null +++ b/test/integration/UnpackTest.php @@ -0,0 +1,48 @@ + + * + */ + +class UnpackTest extends PHPUnit_Framework_TestCase +{ + private $tmpfname; + + function setUp() + { + parent::setUp(); + + // create a zip file in tmp folder + $this->tmpfname = tempnam("/tmp", "FOO"); + $outstream = fopen($this->tmpfname, 'w'); + + $zip = new ZipStreamer\ZipStreamer((array( + 'outstream' => $outstream + ))); + $stream = fopen(__DIR__ . "/../../README.md", "r"); + $zip->addFileFromStream($stream, 'README.test'); + fclose($stream); + $zip->finalize(); + + fflush($outstream); + fclose($outstream); + } + + public function test7zip() { + $output = []; + $return_var = -1; + exec('7z t ' . escapeshellarg($this->tmpfname), $output, $return_var); + $fullOutput = implode("\n", $output); + $this->assertEquals(0, $return_var, $fullOutput); + $this->assertTrue(in_array('1 file, 939 bytes (1 KiB)', $output), $fullOutput); + } + + public function testUnzip() { + $output = []; + $return_var = -1; + exec('unzip -t ' . escapeshellarg($this->tmpfname), $output, $return_var); + $fullOutput = implode("\n", $output); + $this->assertEquals(0, $return_var, $fullOutput); + $this->assertTrue(in_array(' testing: README.test OK', $output), $fullOutput); + } +} diff --git a/test/lib/Count64Test.php b/test/lib/Count64Test.php index 0508506..8e127ce 100644 --- a/test/lib/Count64Test.php +++ b/test/lib/Count64Test.php @@ -5,6 +5,9 @@ * This file is licensed under the GNU GPL version 3 or later. * See COPYING for details. */ + +require_once __DIR__ . '/../../src/lib/Count64.php'; + class TestPack extends PHPUnit_Framework_TestCase { public function providerPack16leValues() { diff --git a/test/phpunit.xml b/test/phpunit.xml index f367297..d73bdbe 100644 --- a/test/phpunit.xml +++ b/test/phpunit.xml @@ -6,6 +6,8 @@ debug="true" > - ./ + ZipStreamerTest.php + lib + integration diff --git a/test/travis/php-modules-install.sh b/test/travis/php-modules-install.sh index 4543a60..35ec9a4 100755 --- a/test/travis/php-modules-install.sh +++ b/test/travis/php-modules-install.sh @@ -35,8 +35,8 @@ pecl_module_install() { } if [[ 7 -le ${PECL_HTTP_VERSION%%.*} ]]; then - yes | pecl_module_install raphf raphf.so - yes | pecl_module_install propro propro.so + yes | pecl_module_install raphf-2.0.0 raphf.so + yes | pecl_module_install propro-2.0.1 propro.so elif [[ 1 -lt ${PECL_HTTP_VERSION%%.*} ]]; then yes | pecl_module_install raphf-1.1.2 raphf.so yes | pecl_module_install propro-1.0.2 propro.so From 327a9787470b210ac793645a63ef0b38556b4dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 12 Sep 2017 08:54:37 +0200 Subject: [PATCH 03/10] Use 7zip 16.02 built in a docker --- .travis.yml | 6 +++++- test/integration/Dockerfile | 19 +++++++++++++++++++ test/integration/UnpackTest.php | 3 ++- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 test/integration/Dockerfile diff --git a/.travis.yml b/.travis.yml index f00994d..5047093 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ language: php dist: trusty sudo: required +services: + - docker + env: - PECL_HTTP_VERSION=3.1.1RC1 @@ -11,9 +14,10 @@ php: - 7.0 before_install: + - docker build -t datawraith/p7zip test/integration - composer install --dev - sh -c "mkdir -p ${TRAVIS_BUILD_DIR}/travis/module-cache/`php-config --vernum`" - - sudo apt-get install unzip p7zip-full libgnutls-dev + - sudo apt-get install unzip libgnutls-dev before_script: - ./test/travis/php-modules-install.sh diff --git a/test/integration/Dockerfile b/test/integration/Dockerfile new file mode 100644 index 0000000..03ff843 --- /dev/null +++ b/test/integration/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:3.6 +MAINTAINER Johannes Holzfuß + +# This Dockerfile containerizes p7zip. +# +# You must run it using the correct UID/GID via the -u switch to `docker run` +# or the permissions will be wrong. +# +# Example usage +# docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd)":/data datawraith/p7zip a archive.7z file1 file2 file3 + +RUN apk --update add \ + p7zip \ + && rm -rf /var/cache/apk/* + +RUN mkdir /data +WORKDIR /data + +ENTRYPOINT ["7z"] diff --git a/test/integration/UnpackTest.php b/test/integration/UnpackTest.php index 1ae645b..471887c 100644 --- a/test/integration/UnpackTest.php +++ b/test/integration/UnpackTest.php @@ -31,8 +31,9 @@ function setUp() public function test7zip() { $output = []; $return_var = -1; - exec('7z t ' . escapeshellarg($this->tmpfname), $output, $return_var); + exec('docker run --rm -u "$(id -u):$(id -g)" -v /tmp:/data datawraith/p7zip t ' . escapeshellarg(basename($this->tmpfname)), $output, $return_var); $fullOutput = implode("\n", $output); + $this->assertEquals($output[1], '7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21', $fullOutput); $this->assertEquals(0, $return_var, $fullOutput); $this->assertTrue(in_array('1 file, 939 bytes (1 KiB)', $output), $fullOutput); } From 3925705cc9632b217b6bf1d1a819716ec96bd258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 12 Sep 2017 09:08:32 +0200 Subject: [PATCH 04/10] Fix issue https://github.com/McNetic/PHPZipStreamer/issues/37 --- src/ZipStreamer.php | 2 +- src/lib/Count64.php | 2 -- test/ZipStreamerTest.php | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/ZipStreamer.php b/src/ZipStreamer.php index 07b14bb..e7567d2 100644 --- a/src/ZipStreamer.php +++ b/src/ZipStreamer.php @@ -529,7 +529,7 @@ private function buildCentralDirectoryHeader($filePath, $timestamp, $gpFlags, private function buildEndOfCentralDirectoryRecord($cdRecLength) { if ($this->zip64) { $diskNumber = -1; - $cdRecCount = -1; + $cdRecCount = min(sizeof($this->cdRec), 0xffff); $cdRecLength = -1; $offset = -1; } else { diff --git a/src/lib/Count64.php b/src/lib/Count64.php index b52db06..4db8bae 100644 --- a/src/lib/Count64.php +++ b/src/lib/Count64.php @@ -300,5 +300,3 @@ public static function construct($value = 0, $limit32Bit = False) { } } } - -?> diff --git a/test/ZipStreamerTest.php b/test/ZipStreamerTest.php index 54894b7..37a874d 100644 --- a/test/ZipStreamerTest.php +++ b/test/ZipStreamerTest.php @@ -88,8 +88,8 @@ protected function assertOutputZipfileOK($files, $options) { $eocdrec->assertValues(array( "numberDisk" => 0xffff, "numberDiskStartCD" => 0xffff, - "numberEntriesDisk" => 0xffff, - "numberEntriesCD" => 0xffff, + "numberEntriesDisk" => sizeof($files), + "numberEntriesCD" => sizeof($files), "size" => 0xffffffff, "offsetStart" => 0xffffffff, "lengthComment" => 0, From 31820e799bcda93366d835ed4596a58e67c5eacc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 12 Sep 2017 12:23:50 +0200 Subject: [PATCH 05/10] Drop pecl module caching --- .travis.yml | 10 ++----- test/travis/php-modules-install.sh | 46 ------------------------------ 2 files changed, 2 insertions(+), 54 deletions(-) delete mode 100755 test/travis/php-modules-install.sh diff --git a/.travis.yml b/.travis.yml index 5047093..1bd5181 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,19 +16,13 @@ php: before_install: - docker build -t datawraith/p7zip test/integration - composer install --dev - - sh -c "mkdir -p ${TRAVIS_BUILD_DIR}/travis/module-cache/`php-config --vernum`" - sudo apt-get install unzip libgnutls-dev - -before_script: - - ./test/travis/php-modules-install.sh + - pecl channel-update pecl.php.net + - printf "\n\n\n" | pecl install pecl_http-$PECL_HTTP_VERSION script: - vendor/bin/phpunit --configuration test/phpunit.xml -cache: - directories: - - ${TRAVIS_BUILD_DIR}/travis/module-cache - matrix: fast_finish: true include: diff --git a/test/travis/php-modules-install.sh b/test/travis/php-modules-install.sh deleted file mode 100755 index 35ec9a4..0000000 --- a/test/travis/php-modules-install.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -MODULE_CACHE_DIR=${TRAVIS_BUILD_DIR}/travis/module-cache/$(php-config --vernum) -PHP_CONFIG=${TRAVIS_BUILD_DIR}/travis/phpconfig.ini -PHP_TARGET_DIR=$(php-config --extension-dir) - -if [ -d ${MODULE_CACHE_DIR} ]; then - cp ${MODULE_CACHE_DIR}/* ${PHP_TARGET_DIR} -fi - -touch ${PHP_CONFIG} -mkdir -p ${MODULE_CACHE_DIR} - -pecl_module_install() { - if [[ "-f" = $1 ]]; then - force="-f" - shift - else - force="" - fi - package=$1 - filename=$2 - - if php -m | grep $package > /dev/null; - then - echo "$package already installed and active" - elif [ ! -f ${PHP_TARGET_DIR}/${filename} ] - then - echo "$filename not found in extension dir, compiling" - pecl install $force ${package} - else - echo "Adding $filename to php config" - echo "extension = $filename" >> ${PHP_CONFIG} - fi - cp ${PHP_TARGET_DIR}/${filename} ${MODULE_CACHE_DIR} -} - -if [[ 7 -le ${PECL_HTTP_VERSION%%.*} ]]; then - yes | pecl_module_install raphf-2.0.0 raphf.so - yes | pecl_module_install propro-2.0.1 propro.so -elif [[ 1 -lt ${PECL_HTTP_VERSION%%.*} ]]; then - yes | pecl_module_install raphf-1.1.2 raphf.so - yes | pecl_module_install propro-1.0.2 propro.so -fi -printf "\n\n\n" | pecl_module_install -f pecl_http-$PECL_HTTP_VERSION http.so - -phpenv config-add ${PHP_CONFIG} From 9a9850c9e45c3ed3334775a6ec767be77931049c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 28 Sep 2017 11:17:58 +0200 Subject: [PATCH 06/10] Adjust for own packaging ... --- composer.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 477f01b..b34caed 100644 --- a/composer.json +++ b/composer.json @@ -1,10 +1,11 @@ { - "name": "mcnetic/zipstreamer", + "name": "deepdiver/zipstreamer", "type": "library", "description": "Stream zip files without i/o overhead", "keywords": ["zip", "stream"], - "homepage": "https://github.com/McNetic/PHPZipStreamer", + "homepage": "https://github.com/DeepDiver1975/PHPZipStreamer", "license": "GPL-3.0+", + "version": "1.1.0" "authors": [ { "name": "Nicolai Ehemann", "email": "en@enlightened.de", @@ -21,11 +22,11 @@ ], "repositories": [ { "type": "vcs", - "url": "https://github.com/McNetic/PHPZipStreamer" + "url": "https://github.com/DeepDiver1975/PHPZipStreamer" } ], "require": { - "php": ">=5.3.0" + "php": ">=5.6.0" }, "autoload": { "psr-4": { From 4d9a9009fb0ef84b1f7cb3a63b627f758d90ef9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 28 Sep 2017 11:18:13 +0200 Subject: [PATCH 07/10] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index b34caed..46641a7 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "keywords": ["zip", "stream"], "homepage": "https://github.com/DeepDiver1975/PHPZipStreamer", "license": "GPL-3.0+", - "version": "1.1.0" + "version": "1.1.0", "authors": [ { "name": "Nicolai Ehemann", "email": "en@enlightened.de", From 96813f84abde82a93dbf0739005648ebd030a93c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 28 Sep 2017 11:23:17 +0200 Subject: [PATCH 08/10] Add myself as contributor --- composer.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/composer.json b/composer.json index 46641a7..58ff5fe 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,10 @@ "name": "Lukas Reschke", "email": "lukas@owncloud.com", "role": "Contributor" + },{ + "name": "Thomas Müller", + "email": "thomas.mueller@tmit.eu", + "role": "Contributor" } ], "repositories": [ { From a91038949aa3742af76a9fc937e7b2561487eb0b Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 31 Jan 2018 22:12:05 +0100 Subject: [PATCH 09/10] Add data descriptor header As specified in 4.3.9.3 and 4.3.9.4 4.3.9.3 Although not originally assigned a signature, the value 0x08074b50 has commonly been adopted as a signature value for the data descriptor record. Implementers should be aware that ZIP files may be encountered with or without this signature marking data descriptors and SHOULD account for either case when reading ZIP files to ensure compatibility. 4.3.9.4 When writing ZIP files, implementors SHOULD include the signature value marking the data descriptor record. When the signature is used, the fields currently defined for the data descriptor record will immediately follow the signature. Signed-off-by: Roeland Jago Douma --- src/ZipStreamer.php | 6 ++++-- test/ZipComponents.php | 17 ++++++++++++++--- test/integration/UnpackTest.php | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/ZipStreamer.php b/src/ZipStreamer.php index e7567d2..656413b 100644 --- a/src/ZipStreamer.php +++ b/src/ZipStreamer.php @@ -49,6 +49,7 @@ class ZipStreamer { const VERSION = "1.0"; const ZIP_LOCAL_FILE_HEADER = 0x04034b50; // local file header signature + const ZIP_DATA_DESCRIPTOR_HEADER = 0x08074b50; //data descriptor header signature const ZIP_CENTRAL_FILE_HEADER = 0x02014b50; // central file header signature const ZIP_END_OF_CENTRAL_DIRECTORY = 0x06054b50; // end of central directory record const ZIP64_END_OF_CENTRAL_DIRECTORY = 0x06064b50; //zip64 end of central directory record @@ -431,16 +432,17 @@ private function buildLocalFileHeader($filePath, $timestamp, $gpFlags, private function addDataDescriptor($dataLength, $gzLength, $dataCRC32) { if ($this->zip64) { - $length = 20; + $length = 24; $packedGzLength = pack64le($gzLength); $packedDataLength = pack64le($dataLength); } else { - $length = 12; + $length = 16; $packedGzLength = pack32le($gzLength->getLoBytes()); $packedDataLength = pack32le($dataLength->getLoBytes()); } $this->write('' + . pack32le(self::ZIP_DATA_DESCRIPTOR_HEADER) // data descriptor header signature 4 bytes (0x08074b50) . pack32le($dataCRC32) // crc-32 4 bytes . $packedGzLength // compressed size 4/8 bytes (depending on zip64 enabled) . $packedDataLength // uncompressed size 4/8 bytes (depending on zip64 enabled) diff --git a/test/ZipComponents.php b/test/ZipComponents.php index 588cd0d..ac197d6 100644 --- a/test/ZipComponents.php +++ b/test/ZipComponents.php @@ -469,9 +469,9 @@ public function readFromString($str, $pos, $size = -1) { } if (GPFLAGS::ADD & $this->lfh->gpFlags) { if (is_null($this->lfh->z64Ext)) { - $ddLength = 12; + $ddLength = 16; } else { - $ddLength = 20; + $ddLength = 24; } $this->dd = DataDescriptor::constructFromString($str, $pos, $ddLength); $pos = $this->dd->end + 1; @@ -568,6 +568,7 @@ public function readFromString($str, $pos, $size = -1) { * @codeCoverageIgnore */ class DataDescriptor extends zipRecord { + protected static $MAGIC = 0x08074b50; // data descriptor header signature protected static $shortName = "DD"; public $dataCRC32; public $sizeCompressed; @@ -584,13 +585,23 @@ public function __toString() { } public static function constructFromString($str, $offset = 0, $size = -1) { + $ddheadPos = strpos($str, static::getMagicBytes(), $offset); + if (self::$unitTest) { + self::$unitTest->assertFalse(False === $ddheadPos, "data descriptor header missing"); + self::$unitTest->assertEquals($offset, $ddheadPos, "garbage before data descriptor header"); + } + return static::__constructFromString($str, $offset, $size); } public function readFromString($str, $pos, $size = -1) { $this->begin = $pos; + $magic = readstr($str, $pos, 4); + if (static::getMagicBytes() != $magic) { + throw new ParseException("invalid magic"); + } $this->dataCRC32 = (int) unpack32le(readstr($str, $pos, 4)); - if (20 == $size) { + if (24 == $size) { $this->sizeCompressed = unpack64le(readstr($str, $pos, 8)); $this->size = unpack64le(readstr($str, $pos, 8)); } else { diff --git a/test/integration/UnpackTest.php b/test/integration/UnpackTest.php index 471887c..45db8d7 100644 --- a/test/integration/UnpackTest.php +++ b/test/integration/UnpackTest.php @@ -35,7 +35,7 @@ public function test7zip() { $fullOutput = implode("\n", $output); $this->assertEquals($output[1], '7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21', $fullOutput); $this->assertEquals(0, $return_var, $fullOutput); - $this->assertTrue(in_array('1 file, 939 bytes (1 KiB)', $output), $fullOutput); + $this->assertTrue(in_array('1 file, 943 bytes (1 KiB)', $output), $fullOutput); } public function testUnzip() { From bab00a5a388646974a52420fee1aeb65b75b2a79 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Fri, 23 Mar 2018 21:34:12 +0100 Subject: [PATCH 10/10] Add myself as contributor Signed-off-by: Roeland Jago Douma --- composer.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/composer.json b/composer.json index 58ff5fe..ecbf5ea 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,10 @@ "name": "Thomas Müller", "email": "thomas.mueller@tmit.eu", "role": "Contributor" + },{ + "name": "Roeland Jago Douma", + "email": "roeland@famdouma.nl", + "role": "Contributor" } ], "repositories": [ {