diff --git a/Rakefile b/Rakefile index 4c0d71b59..a98dc6f33 100644 --- a/Rakefile +++ b/Rakefile @@ -49,6 +49,9 @@ end GEM_NAME = "#{name}" task :default => :test +require "fog/rake/test_task" +Fog::Rake::TestTask.new + namespace :test do task :dynect do [false].each do |mock| @@ -58,39 +61,6 @@ namespace :test do end end -task :test do - Rake::Task[:mock_tests].invoke -end - -def tests(mocked) - Formatador.display_line - start = Time.now.to_i - threads = [] - Thread.main[:results] = [] - Fog.providers.each do |key, value| - threads << Thread.new do - Thread.main[:results] << { - :provider => value, - :success => sh("export FOG_MOCK=#{mocked} && bundle exec shindont +#{key}") - } - end - end - threads.each do |thread| - thread.join - end - Formatador.display_table(Thread.main[:results].sort {|x,y| x[:provider] <=> y[:provider]}) - Formatador.display_line("[bold]FOG_MOCK=#{mocked}[/] tests completed in [bold]#{Time.now.to_i - start}[/] seconds") - Formatador.display_line -end - -task :mock_tests do - tests(true) -end - -task :real_tests do - tests(false) -end - task :nuke do Fog.providers.each do |provider| next if ['Vmfusion'].include?(provider) diff --git a/lib/fog/rake/test_task.rb b/lib/fog/rake/test_task.rb new file mode 100644 index 000000000..3870d3442 --- /dev/null +++ b/lib/fog/rake/test_task.rb @@ -0,0 +1,46 @@ +require "rake" +require "rake/tasklib" + +module Fog + module Rake + class TestTask < ::Rake::TaskLib + + def initialize + desc "Run the mocked tests" + task :test do + Rake::Task[:mock_tests].invoke + end + + task :mock_tests do + tests(true) + end + + task :real_tests do + tests(false) + end + end + + def tests(mocked) + Formatador.display_line + start = Time.now.to_i + threads = [] + Thread.main[:results] = [] + Fog.providers.each do |key, value| + threads << Thread.new do + Thread.main[:results] << { + :provider => value, + :success => sh("export FOG_MOCK=#{mocked} && bundle exec shindont +#{key}") + } + end + end + threads.each do |thread| + thread.join + end + Formatador.display_table(Thread.main[:results].sort {|x,y| x[:provider] <=> y[:provider]}) + Formatador.display_line("[bold]FOG_MOCK=#{mocked}[/] tests completed in [bold]#{Time.now.to_i - start}[/] seconds") + Formatador.display_line + end + + end + end +end