Sha256: 74af56ebd79e70fb5fa6a47ce43765ba735b1aea6b80dbfa62017dc2af9a50c5

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

#! /usr/bin/env ruby
require 'optparse'
require 'rgot'

opts = {}
parser = OptionParser.new do |o|
  o.on '-v', '--verbose', "log all tests" do |arg|
    opts[:verbose] = arg
  end
  o.on '-b', '--bench [regexp]', "benchmark" do |arg|
    unless arg
      raise Rgot::OptionError, "missing argument for flag --bench"
    end
    opts[:bench] = arg
  end
  o.on '--benchtime [sec]', "benchmark running time" do |arg|
    opts[:benchtime] = arg
  end
  o.on '--timeout [sec]', "set timeout sec to testing" do |arg|
    opts[:timeout] = arg
  end
end
parser.parse!(ARGV)

target = ARGV[0]

if target
  if File.file?(target)
    require File.expand_path(target)
  elsif File.directory?(target)
    Dir.glob("./#{target}/**/*_test.rb") do |i|
      require i
    end
  else
    puts target
  end
else
  Dir.glob("./**/*_test.rb") do |i|
    require i
  end
end

modules = Object.constants.select { |c|
  next if c == :FileTest
  /.*Test\z/ =~ c
}

if 1 != modules.length
  puts "can not load module. found #{modules.join(', ')}"
  exit 1
end

tests = []
benchmarks = []
examples = []
main = nil
c = modules.first

test_module = Object.const_get(c)
methods = test_module.instance_methods.sort
methods.grep(/\Atest_/).each do |m|
  if m == :test_main && main.nil?
    main = Rgot::InternalTest.new(test_module, m)
  else
    tests << Rgot::InternalTest.new(test_module, m)
  end
end

methods.grep(/\Abenchmark_/).each do |m|
  benchmarks << Rgot::InternalBenchmark.new(test_module, m)
end

methods.grep(/\Aexample_?/).each do |m|
  examples << Rgot::InternalExample.new(test_module, m)
end

m = Rgot::M.new(tests: tests, benchmarks: benchmarks, examples: examples, opts: opts)
duration = Rgot.now
at_exit {
  if !$!
    puts sprintf("ok\t%.3fs", Rgot.now - duration)
  end
}
if main
  main.module.extend main.module
  main.module.instance_method(main.name).bind(main.module).call(m)
else
  exit m.run
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rgot-0.0.3 bin/rgot