将ruby Curses重定向到/ dev / null

时间:2013-03-25 17:55:46

标签: ruby rspec curses

我正在尝试为使用Ruby的Curses库的应用编写规范。诅咒显然垄断终端屏幕,所以我尝试将rspec的输出重定向到文件。这在很大程度上是有效的,但是我的一些失败的规格缺少信息,我认为RSpec正在将其部分输出打印到$ stdout。

我已经尝试将Curses库配置为不打印到屏幕上,但无济于事。有没有办法禁用Curses输出,以便测试可以正常运行?

2 个答案:

答案 0 :(得分:0)

尝试Curses.close_screen,当您决定恢复诅咒的输出时,请致电Curses.refresh

答案 1 :(得分:0)

我有一个配置标志,指​​定是否执行curses输出。对于单元测试,我禁用了curses输出。

此外,在运行时我测试以查看stdout和stderr是否为tty;如果没有,他们被重定向到文件,我不想要curses输出。它看起来像这样:

  def do_curses_output?
    $stdin.isatty && $stdout.isatty && want_curses_output
  end

  def foo
    if do_curses_output?
      # ... do the curses stuff
    end
  end

- 基思