File: Rakefile

package info (click to toggle)
ruby-execjs 2.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,112 kB
  • sloc: javascript: 32,075; ruby: 1,036; makefile: 4
file content (67 lines) | stat: -rw-r--r-- 1,458 bytes parent folder | download | duplicates (4)
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
58
59
60
61
62
63
64
65
66
67
require "rake/testtask"
require "bundler/gem_tasks"

task :default => :test

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

tests = namespace :test do |tests|
  ExecJS::Runtimes.names.each do |name|
    next if ExecJS::Runtimes.const_get(name).deprecated?

    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 SignalException => e
      if e.message == "2"
        skipped << task.name
      else
        failed << task.name
      end
    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?
  raise "all tests skipped" if !passed.any?
end