在
Windows 7上的
Git Bash中,我偶尔会发生一些事情,导致运行黄瓜情景或rspec规格时颜色编码失败.
偶尔,它是随机固定的(随机的我不知道我做了什么,导致它被修复).
所以当我跑:
- $bundle exec cucumber features
要么
- $bundle exec rspec spec
而不是看到这个颜色:
- ......
- 3 scenarios (3 passed)
- 6 steps (6 passed)
我看到像:
- [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
- 3 scenarios ([32m3 passed[0m)
- 6 steps ([32m6 passed[0m)
我知道这些是颜色的代码表示,但我不知道为什么它停止显示颜色,也不知道如何解决它.我失踪了什么
git config的输出–list:
- core.symlinks=false
- core.autocrlf=true
- color.diff=auto
- pack.packsizelimit=2g
- help.format=html
- http.sslcainfo=/bin/curl-ca-bundle.crt
- sendemail.smtpserver=/bin/msmtp.exe
- user.name=John Uhri
- user.email= *****
- color.branch=auto
- color.diff=auto
- color.interactive=auto
- color.status=auto
- core.repositoryformatversion=0
- core.filemode=false
- core.bare=false
- core.logallrefupdates=true
- core.symlinks=false
- core.ignorecase=true
- core.hidedotfiles=dotGitOnly
- remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
- branch.master.remote=origin
- branch.master.merge=refs/heads/master
在windows上,git Bash使用内置的终端,该终端会滚动到cmd提示符下.如果安装cygwin,您可以使用mintty终端仿真器(在开始菜单上安装为“Cygwin终端”).
为什么这很重要?因为windows cmd提示术语不解释ANSI转义序列.它使用M $颜色控制方案.如果您正在使用的程序不会在Windows上切换到此方案,或者通过过滤器,那么您将看到原始的转义字符. Cygwin的软件控制台完全支持这些代码.
如果颜色通常工作,这是黄瓜/ rspec从移植中的错误.有人在打印颜色或某物时错过了窗口的检查.直到这个修复,一个工作是以下python脚本:
- #!/usr/bin/env python
- # Filter ANSI escapes from stdin to stdout
- from __future__ import print_function
- from colorama import init
- import sys
- init()
- for line in sys.stdin.readlines():
- print(line)
- $bundle exec rspec spec | colorFilter.py