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?
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.
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.