Próbuję wygenerować kod pokrycia testowego dla mojego projektu PHP z PHPUnit i phpdbg za pomocą następującego polecenia:PHPUnit zasięg: Dozwolony rozmiar pamięci 536870912 bajtów wyczerpane
phpdbg -dmemory_limit=512M -qrr ./bin/phpunit -c .phpunit.cover.xml
to działa perfekcyjnie:
PHPUnit 6.2.4 by Sebastian Bergmann and contributors.
........ 8/8 (100%)
Time: 114 ms, Memory: 14.00MB
OK (8 tests, 13 assertions)
Generating code coverage report in HTML format ... done
jednak kiedy używam dokładnie to samo polecenie w pojemniku Döcker:
docker run -it --name YM4UPltmiPMjObaVULwsIPIkPL2bGL0T -e USER=sasan -v "/home/sasan/Project/phpredmin:/phpredmin" -w "/phpredmin" --user "1000:www-data" php:7.0-apache phpdbg -dmemory_limit=512M -qrr ./bin/phpunit -c .phpunit.cover.xml
I Pojawia się następujący błąd:
PHPUnit 6.2.4 by Sebastian Bergmann and contributors.
[PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 561514763337856 bytes) in /phpredmin/vendor/phpunit/phpunit/src/Util/GlobalState.php on line 166]
ja nie rozumiem, dlaczego PHPUnit musi przeznaczyć 561514763337856 bajtów pamięci. Podejrzewam, że utknie w pętli, ale dlaczego tak się nie dzieje poza kontenerem? Oto moja wersja PHP na moim komputerze:
PHP 7.0.22-0ubuntu0.17.04.1 (cli) (built: Aug 8 2017 22:03:30) (NTS)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.22-0ubuntu0.17.04.1, Copyright (c) 1999-2017, by Zend Technologies
i tutaj jest plik .phpunit.cover.xml:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.3/phpunit.xsd"
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
cacheTokens="false"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnError="true"
stopOnFailure="true"
stopOnIncomplete="false"
stopOnSkipped="false"
stopOnRisky="false"
timeoutForSmallTests="1"
timeoutForMediumTests="10"
timeoutForLargeTests="60"
verbose="false">
<testsuites>
<testsuite name="PhpRedmin PHP source">
<directory>src-test/</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html" target="cover/" lowUpperBound="35"
highLowerBound="70"/>
</logging>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src-test/</directory>
<directory suffix=".php">src/</directory>
</whitelist>
</filter>
</phpunit>
- Edit1 -
Okazało się, że to ma coś wspólnego z @runInSeparateProcess. Po usunięciu testu z @runInSeparateProcess zaczyna działać. Ale nadal nie wiem co jest problemem
- Edit2 -
Ponadto okazało się, że Jeśli nie montować moje katalogu kodu w kontenerze Docker wszystko działa poprawnie
Jakiego obrazu dokowanego używasz? jest php jako usługa lub jako moduł apache? , spróbuj zwiększyć pamięć php w php.ini –
Na jakim systemie operacyjnym to działasz? –
@JoaquinJavi Jak widać **: php: 7.0-apache **: uruchamianie dockera -it --name YM4UPltmiPMjObaVULwsIPIkPL2bGL0T -e USER = sasan -v "/ home/sasan/Project/phpredmin:/phpredmin" -w "/phpredmin "--user" 1000: www-data "** php: 7.0-apache ** phpdbg -dmemory_limit = 512M -qrr ./bin/phpunit -c .phpunit.cover.xml Nie mogę zwiększyć mojego Limit pamięci do 561514763337856 bajtów –