Hola,
He estado empaquetando algunos rubygems para GNU Guix, y una cosa que me gustaría hacer ocasionalmente es deshabilitar ejemplos específicos. Supongo que es lo opuesto a la bandera rspec --example
. Esto es útil cuando, por ejemplo, ciertas pruebas pueden ser fallas conocidas, porque el sistema de compilación automatizado requiere un estado de salida cero cuando se ejecuta la fase de 'verificación' (para indicar que todas las pruebas pasan).
Existen soluciones, por ejemplo, parchear los archivos de prueba, pero nos facilitaría la vida si pudiéramos pedirle a rspec que lo haga por nosotros. ¿Existe alguna forma de hacer esto o este problema es una solicitud de función?
Gracias,
ben
Puede filtrar ejemplos de muchas maneras, a través de metadatos y --tag
por ejemplo, https://relishapp.com/rspec/rspec-core/v/3-4/docs/command-line/tag-option , programáticamente a través de metadatos, por ejemplo, https://relishapp.com/rspec/rspec-core/v/3-4/docs/filtering/inclusion-filters y condicionalmente programáticamente a través de https://relishapp.com/rspec/rspec-core/v/3 -4 / docs / filtrar / filtros-condicionales
Quizás estoy siendo lento, pero no veo cómo pueden ayudar esos enlaces. Quizás un ejemplo podría ayudar a aclarar las cosas. Por ejemplo, si tengo esta especificación:
$ cat ~/t/a.spec
require 'rspec'
class My
def self.answer
4
end
end
RSpec.describe My, "#answer" do
context 'good and bad' do
it 'gives the right answer' do
expect(My.answer).to eq 4
end
it 'gives the wrong answer' do
expect(My.answer).to eq -1
end
end
end
Entonces, ¿cómo ejecuto algo que logre lo siguiente?
$ rspec ~/t/a.spec --exclude-example wrong
Estoy buscando una forma que no implique modificar el archivo de especificaciones en sí.
Gracias.
RSpec.describe "My#answer" do
context 'good and bad' do
it 'gives the right answer', type: :right do
expect(My.answer).to eq 4
end
it 'gives the wrong answer', type: :wrong do
expect(My.answer).to eq -1
end
end
end
$ rspec ~/t/a.spec --tag @right
o $ rspec ~/t/a.spec --tag ~@wrong
Agregaste type: wrong
. ¿Debo deducir de su respuesta que no es posible lograr algo similar sin modificar la especificación, lo que hace que este problema sea una solicitud de función?
Creo que sería razonable agregar --exclude-example
.
Comentario más útil
Creo que sería razonable agregar
--exclude-example
.