2011-02-03 15 views
5

En las versiones de RSpec anteriores a 2.0 podía canalizar la salida de color a menos o redirigirla a un archivo. Para hacerlo simplemente tengo que establecer la variable de entorno RSPEC_COLOR en verdadero. Sin embargo, en la nueva versión principal del marco, esta variable se detuvo para definir el tipo de salida (color o monchrome). ¿Hay alguna forma de canalizar o redirigir el color en RSpec 2.0 y superior?RSpec. ¿Cómo colorear la salida canalizada o redirigida?

Gracias.

Debian GNU/Linux 5.0.7;

Ruby 1.9.2;

RSpec 2.4.0.

Actualizado


he encontrado la respuesta por mí mismo.

Se debe utilizar la opción de configuración tty para lograr el efecto.

Aquí está el ejemplo:

# spec/spec_helper.rb 

RSpec.configure do |config| 
    config.tty = true 
end 

Respuesta

1

Al observar el sources, parece que la opción de configuración color_enabled se encuentra ahora en el módulo de configuración de RSpec. Sin embargo, si la salida no se realiza en un tty, color is disabled.

Mi sugerencia sería que establece color_enabled = true y mono parchear el módulo de configuración RSpec por lo que es funciona incluso cuando no está la salida a un TTY:

module RSpec 
    module Core 
    class Configuration 
     def color_enabled 
     true 
     end 
    end 
    end 
end 

Ésta no es la manera más agradable, sin embargo. Esto tampoco ha sido probado y creo que el parche de mono rspec no es lo más fácil de hacer porque generalmente las pruebas se ejecutan a través de la herramienta de línea de comando dedicada.

¿Tal vez podría abrir un informe de error al responsable y solicitar una opción force_color_enabled? Probablemente sería muy rápido de implementar ...

¡Buena suerte y feliz codificación!

+0

Gracias por la respuesta, ** Oct **. Lo abordo por mi cuenta. Vea la sección ** Actualizado ** en mi respuesta. – Shamaoke

+0

Por cierto, tenía un [issue] (https://github.com/rspec/rspec-core/issues/326) abierto en Github, pero no obtuve respuesta y tuve que buscar la solución por mi cuenta. – Shamaoke

+0

¡Funciona muy bien con esta configuración! Solo para agregar, una [edición] relevante posterior (https://github.com/rspec/rspec-core/issues/665) aquí. – EricC

1

Es tan simple como:

# spec/spec_helper.rb 

RSpec.configure do |config| 
    config.color_enabled = true 
end 
+1

** Sam **, la pregunta no era sobre cómo colorear la salida, sino cómo preservar las etiquetas de color cuando se redirigía la salida a buscapersonas o archivos. Mira: 'config.color_enabled = true'; '$ rspec spec/| menos # => monocromo' pero 'config.tty = verdadero; config.color_enabled = true'; '$ rspec spec/| menos # => color'. – Shamaoke

1

La respuesta en la pregunta es la correcta:

# spec/spec_helper.rb 

RSpec.configure do |config| 
    config.tty = true 
end 

Entonces rspec | grep --color="never" something mantiene la coloración.

Cuestiones relacionadas