test run rails example docs describe rspec rspec2

run - Cómo forzar ejecutar todas las especificaciones de RSpec ignorando: etiqueta de enfoque



rspec subject (4)

Dada la siguiente configuración RSpec (v2.12.0):

RSpec.configure do |config| config.treat_symbols_as_metadata_keys_with_true_values = true config.filter_run :focus => true config.run_all_when_everything_filtered = true end

A veces las personas olvidan eliminar la etiqueta :focus de las especificaciones y en un entorno de integración continua donde queremos que se ejecuten todas las especificaciones, solo se ejecutan las especificaciones con la etiqueta sobrante :focus .

He intentado:

rspec --tag ~focus

... que ejecuta todas las especificaciones, excepto las etiquetadas con: focus

¿Hay alguna manera de forzar la ejecución de TODAS las especificaciones ignorando las etiquetas usando las opciones de línea de comandos de rspec?


Puedes eliminar las líneas:

config.filter_run :focus => true config.run_all_when_everything_filtered = true

y dile a los usuarios que rspec --tag focus pruebas enfocadas con rspec --tag focus . De esta forma, el CI siempre ejecutará el conjunto de pruebas completo.

Puede considerar verificar el entorno en el bloque de configuración e incluir / excluir la configuración filter_run adecuada.

Otro pensamiento: si está usando git, establezca un gancho de precompromiso para evitar las especificaciones con :focus arrastra hacia la base de códigos en primer lugar.


Acabo de agregar esto a un proyecto:

config.before :focused => true do fail "Hey dummy, don''t commit focused specs." if ENV[''FORBID_FOCUSED_SPECS''] end

Y en el script que ejecuta nuestro servidor de integración continua:

export FORBID_FOCUSED_SPECS=true


Quería fallar automáticamente en nuestro servidor de integración continua cuando se estableció el foco. Esto fue reescrito en base al código de myronmarston para que funcione correctamente con rspec-rails 3.2.0:

config.before(:example, :focus) do fail ''This example was committed with `:focus` and should not have been'' end if ENV[''CI'']


Pruebe: rspec --tag focus --tag ~focus