Záhadné selhání testu testeru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
rfilip
Člen | 20
+
0
-

Začal jsem se seznamovat s Testere a testováním vůbec. Tak jsem si chtěl pustit testy testeru a očekával jsem že proběhnou bez problémů. Nejdřív si stěžovali na na nedefinovanou metodu Tester/json_decode() to jsem nouzově opravil odstraněním „-n“ z volání php aby se načetly všechny ini i ty v adresáři /etc/php5/apache2/conf.d/. Přesto i nadále byly některé testy selhaly:
Příkaz:

user@pc:/var/www$ vendor/bin/tester -p php  vendor/nette/tester/tests

Výsledek:

 _____ ___  ___ _____ ___  ___
|_   _/ __)( __/_   _/ __)| _ )
  |_| \___ /___) |_| \___ |_|_\  v1.1.0

Note: No php.ini is used.
PHP 5.5.9-1ubuntu4 | 'php'  | 33 threads

.......................................FFFF

-- FAILED: tester/tests/Runner.multiple.phpt
   Failed: array(array(...), array(...), array(...), array(...), array(...), array(...)) should be
       ... array(array(...), array(...), array(...), array(...), array(...), array(...), ...)

   diff '/var/www/vendor/nette/tester/tests/output/Runner.multiple.expected' '/var/www/vendor/nette/tester/tests/output/Runner.multiple.actual'

   in Tester/Framework/Assert.php(407)
   in Tester/Framework/Assert.php(56) Tester\Assert::fail()
   in tester/tests/Runner.multiple.phpt(45) Tester\Assert::same()

-- FAILED: tester/tests/Runner.edge.phpt
   Failed: array(3, 'Exited with error code 1 (expected 0)
   Could not open input file: regis...') should be
       ... array(3, 'Exited with error code 231 (expected 0)')

   diff '/var/www/vendor/nette/tester/tests/output/Runner.edge.expected' '/var/www/vendor/nette/tester/tests/output/Runner.edge.actual'

   in Tester/Framework/Assert.php(407)
   in Tester/Framework/Assert.php(56) Tester\Assert::fail()
   in tester/tests/Runner.edge.phpt(38) Tester\Assert::same()

-- FAILED: tester/tests/Runner.multiple-fails.phpt
   Failed: 'Cannot list TestCase methods in file '/var/www/vendor/nette/tester/tes...' should match
       ... 'TestCase in file '%a%testcase-no-methods.phptx' does not contain test ...'

   diff '/var/www/vendor/nette/tester/tests/output/Runner.multiple-fails.expected' '/var/www/vendor/nette/tester/tests/output/Runner.multiple-fails.actual'

   in Tester/Framework/Assert.php(407)
   in Tester/Framework/Assert.php(379) Tester\Assert::fail()
   in tester/tests/Runner.multiple-fails.phpt(42) Tester\Assert::match()

-- FAILED: tester/tests/Runner.annotations.phpt
   Failed: array(array(...), array(...), array(...), array(...), array(...), array(...), ...) should be
       ... array(array(...), array(...), array(...), array(...), array(...), array(...), ...)

   diff '/var/www/vendor/nette/tester/tests/output/Runner.annotations.expected' '/var/www/vendor/nette/tester/tests/output/Runner.annotations.actual'

   in Tester/Framework/Assert.php(407)
   in Tester/Framework/Assert.php(56) Tester\Assert::fail()
   in tester/tests/Runner.annotations.phpt(66) Tester\Assert::same()


FAILURES! (43 tests, 4 failures, 0.8 seconds)

Co to znamená?

Editoval rfilip (10. 5. 2014 21:50)

Milo
Nette Core | 1283
+
0
-

To není obvyklé. Jednu chybu se mi podařilo zreprodukovat.

Zkus namísto odstranění -n vytvořit podobný php.ini a předat ho Testeru parameterem -c php.ini.

Mohl bys také, prosím, někam uploadnout všechny vygenerované *.actual a *.expected? Ve výstupu, který jsi poslal, jsou na řádcích začínající diff.

rfilip
Člen | 20
+
0
-

Takže po spuštění dle tvého návodu všechny testy proběhly v pořádku to znamená že to způsobuje něco v konfiguraci php. Tu jsem nijak neměnil je tak jak se nainstalovala (Ubuntu 14.04), kromě instalace a aktivace xdebug. Složka output jsem nahrál sem.

Milo
Nette Core | 1283
+
0
-

Díky za report. V dumpech se opakuje stále stejná chyba a tak soudím, že to bylo způsobeno Tvoji úpravou. Nicméně k jednomu bugu mě to dovedlo.

https://github.com/…r/issues/129

rfilip
Člen | 20
+
0
-

Jak jsem si ověřil v manuálu k php tak -n pouze způsobí nenačtených výchozích php.ini. Proč tedy testy selžou v normální konfiguraci a musejí se spouštět v speciální?

Milo
Nette Core | 1283
+
0
-

Neexistuje „normální“ konfigurace a „speciální“, ale PHP spuštěné s php.ini a bez něj. Podpora json se relativně nově na Linuxu kompiluje jako modul a moduly se načítají přes php.ini. S parametrem -n se nenačtou a zůstanou pouze části, které byly přímo zakompilovány.