J'exécute rspec manuellement (sans la commande rspec
) et je souhaite définir la configuration des couleurs sur true.
J'ai essayé:
RSpec.configure do |c|
c.tty = true
c.color = true
end
p RSpec.configuration.tty? # => true
p RSpec.configuration.color? # => false
Et comme vous pouvez le voir, cela ne fonctionne pas.
En regardant la méthode output_to_tty?
:
def output_to_tty?
begin
output_stream.tty? || tty?
rescue NoMethodError
false
end
end
Je suppose qu'il lance NoMethodError
sur output_stream.tty ? et retournant false - par conséquent, la couleur ne peut pas être activée, car l'option color dépend de cette méthode retournant true.
Alors, comment puis-je (avec du code) forcer la configuration des couleurs à true ?
RSpec.configure do |c|
def c.color; true; end
end
Certes, un hack, mais ce n'est pas grave puisque vous utilisez RSpec d'une manière pour laquelle il n'est pas vraiment conçu.
Cela fonctionne très bien - merci de me soutenir avec cela.
J'ai trouvé que --color --tty
faisait ce travail pour moi. Mes tests s'exécutent dans un système d'intégration continue sans tête qui n'écrit pas sur un TTY, mais le système CI peut capturer la sortie colorée et la restituer de manière appropriée dans un navigateur Web, nous voulions donc utiliser la couleur si possible.
Commentaire le plus utile
J'ai trouvé que
--color --tty
faisait ce travail pour moi. Mes tests s'exécutent dans un système d'intégration continue sans tête qui n'écrit pas sur un TTY, mais le système CI peut capturer la sortie colorée et la restituer de manière appropriée dans un navigateur Web, nous voulions donc utiliser la couleur si possible.