Commit 67eaa01aba6723c69f6cc7b2edb6c8796b3a572f

Authored by Rodrigo Souto
Committed by Daniela Feitosa
1 parent b6a3b701

Rake tasks for noosfero plugins' tests

This patch creates some tasks to run noosfero plugins' tests through
rake. For further information take a look at:
http://noosfero.org/Development/PluginsArchitecture#Tasks

(ActionItem1996)
Showing 1 changed file with 56 additions and 0 deletions   Show diff stats
lib/tasks/plugins_tests.rake 0 → 100644
@@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
  1 +def define_task(test, plugins_folder='plugins', plugin = '*')
  2 + test_files = Dir.glob(File.join(Rails.root, plugins_folder, plugin, 'test', test[:folder], '**', '*_test.rb'))
  3 + desc 'Runs ' + (plugin != '*' ? plugin : 'plugins') + ' ' + test[:name] + ' tests'
  4 + Rake::TestTask.new(test[:name].to_sym) do |t|
  5 + t.test_files = test_files
  6 + t.verbose = true
  7 + end
  8 +end
  9 +
  10 +namespace :test do
  11 + namespace :noosfero_plugins do
  12 + tasks = [
  13 + {:name => :available, :folder => 'plugins'},
  14 + {:name => :enabled, :folder => File.join('config', 'plugins')}
  15 + ]
  16 + tests = [
  17 + {:name => 'units', :folder => 'unit'},
  18 + {:name => 'functionals', :folder => 'functional'},
  19 + {:name => 'integration', :folder => 'integration'}
  20 + ]
  21 +
  22 + tasks.each do |t|
  23 + namespace t[:name] do
  24 + tests.each do |test|
  25 + define_task(test, t[:folder])
  26 + end
  27 + end
  28 + end
  29 +
  30 + plugins = Dir.glob(File.join(Rails.root, 'plugins', '*')).map {|path| File.basename(path)}
  31 +
  32 + plugins.each do |plugin_name|
  33 + namespace plugin_name do
  34 + tests.each do |test|
  35 + define_task(test, 'plugins', plugin_name)
  36 + end
  37 + end
  38 +
  39 + dependencies = []
  40 + tests.each do |test|
  41 + dependencies << plugin_name+':'+test[:name]
  42 + end
  43 + task plugin_name => dependencies
  44 + end
  45 +
  46 + task :units => 'available:units'
  47 + task :functionals => 'available:functionals'
  48 + task :integration => 'available:integration'
  49 + task :available => [:units, :functionals, :integration]
  50 + task :enabled => ['enabled:units', 'enabled:functionals', 'enabled:integration']
  51 +
  52 + end
  53 +
  54 + task :noosfero_plugins => 'noosfero_plugins:available'
  55 +
  56 +end