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



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/etest.rb', line 52

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



48
49
50
# File 'lib/etest.rb', line 48

def self.autorun
  auto_run
end

.run(*etests) ⇒ Object



66
67
68
69
70
71
72
73
74
75
# File 'lib/etest.rb', line 66

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



79
80
81
82
83
84
85
86
87
88
# File 'lib/etest.rb', line 79

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