Почему PHPUnit в Hudson CI использует мой путь к локальному хосту И мой фактический путь к файлу? - PullRequest
0 голосов
/ 10 июля 2010

РЕДАКТИРОВАТЬ 3: Решено. См. Ниже.

РЕДАКТИРОВАТЬ 2: Я думаю, что Чедвик справатрек с его комментарием. Hudson / PHPUnit берет localhost (рабочую область Hudson) И мою локальную файловую структуру и использует оба для запуска модульных тестов. Таким образом, переделывается все, что уже было объявлено.Почему это происходит и как я могу это изменить?

С тех пор, как сообщил об этой проблеме на сервере JIRA Хадсона .Если я получу разрешение там, я опубликую здесь.В противном случае, любая помощь будет принята с благодарностью, так как мои сборки теперь никуда не ведут.

Моя сборка продолжает давать сбои, и я не могу понять, почему.Вот что я получаю.

phpunit:
[exec] PHP Fatal error:  Cannot redeclare generate_options() (previously declared in
<http://localhost:8080/job/Goals/ws/Goals/includes/functions/registration_fns.php>:5) in /Users
/joshsmith/Sites/Goals/Goals/includes/functions/registration_fns.php on line 32

Но эта конкретная функция начинается со строки 5 и заканчивается строкой 32!Так что же здесь происходит в мире?

И точно так же вы знаете, что PHPUnit работает самостоятельно за пределами Гудзона.Вот мой вывод терминала после успешного выполнения теста:

Macintosh:goals joshsmith$ phpunit alltests.class
PHPUnit 3.4.14 by Sebastian Bergmann.

.............................

Time: 14 seconds, Memory: 9.75Mb

OK (29 tests, 67 assertions)

Может кто-нибудь помочь мне разобраться с этим безумием?

РЕДАКТИРОВАТЬ: По совету Чедвика я попытался переименоватьфункция в случае, если она пытается переопределить функцию, внутреннюю по отношению к Хадсону.Это не сработало, и это явно неясная проблема.

Ответы [ 2 ]

1 голос
/ 11 июля 2010

Это было решено.Это была проблема, когда я жестко закодировал пути в одном файле инициализатора.В результате они были объявлены PHPUnit.

0 голосов
/ 11 июля 2010

Похоже, что generate_options() объявлен как в вашем registration_fns.php файле, так и в каком-то файле Хадсоном. Имена функций PHP носят глобальный характер, поэтому это риск, связанный с объединением кода сторонних разработчиков.

Один из способов обойти это - переименовать одну из функций (и, конечно, все вызовы к ней) - вы можете изменить код Хадсона там, где он объявлен, или изменить свой собственный, но лично я рекомендую изменить свою. Если вы обновите Hudson в будущем, вам, вероятно, придется изменить его снова.

Начиная с PHP 5.3, вы также можете использовать пространства имен .

...