Sha256: 33afc42e4d3ad7e4db31c519b1818f8477145dbe25da103e323a93db9831427e

Contents?: true

Size: 1.89 KB

Versions: 22

Compression:

Stored size: 1.89 KB

Contents

require 'parallel'
require 'shellwords'

desc "Run the full suite using parallel_tests to run on multiple cores"
task parallel_tests: ['parallel:setup_parallel_tests', 'parallel:spec', 'parallel:features', 'cucumber:class_reloading']

namespace :parallel do

  def rails_app_rake(task)
    require 'rails/version'
    system "cd spec/rails/rails-#{Rails::VERSION::STRING}; rake #{task}"
  end

  task :after_setup_hook do
    rails_app_rake "parallel:load_schema"
    rails_app_rake "parallel:create_cucumber_db"
    rails_app_rake "parallel:load_schema_cucumber_db"
  end

  def parallel_tests_setup?
    require 'rails/version'
    database_config = File.join "spec", "rails", "rails-#{Rails::VERSION::STRING}", "config", "database.yml"
    File.exist?(database_config) && File.read(database_config).include?("TEST_ENV_NUMBER")
  end

  desc "Setup parallel_tests DBs"
  task :setup_parallel_tests do
    unless parallel_tests_setup?
      puts "parallel_tests is not set up. (Re)building spec/rails/rails-#{Rails::VERSION::STRING} App. Please wait."
      require 'rails/version'
      system("rm -Rf spec/rails/rails-#{Rails::VERSION::STRING}")
      Rake::Task['setup'].invoke true
    end
  end

  def run_in_parallel(command)
    bash("ENV['TEST_ENV_NUMBER']=#{Parallel.processor_count} #{command}")
  end

  def bash(command)
    escaped_command = Shellwords.escape(command)
    system("bash -c #{escaped_command}")
  end

  desc "Run the specs in parallel"
  task spec: :setup_parallel_tests do
    run_in_parallel "parallel_rspec spec/"
  end

  namespace :spec do

    %w(unit request).each do |type|
      desc "Run the #{type} specs in parallel"
      task type => :setup_parallel_tests do
        run_in_parallel "parallel_rspec spec/#{type}"
      end
    end

  end

  desc "Run the cucumber features in parallel"
  task features: :setup_parallel_tests do
    run_in_parallel "parallel_cucumber features/"
  end

end

Version data entries

22 entries across 22 versions & 4 rubygems

Version Path
activeadmin-rails-1.7.2 tasks/parallel_tests.rake
activeadmin-rails-1.7.1 tasks/parallel_tests.rake
activeadmin-rails-1.7.0 tasks/parallel_tests.rake
activeadmin-rb-1.6.0 tasks/parallel_tests.rake
activeadmin-rb-1.5.2 tasks/parallel_tests.rake
activeadmin-rb-1.5.1 tasks/parallel_tests.rake
activeadmin-rb-1.5.0 tasks/parallel_tests.rake
activeadmin_addons-1.7.1 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin-rb-1.4.0 tasks/parallel_tests.rake
activeadmin_addons-1.7.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin-1.3.1 tasks/parallel_tests.rake
activeadmin_addons-1.6.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin_addons-1.5.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin-1.3.0 tasks/parallel_tests.rake
activeadmin_addons-1.4.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin_addons-1.3.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin_addons-1.2.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/tasks/parallel_tests.rake
activeadmin-1.2.1 tasks/parallel_tests.rake
activeadmin-1.2.0 tasks/parallel_tests.rake
activeadmin-1.1.0 tasks/parallel_tests.rake