include Rake::DSL if defined?(Rake::DSL) require 'bundler' Bundler::GemHelper.install_tasks require 'rspec/core/rake_task' RSpec::Core::RakeTask.new(:spec) $: << File.expand_path('../lib', __FILE__) require 'jasmine-headless-webkit' require 'jasmine/headless/task' Jasmine::Headless::Task.new PLATFORMS = %w{1.8.7 1.9.2 ree 1.9.3} def rvm_bundle(command = '') Bundler.with_clean_env do system %{bash -c 'unset BUNDLE_BIN_PATH && unset BUNDLE_GEMFILE && rvm #{PLATFORMS.join(',')} do bundle #{command}'} end end class SpecFailure < StandardError; end class BundleFailure < StandardError; end namespace :spec do desc "Run on three Rubies" task :platforms do rvm_bundle rvm_bundle "exec rspec spec" rvm_bundle "exec cucumber" raise SpecError.new if $?.exitstatus != 0 end end task :default => [ 'spec:platforms', 'jasmine:headless' ] desc "Build the runner" task :build_runner do Dir.chdir 'ext/jasmine-webkit-specrunner' do system %{ruby extconf.rb} end end desc "Generate vendored JS" task :generate_js do require 'sprockets' source = 'vendor/assets/coffeescripts' target = 'vendor/assets/javascripts' env = Sprockets::Environment.new { |s| s.append_path 'vendor/assets/coffeescripts' } Dir[File.join(File.expand_path(source), '*.coffee')].each do |file| file_target = file.gsub(source, target).gsub('.coffee', '.js') puts "#{file} => #{file_target}" File.open(file_target, 'wb') do |fh| fh.print env.find_asset(File.expand_path(file)).to_s end end end