From 67eaa01aba6723c69f6cc7b2edb6c8796b3a572f Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Thu, 5 May 2011 23:43:34 -0300 Subject: [PATCH] Rake tasks for noosfero plugins' tests --- lib/tasks/plugins_tests.rake | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+), 0 deletions(-) create mode 100644 lib/tasks/plugins_tests.rake diff --git a/lib/tasks/plugins_tests.rake b/lib/tasks/plugins_tests.rake new file mode 100644 index 0000000..de3ba8c --- /dev/null +++ b/lib/tasks/plugins_tests.rake @@ -0,0 +1,56 @@ +def define_task(test, plugins_folder='plugins', plugin = '*') + test_files = Dir.glob(File.join(Rails.root, plugins_folder, plugin, 'test', test[:folder], '**', '*_test.rb')) + desc 'Runs ' + (plugin != '*' ? plugin : 'plugins') + ' ' + test[:name] + ' tests' + Rake::TestTask.new(test[:name].to_sym) do |t| + t.test_files = test_files + t.verbose = true + end +end + +namespace :test do + namespace :noosfero_plugins do + tasks = [ + {:name => :available, :folder => 'plugins'}, + {:name => :enabled, :folder => File.join('config', 'plugins')} + ] + tests = [ + {:name => 'units', :folder => 'unit'}, + {:name => 'functionals', :folder => 'functional'}, + {:name => 'integration', :folder => 'integration'} + ] + + tasks.each do |t| + namespace t[:name] do + tests.each do |test| + define_task(test, t[:folder]) + end + end + end + + plugins = Dir.glob(File.join(Rails.root, 'plugins', '*')).map {|path| File.basename(path)} + + plugins.each do |plugin_name| + namespace plugin_name do + tests.each do |test| + define_task(test, 'plugins', plugin_name) + end + end + + dependencies = [] + tests.each do |test| + dependencies << plugin_name+':'+test[:name] + end + task plugin_name => dependencies + end + + task :units => 'available:units' + task :functionals => 'available:functionals' + task :integration => 'available:integration' + task :available => [:units, :functionals, :integration] + task :enabled => ['enabled:units', 'enabled:functionals', 'enabled:integration'] + + end + + task :noosfero_plugins => 'noosfero_plugins:available' + +end -- libgit2 0.21.2