Commit 67eaa01aba6723c69f6cc7b2edb6c8796b3a572f
Committed by
Daniela Feitosa
1 parent
b6a3b701
Exists in
master
and in
8 other branches
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
... | ... | @@ -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 | ... | ... |