run rails example better ruby rspec

ruby - rails - rspec let



Hacer que SimpleCov funcione cuando se ejecuta gema binaria (1)

bueno, no es fácil encontrar una solución a este problema en particular.

no estoy seguro de que esto resuelva tu problema, pero ¿quizás un comienzo?

sin el bloque de inicio que modifica los filtros, no pude hacer que SimpleCov mirara el directorio bin (usando el repositorio github de muestra que me proporcionó).

Use command_name para dar un nombre a los informes de cobertura de los procesos principales y luego en la horquilla utilizada command_name para dar a los procesos bifurcados un nombre (SimpleCov los fusiona para nosotros siempre que tengan nombres diferentes).

luego usé load para cargar el archivo bin en lugar de usar el sistema .

(No pude encontrar una manera de hacer que el sistema o el spawn se agreguen a los informes de cobertura, tal vez si lo llamó a través de un script que reinicia SimpleCov con un nombre de comando alternativo)

nuevamente, no estoy seguro si esto es exactamente lo que está buscando pero puede ser un comienzo. código a continuación:

# spec_helper.rb require ''simplecov'' SimpleCov.command_name "main_report" SimpleCov.start do filters.clear # This will remove the :root_filter and :bundler_filter that come via simplecov''s defaults add_filter do |src| !(src.filename =~ /^#{SimpleCov.root}/) unless src.filename =~ /bin/ #make sure the bin directory is allowed end end require ''rubygems'' require ''bundler'' Bundler.require :default, :development # test_spec.rb require ''spec_helper'' describe "my bin" do it "should be covered" do pid = Process.fork do SimpleCov.start do command_name "bin_report_section" end load "bin/runme" end end end

resultado:

Informe de cobertura generado para bin_report_section, main_report a / home / korreyd / simplecov-debug / coverage. 1/1 LOC (100.0%) cubierto.

Estoy tratando de agregar cobertura SimpleCov a mi gema que tiene un binario.

Me gustaría probar su interfaz de línea de comandos, por lo que deseo probar la ejecución binaria en sí, y no la biblioteca que utiliza.

No recibo ningún informe de cobertura (0 LOC) por SimpleCov.

Según tengo entendido, el problema probablemente se deba al hecho de que en mi prueba (ya sean características de pepino o especificaciones de rspec), estoy ejecutando el binario de la gema con system o popen3 , pero no sé cómo puedo decirle a SimpleCov que lo haga " seguir "(o si estoy ladrando en el árbol correcto ...).

He intentado jugar con SimpleCov.command_name , SimpleCov.pid = $$ , SimpleCov.track_files y casi cualquier otra configuración remotamente relacionada que encontré.

No deseo utilizar Aruba, aunque he intentado revisar su fuente para buscar posibles respuestas.

Recortes de código relacionados:

# spec_helper.rb require ''simplecov'' SimpleCov.start require ''rubygems'' require ''bundler'' Bundler.require :default, :development # test_spec.rb require ''spec_helper'' describe "my bin" do it "should be covered" do system ''bin/runme'' end end

He preparado un repositorio mínimo como un terreno de prueba fácil, si eso ayuda en absoluto.