除非指定了–use-color,否则测试单元将使用控制台而不是tmux生成颜色

如果我创建一个新的Rails(3.2.12)应用程序。 将test-unit gem添加到我的开发,测试组,然后是scaffolded资源。 当我从Mac console.app运行测试时,我得到了颜色输出。

 bundle exec rake test 

当我为应用程序创建一个tmux会话(在console.app中)并运行完全相同的命令。 我没有得到颜色输出。 但是,如果我通过“–use-color”开关,那么我会在tmux中获得测试的颜色输出。

 bundle exec rake test TESTOPTS="--use-color" 

我在我的tmux.config使用set -g default-terminal "screen-256color"设置256种颜色。 当我在没有TESTOPTS的情况下运行rake任务时,我知道为什么我没有在tmux中获得颜色?

似乎测试单元通过(主要)查看TERM环境变量来猜测终端是否支持颜色。 不幸的是, screen-256color不满足它所做的检查 。

可能有理由要求将其对screen识别扩展到包括screen-256color

我认为您可以删除配置文件中的一些条目以提供默认参数。 将test-unit.yml (在当前目录中)或~/.test-unit.yml (主目录中的“隐藏”文件)中的第一个:

 runner: console console_options: arguments: --use-color=yes