Nette\Tester bez Composeru

Pokoušel jsem se zprovoznit Nette\Tester bez nutnosti instalace přes Composer. S Testerem se teprve seznamuju, takže napoprvé to bylo trochu ošemetné. Na řadu přišla metoda pokus-omyl, protože žádný návod jsem na to nenašel. Nakonec to ale není nijak složité.

Vycházím ze sandboxu z oficiálního downloadu. K němu jsem stáhnul aktuální release Nette\Tester a uložil ho do složky libs/tester.

Když bychom teď zkusili spusit test, skončí chybovou hláškou:

Install Nette Tester using `composer update --dev`

Musíme upravit soubor test/bootstrap.php ze sandboxu. Najdeme řádky:

if (!class_exists('Tester\Assert')) {
    echo "Install Nette Tester using `composer update --dev`\n";
    exit(1);
}

a přepíšeme je na:

if (@!include __DIR__ . '/../libs/Tester/Tester/bootstrap.php') {
    echo "Install Nette Tester using `composer update --dev`\n";
    exit(1);
}

V tuto chvíli by mělo všechno fungovat. Pokud ale používáte WAMP, dost možná se jen místo jedné chyby objeví chyba nová:

-- FAILED: sandbox\tests\ExampleTest.phpt
   Exited with error code 255 (expected 0)
   Fatal error: Call to undefined function Nette\Utils\mb_convert_encoding() in ... on line 61

Je to dáno tím, že PHP spouštěné z příkazové řádky používá jiné nastavení než když spouštíte aplikace v browseru. Aktivovat rozšíření php_mbstring přes menu v system tray tedy nepomůže.

Místo toho si stáhněte tento soubor a umístěte ho do adresáře s vašimi testy. Nyní by již vše mělo fungovat:

c:\www\sandbox>php libs/Tester/Tester/tester -c tests/php-win.ini tests
PHP 5.4.3 | "php-cgi" -c "C:\www\sandbox\tests\php-win.ini" | 1 threads

.

OK (1 tests, 0 skipped, 0.1 seconds)