Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 58 lines (47 sloc) 1.192 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
require "rake/testtask"

task :default => :test

$:.unshift File.expand_path("../lib", __FILE__)
require "execjs/runtimes"

tests = namespace :test do |tests|
  ExecJS::Runtimes.names.each do |name|
    task(name.downcase) do
      ENV["EXECJS_RUNTIME"] = name.to_s
    end

    Rake::TestTask.new(name.downcase) do |t|
      t.libs << "test"
      t.warning = true
    end
  end
end

def banner(text)
  warn ""
  warn "=" * Rake.application.terminal_width
  warn text
  warn "=" * Rake.application.terminal_width
  warn ""
end

desc "Run tests for all installed runtimes"
task :test do
  passed = []
  failed = []
  skipped = []

  tests.tasks.each do |task|
    banner "Running #{task.name}"

    begin
      task.invoke
    rescue Exception => e
      if e.message[/Command failed with status \((\d+)\)/, 1] == "2"
        skipped << task.name
      else
        failed << task.name
      end
    else
      passed << task.name
    end
  end

  messages = ["PASSED: #{passed.join(", ")}"]
  messages << "SKIPPED: #{skipped.join(", ")}" if skipped.any?
  messages << "FAILED: #{failed.join(", ")}" if failed.any?
  banner messages.join("\n")

  raise "test failures" if failed.any?
end
Something went wrong with that request. Please try again.