Nefunguje příkaz na testera v projektu

Tomáš Krucký
Člen | 5
+
0
-

Ahoj všem,

už třetí den řeším stejný problém a nemůžu přijít na řešení.
Chtěl jsem vyzkoušet pokrytí kódu v Nette Testerovi s využitím hezkého výpisu. Zahlásil, že potřebuji rozšíření tak jsem zvolil Xdebug. Zkoušel jsem různá nastavení v php.ini souboru a stále mi hlásil, že není použit žádný již zmíněný soubor, i když jsem zadával příkaz ať si vezme ten s absolutní cestou.
Každopádně, jelikož jsem začátečník a nevím jestli vše dělám správně, rozhodl jsem se, že vše přeinstaluju jestli jsem neudělal nějakou botu (PHP, Composer včetně balíčků a Xdebug).
Bohužel, teď to mám ještě v horším stavu, jelikož u projektů před reinstalací mi příkaz vendor/bin/tester v projektech funguje, ale u nově vytvořených projektů mi tento příkaz hlásí “permission denied”.

Předem vám mockrát děkuju za pomoc, já už si vážně nevím rady.

nightfish
Člen | 505
+
0
-
  1. Jaký používáš operační systém?
  2. Z jakého adresáře a jakým příkazem spouštíš nette tester?
  3. Jak přesně vypadá chybová hláška? (ideálně copy/paste z konzole/command line, kde bude vidět jak spuštění, tak celý výstup)
Tomáš Krucký
Člen | 5
+
0
-

Používám macOS na procesoru Apple Silicon. Založím nový projekt, třeba composer create-project nette/web-project pokus , otevřu projekt ve VScode, kde zadám příkaz

~/Desktop/test/pokus ✔  20:48:17
vendor/bin/tester
zsh: permission denied: vendor/bin/tester

Když v adresáři /opt/homebrew/etc/php/8.2 zadám ten stejný příkaz, tak se mi tester v terminálu mimo projekt spustí. Jak už jsem psal, v projektech, které byly založeny před pár dny tak stejný příkaz normálně funguje a v terminálu VSka se mi Tester spustí.

nightfish
Člen | 505
+
0
-

Co se stane, když ve stejném adresáři spustíš php vendor/bin/tester nebo php8.2 vendor/bin/tester?

nightfish
Člen | 505
+
0
-

A ještě můžeš zkusit spustit chmod +x vendor/bin/tester a pak spustit přímo vendor/bin/tester – je možné, že ten skript nemá nastavený executable příznak…

EDIT: typo

Editoval nightfish (8. 9. 2023 21:23)

Tomáš Krucký
Člen | 5
+
0
-

Super děkuju moc! Moc mi to pomohlo!
Příkaz php vendor/bin/tester fungoval a když jsem zkusil nastavit práva, tak funguje i bez php. Napadá tě, proč před tím mi to šlo a teď mi to nešlo? V čem asi mohl být problém? Prakticky jsem jenom provedl přeinstalování všeho (PHP, Composer a Xdebug), tak je možné, že to na to mělo vliv?

A ještě mám jednu otázku. Věc kvůli které to celé vzniklo. Když se snažím nastavit funkci
vendor/bin/tester/ --coverage /Desktop/test/pokus/test
tak mi to hlásí:

Note: No php.ini is used.
Error: Code coverage functionality requires Xdebug or PCOV extension or PHPDBG SAPI (used php -n)

Když jsem zkoušel Xdebug nastavit v php.ini tak přesné nastavení tam mám takhle:

[xdebug]
zend_extension=„xdebug.so“
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003

Nebo mám ještě něco nastavit? Z návodů na internetu jsem nebyl moc moudrý. Jestli máš nějaký tip budu moc vděčný!

mystik
Člen | 300
+
+2
-

Kdyz spoustis tester tak nepouziva systemovy php.ini pokud mu to explicitne nereknes larametrem -C.

Tomáš Krucký
Člen | 5
+
0
-

To jsem právě zkoušel:

/Applications/XAMPP/xamppfiles/htdocs/pokus 22:33:22
vendor/bin/tester -C
PHP 8.2.10 (cli) | php | 8 threads
F
FAILED: RectangleTest.php
Failed: 200.0 should be 200
in pokus/tests/RectangleTest.php(8) Assert::same(200, $rect->getArea()); # ověříme očekávané výsledky
FAILURES! (1 test, 1 failure, 0.0 seconds)

/Applications/XAMPP/xamppfiles/htdocs/pokus 22:33:33
vendor/bin/tester --coverage /Applications/XAMPP/xamppfiles/htdocs/pokus/tests

Note: No php.ini is used.

Error: Code coverage functionality requires Xdebug or PCOV extension or PHPDBG SAPI (used php -n)

Vždy mi ten příkaz testy spustí, ale php.ini se mi nenastaví. Zkoušel jsem si absolutní cestu mu zadat a žádná změna.

mystik
Člen | 300
+
+1
-

Ale u toho volani coverage ti -C chybi. Takze se nenacte php.ini, neni nastaveny xdebug a proto ta chyba.

Tomáš Krucký
Člen | 5
+
0
-

Už rozumím. Moc děkuju. Tohle mě vážně nenapadlo za ty tři dny udělat. Oběma moc děkuju za pomoc. Byl už jsem hodně z toho frustrovaný. Všechno funguje jak má! 🙂