Tester Coverage: Code coverage collector has been already started
- Valicek1
- Člen | 3
Ahoj,
zkouším zprovoznit generování coverage v PHP 7.0.9 (pod Arch Linuxem), Nette, Tester i Testbench jsou aktuální stable. Systém též aktuální. Problém je, že s –coverage padají všechny testy na chybu uvedenou v předmětu. Jak s PHPDBG, tak s XDebug. Moje znalosti bohužel nestačí na odbourání testbench, testy nedokážu spustit bez něj – nemůže to dělat on?
Všechny cache, temp složky a tak dál jsem vyčistil. Aplikace má upravenou strukturu adresářů, tak aby se snadno nahrála na server s IPSConfigem – /www je /web/www, všechny ostatní věci (app, temp, log) byly přesunuty do /web/private. Normální testy chodí pod PHP 5.6.23, PHP 7.0.9 i PHP 7.1.0beta1.
Tester spouštím ze skriptu příkazem
web/private/vendor/bin/run-tests \
--temp web/private/temp/testbench \
--colors 1 \
-p /usr/bin/php-cgi \
--coverage coverage.html \
--coverage-src web/private/app/ \
-c tests/php-coverage.ini \
./tests
s tím, že konfigurace v ini souboru je
[PHP]
extension=pdo_mysql.so
extension=mysqli.so
zend_extension=xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
Po několika hodinách zkoušení se proto obracím na fórum, zdali by jste mi nedokázali poradit, kam se podívat. Zkoušel jsem googlovat, koukat do zdrojáků testeru a evidentně dělám něco špatně, jen nemůžu přijít na to, co.
FAILED: tests/Model/UserManager.authenticate.phpt
Exited with error code 255 (expected 0)
LogicException: Code coverage collector has been already started.
in src/CodeCoverage/Collector.php(28)
in src/Framework/Environment.php(56) Tester\CodeCoverage\Collector::start()
in testbench/src/Bootstrap.php(23) Tester\Environment::setup()
in tojemi.cz/tests/bootstrap.php(27) Testbench\Bootstrap::setup()
in tests/Model/UserManager.authenticate.phpt(10) require()
Děkuji za rady.
EDIT: V Sandboxu to chodí bez problému.
Editoval Valicek1 (24. 7. 2016 1:29)
- mrtnzlml
- Člen | 140
@Valicek1 Ahoj, je to jak píše @Milo. V
dev-master
už lze zavolat Testbench s tímto bootstrapem:
<?php
require __DIR__ . '/../vendor/autoload.php';
\Tester\Environment::setup();
Testbench\Bootstrap::setup(__DIR__ . '/_temp', function (Nette\Configurator $configurator) {
//...
});
V tomto případě je ohlídáno, že Testbench
Tester\Environment::setup
nezavolá znovu. Pokud bys měl však
toto volání v té closure (na místě tří teček), tak to nebude fungovat,
protože to za tebe Testbench vše nastaví a Tester se to pak pokusí nastavit
ještě jednou, což vyhodí tu LogicException
.
Dnes vydám novou stabilní verzi.