From b9f3acfaa614495019ba9b337b750576a44489ef Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Thu, 26 Dec 2019 19:47:24 +0100 Subject: [PATCH] Modular conversion --- composer.json | 1 - tests/conversion/after-5.sh | 20 +++++++++++++++ tests/conversion/after-70.sh | 4 +++ tests/conversion/prepare-5.sh | 10 ++++++++ tests/conversion/prepare-70.sh | 1 + tests/makephar.sh | 47 ++++++++++------------------------ tests/test-conversion.sh | 47 ++++++++-------------------------- tests/testing.php | 4 +-- 8 files changed, 61 insertions(+), 73 deletions(-) create mode 100755 tests/conversion/after-5.sh create mode 100755 tests/conversion/after-70.sh create mode 100755 tests/conversion/prepare-5.sh create mode 120000 tests/conversion/prepare-70.sh diff --git a/composer.json b/composer.json index 238c47bb..ae1046af 100644 --- a/composer.json +++ b/composer.json @@ -76,7 +76,6 @@ "@cs", "@test" ], - "prepare-convert": "rm -rf tempConv && mkdir tempConv", "test-php7": "tests/test-conversion.sh 70", "test-php56": "tests/test-conversion.sh 5", "cs": "PHP_CS_FIXER_IGNORE_ENV=1 php-cs-fixer fix -v --diff --dry-run", diff --git a/tests/conversion/after-5.sh b/tests/conversion/after-5.sh new file mode 100755 index 00000000..4b705764 --- /dev/null +++ b/tests/conversion/after-5.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +sed 's/^Loop::set.*;//g' -i vendor/amphp/amp/lib/Loop.php +echo 'Loop::set((new DriverFactory())->create());' >> vendor/amphp/amp/lib/Loop.php +cp $(dirname $0)/../random.php vendor/paragonie/random_compat/lib/random.php +cp vendor/danog/madelineproto/src/danog/MadelineProto/Coroutine.php vendor/amphp/amp/lib/Coroutine.php +sed 's/namespace danog\\MadelineProto;/namespace Amp;/g' -i vendor/amphp/amp/lib/Coroutine.php +sed 's/public static function echo/public static function echo_/g' -i vendor/danog/madelineproto/src/danog/MadelineProto/Tools.php + +sed 's/use Kelunik\\Certificate\\Certificate/use Kelunik\Certificate\Certificate as _Certificate/g;s/new Certificate/new _Certificate/g;s/empty[(]\$metadata[)] [?] null : //g' -i vendor/amphp/socket/src/TlsInfo.php + +echo " vendor/league/uri-interfaces/src/Contracts/UriException.php + +find vendor/amphp -type f -name '*.php' -exec sed "s/extension_loaded[(]'zlib'[)]/false/g;s/new[(]/new_(/g;s/clone[(]/clone_(/g" -i {} + diff --git a/tests/conversion/after-70.sh b/tests/conversion/after-70.sh new file mode 100755 index 00000000..2734e3ad --- /dev/null +++ b/tests/conversion/after-70.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +find vendor/danog/madelineproto -type f -name '*.php' -exec sed 's/: EncryptableSocket/: \\Amp\\Socket\\Socket/g' -i {} + + diff --git a/tests/conversion/prepare-5.sh b/tests/conversion/prepare-5.sh new file mode 100755 index 00000000..0c2edcf2 --- /dev/null +++ b/tests/conversion/prepare-5.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +rm -rf vendor/danog/madelineproto/docs + +sed -re 's/\?(\w*) (\$\w+)/\2 = NULL/g;s/= null = null/=null/ig;s/: self//g' -i vendor/league/uri-interfaces/src/Contracts/UriInterface.php +while IFS= read -r line; do l=$(echo "$line" | sed 's/[(].*//g'); sed -i "s/$l.*/$line/g" vendor/league/uri/src/Uri.php; done <<< $(grep 'public function' vendor/league/uri-interfaces/src/Contracts/UriInterface.php | sed 's/;//g;s/: self//g') + +sed -i 's/handleConnectionWindowIncrement[(]\$windowSize[)]/handleConnectionWindowIncrement(int $windowSize)/g' vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php + +sed -ri 's/^\{/{ use \\MyCallableMaker;/g;s/\\Closure::fromCallable[(]\[(.+), (.+)\][)]/\1->callableFromInstanceMethod(\2)/g' vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php vendor/amphp/http-client/src/Connection/Http{2,1}Connection.php diff --git a/tests/conversion/prepare-70.sh b/tests/conversion/prepare-70.sh new file mode 120000 index 00000000..20ac8bc1 --- /dev/null +++ b/tests/conversion/prepare-70.sh @@ -0,0 +1 @@ +prepare-5.sh \ No newline at end of file diff --git a/tests/makephar.sh b/tests/makephar.sh index 62cfda65..3ccd0e74 100755 --- a/tests/makephar.sh +++ b/tests/makephar.sh @@ -56,35 +56,15 @@ cd .. [ -f $HOME/.composer/vendor/bin/php7to5 ] && php7to5=$HOME/.composer/vendor/bin/php7to5 [ -f $HOME/.config/composer/vendor/bin/php7to5 ] && php7to5=$HOME/.config/composer/vendor/bin/php7to5 - sed -re 's/\?(\w*) (\$\w+)/\2 = NULL/g;s/= null = null/=null/ig;s/: self//g' -i phar7/vendor/league/uri-interfaces/src/Contracts/UriInterface.php - while IFS= read -r line; do l=$(echo "$line" | sed 's/[(].*//g'); sed -i "s/$l.*/$line/g" phar7/vendor/league/uri/src/Uri.php; done <<< $(grep 'public function' phar7/vendor/league/uri-interfaces/src/Contracts/UriInterface.php | sed 's/;//g;s/: self//g') - - sed -i 's/handleConnectionWindowIncrement[(]\$windowSize[)]/handleConnectionWindowIncrement(int $windowSize)/g' phar7/vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php - - sed -ri 's/^\{/{ use \\MyCallableMaker;/g;s/\\Closure::fromCallable[(]\[(.+), (.+)\][)]/\1->callableFromInstanceMethod(\2)/g' phar7/vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php phar7/vendor/amphp/http-client/src/Connection/Http{2,1}Connection.php + cd phar7 + $madelinePath/tests/conversion/before-5.sh + cd .. php7.3 $php7to5 convert --copy-all phar7 phar5 >/dev/null - - sed 's/^Loop::set.*;//g' -i phar5/vendor/amphp/amp/lib/Loop.php - echo 'Loop::set((new DriverFactory())->create());' >> phar5/vendor/amphp/amp/lib/Loop.php - cp $madelinePath/tests/random.php phar5/vendor/paragonie/random_compat/lib/random.php - cp phar5/vendor/danog/madelineproto/src/danog/MadelineProto/Coroutine.php phar5/vendor/amphp/amp/lib/Coroutine.php - sed 's/namespace danog\\MadelineProto;/namespace Amp;/g' -i phar5/vendor/amphp/amp/lib/Coroutine.php - sed 's/public static function echo/public static function echo_/g' -i phar5/vendor/danog/madelineproto/src/danog/MadelineProto/Tools.php - - find phar5/vendor/amphp -type f -name '*.php' -exec sed "s/extension_loaded[(]'zlib'[)]/false/g;s/new[(]/new_(/g;s/clone[(]/clone_(/g" -i {} + - find phar5/vendor/danog/madelineproto -type f -name '*.php' -exec sed 's/: EncryptableSocket/: \\Amp\\Socket\\Socket/g' -i {} + - - sed 's/use Kelunik\\Certificate\\Certificate/use Kelunik\Certificate\Certificate as _Certificate/g;s/new Certificate/new _Certificate/g' -i phar5/vendor/amphp/socket/src/TlsInfo.php - - echo " phar5/vendor/league/uri-interfaces/src/Contracts/UriException.php + cd phar5 + $madelinePath/tests/conversion/after-5.sh + cd .. php -v @@ -96,17 +76,16 @@ interface UriException [ -f $HOME/.composer/vendor/bin/php7to70 ] && php7to70=$HOME/.composer/vendor/bin/php7to70 [ -f $HOME/.config/composer/vendor/bin/php7to70 ] && php7to70=$HOME/.config/composer/vendor/bin/php7to70 - sed -re 's/\?(\w*) (\$\w+)/\2 = NULL/g;s/= null = null/=null/ig;s/: self//g' -i phar7/vendor/league/uri-interfaces/src/Contracts/UriInterface.php - while IFS= read -r line; do l=$(echo "$line" | sed 's/[(].*//g'); sed -i "s/$l.*/$line/g" phar7/vendor/league/uri/src/Uri.php; done <<< $(grep 'public function' phar7/vendor/league/uri-interfaces/src/Contracts/UriInterface.php | sed 's/;//g;s/: self//g') + cd phar7 + $madelinePath/tests/conversion/before-70.sh + cd .. - sed -i 's/handleConnectionWindowIncrement[(]\$windowSize[)]/handleConnectionWindowIncrement(int $windowSize)/g' phar7/vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php - - sed -ri 's/^\{/{ use \\MyCallableMaker;/g;s/\\Closure::fromCallable[(]\[(.+), (.+)\][)]/\1->callableFromInstanceMethod(\2)/g' phar7/vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php phar7/vendor/amphp/http-client/src/Connection/Http{2,1}Connection.php - $php7to70 convert --copy-all phar7 phar5 >/dev/null - find phar5/vendor/danog/madelineproto -type f -name '*.php' -exec sed 's/: EncryptableSocket/: \\Amp\\Socket\\Socket/g' -i {} + - + cd phar5 + $madelinePath/tests/conversion/after-70.sh + cd .. + php=70 } || { cp -a phar7 phar5 diff --git a/tests/test-conversion.sh b/tests/test-conversion.sh index 60cb8d5a..5f6d68dc 100755 --- a/tests/test-conversion.sh +++ b/tests/test-conversion.sh @@ -2,9 +2,13 @@ madelinePath=$PWD -rm -rf /tmp/tempConv -mkdir /tmp/tempConv -cd /tmp/tempConv +tempDir=/tmp/tempConv$1 + +rm -rf $tempDir +mkdir $tempDir +cd $tempDir + +pwd echo '{ "name": "danog/madelineprototests", @@ -34,48 +38,19 @@ echo '{ }' > composer.json composer update - -rm -rf vendor/danog/madelineproto/docs - -sed -re 's/\?(\w*) (\$\w+)/\2 = NULL/g;s/= null = null/=null/ig;s/: self//g' -i vendor/league/uri-interfaces/src/Contracts/UriInterface.php -while IFS= read -r line; do l=$(echo "$line" | sed 's/[(].*//g'); sed -i "s/$l.*/$line/g" vendor/league/uri/src/Uri.php; done <<< $(grep 'public function' vendor/league/uri-interfaces/src/Contracts/UriInterface.php | sed 's/;//g;s/: self//g') - -sed -i 's/handleConnectionWindowIncrement[(]\$windowSize[)]/handleConnectionWindowIncrement(int $windowSize)/g' vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php - -sed -ri 's/^\{/{ use \\MyCallableMaker;/g;s/\\Closure::fromCallable[(]\[(.+), (.+)\][)]/\1->callableFromInstanceMethod(\2)/g' vendor/amphp/http-client/src/Connection/Internal/Http2ConnectionProcessor.php vendor/amphp/http-client/src/Connection/Http{2,1}Connection.php +$madelinePath/tests/conversion/prepare-$1.sh $madelinePath/vendor/bin/php7to$1 convert --copy-all vendor newVendor rm -rf vendor mv newVendor vendor -[ $1 -eq 5 ] && { - sed 's/^Loop::set.*;//g' -i vendor/amphp/amp/lib/Loop.php - echo 'Loop::set((new DriverFactory())->create());' >> vendor/amphp/amp/lib/Loop.php - cp $madelinePath/tests/random.php vendor/paragonie/random_compat/lib/random.php - cp vendor/danog/madelineproto/src/danog/MadelineProto/Coroutine.php vendor/amphp/amp/lib/Coroutine.php - sed 's/namespace danog\\MadelineProto;/namespace Amp;/g' -i vendor/amphp/amp/lib/Coroutine.php - sed 's/public static function echo/public static function echo_/g' -i vendor/danog/madelineproto/src/danog/MadelineProto/Tools.php - - sed 's/use Kelunik\\Certificate\\Certificate/use Kelunik\Certificate\Certificate as _Certificate/g;s/new Certificate/new _Certificate/g;s/empty[(]\$metadata[)] [?] null : //g' -i vendor/amphp/socket/src/TlsInfo.php - - echo " vendor/league/uri-interfaces/src/Contracts/UriException.php - -} -find vendor/amphp -type f -name '*.php' -exec sed "s/extension_loaded[(]'zlib'[)]/false/g;s/new[(]/new_(/g;s/clone[(]/clone_(/g" -i {} + - -find vendor/danog/madelineproto -type f -name '*.php' -exec sed 's/: EncryptableSocket/: \\Amp\\Socket\\Socket/g' -i {} + +$madelinePath/tests/conversion/after-$1.sh composer dumpautoload --optimize cd $madelinePath if [ $1 -eq 5 ];then - php5.6 tests/testing.php + php5.6 tests/testing.php $1 else - php7.0 tests/testing.php + php7.0 tests/testing.php $1 fi \ No newline at end of file diff --git a/tests/testing.php b/tests/testing.php index fb4063ea..22d97a05 100755 --- a/tests/testing.php +++ b/tests/testing.php @@ -27,9 +27,9 @@ if (!\file_exists(__DIR__.'/../vendor/autoload.php')) { } include 'madeline.php'; } -} elseif (\file_exists('/tmp/tempConv/vendor/autoload.php')) { +} elseif (isset($argv[1]) && \file_exists("/tmp/tempConv{$argv[1]}/vendor/autoload.php")) { \define('TESTING_VERSIONS', 1); - $loader = require_once('/tmp/tempConv/vendor/autoload.php'); + $loader = require_once("/tmp/tempConv{$argv[1]}/vendor/autoload.php"); } else { require_once 'vendor/autoload.php'; }