Nette\Tester error: Namespace declaration

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

Ahoj, podle článku Velestručné testování presenterů v Nette zkouším rozchodit testy. Podle návodu v článku jsem pomocí composeru stáhnul sandbox, kde je připravený bootstrap.phpukázkový test.

Pokud v příkazovém řádku ve složce tests spustím test pomocí

php ../libs/nette/tester/Tester/tester.php ExampleTest.phpt

test skončí chybou:

<b>Fatal error</b>: Namespace declaration statement has to be the very first statement in the script in <b>C:\Program Files (x86)\EasyPHP-12.0\www\tmp\sandboxWithTests2\tests\ExampleTest.phpt</b>
on line <b>3</b><br />

Co mě zaráží je, že když ze začátku souboru ExampleTest.phpt odmáznu <?php (a tím pádem bude jako první na začátku souboru deklarace namespace), test projde. Každopádně když namísto

Assert::true( true );

napíšu

Assert::false( true );

test projde taky.

Už tu s tím chvíli zápasím, zkoušel jsem projít jiné příspěvky, ale nic mi nepomohlo. Pokud mi poradíte, jakým způsobem se zbavit erroru s namespace a zařídit, aby test neprošel pomocí Assert::false( true ); budu Vám vděčný.

Předem díky.

David Grudl
Nette Core | 8218
+
0
-

Není tam BOM?

xlilien
Člen | 27
+
0
-

Je fakt, že když pomocí Notepad++ kovertuju formát souboru do UTF-8 bez BOM, tak se problém s namespace vyřeší. Nicméně potom nastává chyba s mb_convert_encoding. Buď je tedy formát UTF-8 s chybou s namespaces nebo UTF-8 bez BOM a s chybou mb_convert_encoding.

xlilien
Člen | 27
+
0
-

Podařilo se mi to rozchodit, problém bude pravděpodobně v nastavení mého prostředí.

Do složky tests stáhnu Hosiplanovo run-tests.sh (zmiňovaný u něj na blogu) a vytvořím soubor php.ini-unix, do kterého nakopíruju konfiguraci z php.ini. V GitBash potom spustím run-tests.sh a testy projdou.

jiri.pudil
Nette Blogger | 1029
+
0
-

Když totiž Nette\Testeru neřekneš, jaký konfigurační soubor má použít (-c), nepoužije žádný. Tipuji, že problém byl v tom.