Когда я запускаю phpunit из командной строки, управляющие символы распечатываются вместо того, чтобы действовать как управляющие символы. Взгляните на это:
PHPUnit 3.6.5 by Sebastian Bergmann.
Configuration read from app\phpunit.xml.dist
...
Time: 1 second, Memory: 12.00Mb
‹[30;42m‹[2KOK (3 tests, 3 assertions)
‹[0m‹[2K
Я предполагаю, что такие знаки, как ‹[30;42m<
, являются своего рода управляющими символами и должны использоваться консолью по-другому (позиционирование курсора, удаление символов и т. Д.)
Что тут может быть не так?
Перекрестная ссылка: Как увидеть цветной вывод Ant в MSYS / Git Bash? — person Dawid Ohia schedule 31.12.2011
Суперпользователь: Командное окно PHPUnit Windows приятных цветов — person Dawid Ohia schedule 25.06.2013
Это происходит потому, что вы настроили phpunit для использования цветов.
но, к сожалению, невозможно создать цветной вывод на терминале Windows.
Есть открытая проблема
to not show those chars on windows where they can't be translated into colors
</ a> на трекере проблем phpunit, и я работаю над патчем для этого.На данный момент все, что вы можете сделать, это принять его или удалить
color="true"
из файла конфигурации phpunit.xml.Почему он должен вызывать уведомление, когда его явно просили указать цветовые коды ANSI? — person Dawid Ohia; 30.12.2011
@hakre Чтобы сообщить вам, что он не поддерживается в Windows, и поэтому вы знаете, что вам следует отключить его в своей конфигурации. В конце концов, это проблема, с которой столкнулся OP, и ему не нужно было бы спрашивать, было ли уведомление. — person Dawid Ohia; 30.12.2011
Что ж, если это ваша конфигурация, то вы, должно быть, включили ее, не так ли? Вероятно, установщик груши должен позаботиться о значениях по умолчанию, зависящих от платформы, но это будет проблемой упаковки, а не внутри самого PHPUnit. — person Dawid Ohia; 30.12.2011
@harke не обязательно. вы можете работать с кем-то еще, кто работает на Linux, и он / она его включил, а затем вы обновляете свое локальное репо, и тогда у вас есть символы ctrl. это действительный запрос, чтобы сообщить людям о несовместимых настройках. Я не понимаю, о чем спорить. — person Dawid Ohia; 30.12.2011
@hakre Если я найду способ определить, совместим ли терминал по цвету, мы воспользуемся этим. Если нет, я просто включаю его для окон stdout — person Dawid Ohia; 30.12.2011
@Gordon: Тогда, наверное, лучше настроить его в bootstrap.php, а не в XML-файле. Например. добавьте предупреждение, если вы обнаружите, что ваш конкретный случай требует предупреждения в вашем проекте. У Писателя есть другие дела. — person Dawid Ohia; 30.12.2011
@edorian: Вероятно, создайте
MonchromeOnWindowsTextWriter
, который будет работать по назначению. — person Dawid Ohia; 30.12.2011Или просто используйте https://github.com/adoxa/ansicon/releases, чтобы получить цвета ansi. на окнах.
Исходный код: https://github.com/adoxa/ansicon
Намного лучше, чем варианты, которые я нашел. Приятно знать, что существует — person Dawid Ohia; 30.12.2011
он не работает, вы можете перезагрузить его. — person Dawid Ohia; 18.08.2012
Обновленный URL-адрес — adoxa.altervista.org/ansicon, который можно найти по ссылке на github. Используйте ansicon -i для постоянной установки для текущего пользователя (или -I для локальной машины). Также включает цвета для Git Bash в Windows. — person Dawid Ohia; 09.05.2014
Я недавно столкнулся с той же проблемой при попытке запустить phpunit из командной строки в git bash в Windows 7. Проведя некоторое исследование возможных различных решений, я решил поделиться решением, которое я решил реализовать для себя, здесь.
Вы можете отфильтровать управляющие символы цвета ANSI из git bash. Создайте файл с именем
phpunit
(примечание: фактического скрипта phpunit не было на моем пути, и я в основном запускал модульные тесты только из intellij) и поместите его в любом месте вашего$PATH
(я предпочитаю~/bin
, но для этого нет никаких правил):"[email protected]"
сообщает bash, что нужно принять остальные аргументы, переданные в сценарий, и направить их в phpunit.2>&1
перенаправляет stderr на stdout, гарантируя, что любые управляющие символы, генерируемые при выводе ошибок, также будут отфильтрованы.Наконец, весь вывод, производимый phpunit, передается по конвейеру через perl и проходит через регулярное выражение
's/(?<=\e\[)2;//g'
, которое удаляет элемент управления символы.Конечным результатом является то, что phpunit работает нормально, независимо от того, какой
<phpunit colors=""
параметр вы используете.Надеюсь это поможет!
Спасибо Дэнни, ваш ответ был очень полезным.
Для пользователей, которые хотят это реализовать, несколько советов:
добавьте псевдоним phpunit в ~ / .bashrc (просто добавьте следующую строку). Если у вас еще нет .bashrc, просто создайте пустой файл.
псевдоним phpunit = «~ / .phpunit.sh»
закрой свой баш и снова открой
Как они и сказали, у меня это сработало.
Перейдите в .bashrc в вашем каталоге ~ / и добавьте
Затем я просто использую phpunitc в git bash. Все параметры, которые вы отправляете в phpunit, также будут переданы.