Module: Etest

Defined in:
lib/etest.rb,
lib/etest.rb

Overview

Embedded test cases:

The Etest module contains methods to run etests.

Defined Under Namespace

Modules: Assertions, ComparisonAssertions Classes: TestCase

Constant Summary collapse

VERSION =
File.read(File.dirname(__FILE__) + "/../VERSION")

Class Method Summary collapse

Class Method Details

.auto_runObject



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/etest.rb', line 45

def self.auto_run
  #
  # find all modules that are not named /::Etest$/, and try to load
  # the respective Etest module.
  etests = Module.instances.map { |mod|
    #next if mod.name =~ /\bEtest$/
    next if mod.name == "Object"
    
    Module.by_name "#{mod.name}::Etest"
  }.compact.uniq.sort_by(&:name)

  run *etests
end

.autorunObject



41
42
43
# File 'lib/etest.rb', line 41

def self.autorun
  auto_run
end

.run(*etests) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'lib/etest.rb', line 59

def self.run(*etests)
  dlog "Running", etests
  #
  # convert all Etest modules into a test case
  test_cases = etests.map { |etest|
    to_test_case etest
  }
  
  MiniTest::Unit::TestCase.run_etests *test_cases
end

.to_test_case(mod) ⇒ Object

convert an Etest moodule into a MiniTest testcase



72
73
74
75
76
77
78
79
80
81
# File 'lib/etest.rb', line 72

def self.to_test_case(mod)
  klass = Class.new TestCase
  klass.send :include, mod
  klass.send :include, Assertions

  Kernel.silent do
    mod.const_set("TestCase", klass)
  end
  klass
end