Что не так с управляющими символами в инструменте командной строки PHPUnit?

Когда я запускаю 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

См. также:  Переместить код исходного файла группы в определенный раздел сценария компоновщика
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 5
  1. Dawid Ohia

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

    <phpunit colors="true"
    

    но, к сожалению, невозможно создать цветной вывод на терминале 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

  2. Dawid Ohia

    Или просто используйте 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

  3. Dawid Ohia

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

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

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

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

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

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

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

  4. Dawid Ohia

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

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

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

      псевдоним phpunit = «~ / .phpunit.sh»

    3. закрой свой баш и снова открой

    4. теперь все должно работать, но проверьте это, чтобы убедиться.
  5. Dawid Ohia

    Как они и сказали, у меня это сработало.

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

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

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

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: