Rspec-core: Wie kann man Farbe ohne tty erzwingen?

Erstellt am 25. Aug. 2012  ·  3Kommentare  ·  Quelle: rspec/rspec-core

Ich führe rspec manuell aus (ohne den Befehl rspec ) und möchte die Farbkonfiguration auf true setzen.

Ich habe es versucht:

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

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

Und wie Sie sehen, funktioniert das nicht.

Betrachten Sie die Methode output_to_tty? :

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

Ich vermute, dass es NoMethodError auf output_stream.tty wirft? und gibt false zurück - daher kann Farbe nicht aktiviert werden, da die Farboption davon abhängt, dass diese Methode true zurückgibt.

Wie kann ich (mit Code) die Farbkonfiguration auf "true" erzwingen?

Hilfreichster Kommentar

Ich fand, dass --color --tty diese Arbeit für mich gemacht hat. Meine Tests laufen in einem Headless Continuous Integration System, das nicht in ein TTY schreibt, aber das CI-System kann die farbige Ausgabe erfassen und entsprechend in einem Webbrowser rendern, daher wollten wir nach Möglichkeit Farbe verwenden.

Alle 3 Kommentare

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

Zugegeben ein Hack, aber das ist in Ordnung, da Sie RSpec auf eine Weise verwenden, für die es nicht wirklich konzipiert ist.

Das funktioniert super - vielen Dank, dass Sie mich dabei unterstützen.

Ich fand, dass --color --tty diese Arbeit für mich gemacht hat. Meine Tests laufen in einem Headless Continuous Integration System, das nicht in ein TTY schreibt, aber das CI-System kann die farbige Ausgabe erfassen und entsprechend in einem Webbrowser rendern, daher wollten wir nach Möglichkeit Farbe verwenden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen