namespace :ci do desc "Run tests in the cloud. ZOMG!" task :travis do if ENV['BUILD_TYPE'] == 'cucumber' puts "Running cucumber features..." system("export DISPLAY=:99.0 && bundle exec rake cucumber") raise "Cucumber failed!" unless $?.exitstatus == 0 else ["rake generate_fixtures", "rake spec"].each do |cmd| puts "Running bundle exec #{cmd}..." system("bundle exec #{cmd}") raise "#{cmd} failed!" unless $?.exitstatus == 0 end ["rake jasmine:ci"].each do |cmd| puts "Running bundle exec #{cmd}..." system("export DISPLAY=:99.0 && GROUP=oauth bundle exec #{cmd}") raise "#{cmd} failed!" unless $?.exitstatus == 0 end end end desc "Run tests that can't run on travis" task :hard_things => [:environment, :'ci:migrate'] do puts "Starting virtual display..." `sh -e /etc/init.d/xvfb start` puts "Starting specs..." system('export DISPLAY=:99.0 && CI=true bundle exec rake cucumber') exit_status = $?.exitstatus puts "Stopping virtual display..." `sh -e /etc/init.d/xvfb stop` puts "Cleaning up..." FileUtils.rm_rf(Rails.root.join('public', 'uploads', 'images')) FileUtils.rm_rf(Rails.root.join('public', 'uploads', 'tmp')) raise "tests failed!" unless exit_status == 0 puts "All tests passed!" end task :migrate => ['db:drop', 'db:create', 'db:schema:load'] do system('bundle exec rake db:test:prepare') raise "migration failed!" unless $?.exitstatus == 0 end end task :travis => "ci:travis"