Что не так с управляющими символами в инструменте командной строки PHPUnit? - PullRequest
11 голосов
/ 30 декабря 2011

Когда я запускаю 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<, являются некими управляющими символами и должны использоваться консолью по-другому (позиционирование курсора, удаление символов и т. Д.)

Что здесь может быть не так?

Ответы [ 5 ]

11 голосов
/ 30 декабря 2011

Либо просто используйте https://github.com/adoxa/ansicon/releases, чтобы получить цвета ANSI на окнах.

Исходный код: https://github.com/adoxa/ansicon

11 голосов
/ 30 декабря 2011

Это происходит потому, что вы настроили phpunit для использования цветов.

<phpunit colors="true"

, но, к сожалению, невозможно создать цветной вывод на терминале Windows.

Существует открытый выпуск to not show those chars on windows where they can't be translated into colors на трекере проблем phpunit , и я работаю над патчем для этого.

Сейчасвсе, что вы можете сделать, это принять его или удалить color="true" из вашего файла конфигурации phpunit.xml.

4 голосов
/ 08 марта 2013

Я только недавно столкнулся с этой же проблемой, пытаясь запустить phpunit из командной строки в git bash на windows 7. Проведя некоторые исследования возможных различных решений, я решил поделиться здесь решением, которое я выбрал для себя.

Вы можете отфильтровать символы управления цветом ANSI из git bash.Создайте файл с именем phpunit (примечание: сам скрипт phpunit не был в моем пути, и я в основном выполнял модульные тесты только из intellij) и поместите его в любое место в вашем $PATH (я сам предпочитаю ~/bin, но нетправило об этом):

#!/bin/sh
/path/to/phpunit "$@" 2>&1 | perl -pe 's/(?<=\e\[)2;//g'

"$@" говорит bash взять остальные аргументы, переданные скрипту, и направить их в phpunit.2>&1 перенаправляет stderr в stdout , гарантируя, что любые управляющие символы, сгенерированные при создании вывода ошибок, также будут отфильтрованы.

Наконец, весь произведенный выводphpunit передается через perl и проходит через регулярное выражение 's/(?<=\e\[)2;//g', которое удаляет управляющие символы.

Конечный результат заключается в том, что phpunit работает нормально, независимо от того, что <phpunit colors="" настройка, которую вы используете.

Надеюсь, это поможет!

0 голосов
/ 04 апреля 2014

Точно так же, как они сказали, это работает для меня.

Перейдите в .bashrc в вашем каталоге ~ / и добавьте

alias phpunitc="phpunit "$@" 2>&1 | perl -pe 's/(?<=\e\[)2;//g'"

Затем я просто использую phpunitc в git bash.Все параметры, которые вы отправляете в phpunit, также будут проходить.

0 голосов
/ 19 июня 2013

Спасибо Дэнни, ваш ответ был очень полезен.

Для пользователей, которые хотят реализовать это, несколько советов:

  1. поместите код от Дэнни в файл оболочки (например,~ / .phpunit.sh)
  2. добавить псевдоним phpunit в ~ / .bashrc (просто добавьте следующую строку).Если у вас еще нет .bashrc, просто создайте пустой файл.

    alias phpunit = "~ / .phpunit.sh"

  3. закройте bash иоткройте его снова

  4. все должно работать, но проверьте это, чтобы убедиться.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...