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

Class Method Summary collapse

Class Method Details

.auto_runObject



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

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



53
54
55
# File 'lib/etest.rb', line 53

def self.autorun
  auto_run
end

.run(*etests) ⇒ Object



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

def self.run(*etests)
  #
  # convert all Etest modules into a test case
  test_cases = etests.map { |etest|
    dlog "Running", 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



84
85
86
87
88
89
90
91
92
93
# File 'lib/etest.rb', line 84

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