Rspec-core: 没有 tty,你怎么能强制颜色?

创建于 2012-08-25  ·  3评论  ·  资料来源: rspec/rspec-core

我正在手动运行 rspec(没有rspec命令),并且我想将颜色配置设置为 true。

我试过了:

RSpec.configure do |c|
  c.tty = true
  c.color = true
end

p RSpec.configuration.tty? # => true
p RSpec.configuration.color? # => false

正如你所看到的那样是行不通的。

查看output_to_tty?方法:

def output_to_tty?
  begin
    output_stream.tty? || tty?
  rescue NoMethodError
    false
  end
end

我猜它在 output_stream.tty 上抛出了NoMethodError ? 并返回 false - 因此,无法启用颜色,因为颜色选项取决于返回 true 的此方法。

那么我如何(使用代码)强制颜色配置为真?

最有用的评论

我发现--color --tty对我有用。 我的测试在一个没有写入 TTY 的无头持续集成系统中运行,但是 CI 系统可以捕获彩色输出并在 Web 浏览器中适当地呈现它,因此我们希望尽可能使用颜色。

所有3条评论

RSpec.configure do |c|
  def c.color; true; end
end

不可否认,这是一种黑客行为,但这没关系,因为您以一种并非真正设计的方式使用 RSpec。

这很好用 - 谢谢你支持我。

我发现--color --tty对我有用。 我的测试在一个没有写入 TTY 的无头持续集成系统中运行,但是 CI 系统可以捕获彩色输出并在 Web 浏览器中适当地呈现它,因此我们希望尽可能使用颜色。

此页面是否有帮助?
0 / 5 - 0 等级