Estoy generando tareas de prueba dinámicamente basadas en archivos de prueba existentes en un Rakefile. Considere que tiene varios archivos de prueba de unidad nombrados después del patrón test_<name>.rb
. Entonces, lo que estoy haciendo es crear una tarea con el nombre del nombre del archivo dentro del espacio de nombres 'prueba'. Con el código de abajo que a continuación se puede llamar a todas las pruebas con rake test:<name>
Genere tareas de prueba de Rake de forma dinámica (en base a archivos de prueba existentes) en un Rakefile
require 'rake/testtask'
task :default => 'test:all'
namespace :test do
desc "Run all tests"
Rake::TestTask.new(:all) do |t|
t.test_files = FileList['test_*.rb']
end
FileList['test_*.rb'].each do |task|
name = task.gsub(/test_|\.rb\z/, '')
desc "Run #{name} tests"
Rake::TestTask.new(:"#{name}") do |t|
t.pattern = task
end
end
end
funciona El código anterior, apenas se parece demasiado código para la generación tarea sencilla. Y todavía no han encontrado una manera de imprimir alguna descripción de texto a la consola como puts "Running #{name} tests:"
¿Hay una manera más elegante que el método anterior?
EDIT: Lo que realmente esperaba obtener era una alternativa al bucle para definir las tareas de forma dinámica pero supongo que el lib rastrillo no proporciona ninguna ayuda para que así que estoy atascado con el bucle.
Editado el código desde la punta de @ScottJShea – jasoares
Para aquellos que no saben, Jim Weirich es el autor del proyecto Rake, agradezco su tiempo para responder a mi pregunta a continuación. – jasoares