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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
|
$:.unshift File.expand_path('../../lib', __FILE__) # For use/testing when no gem is installed
# Use this flag to actually load all of the god infrastructure
$load_god = true
require File.join(File.dirname(__FILE__), *%w[.. lib god sys_logger])
require File.join(File.dirname(__FILE__), *%w[.. lib god])
God::EventHandler.load
require 'minitest/autorun'
require 'minitest/unit'
require 'set'
include God
if Process.uid != 0 and RbConfig::CONFIG['host_os'] == "linux"
abort <<-EOF
\n
*********************************************************************
* *
* You need to run these tests as root *
* chroot and netlink (linux only) require it *
* *
*********************************************************************
EOF
end
begin
require 'mocha/setup'
rescue LoadError
unless gems ||= false
require 'rubygems'
gems = true
retry
else
abort "=> You need the Mocha gem to run these tests."
end
end
module God
module Conditions
class FakeCondition < Condition
def test
true
end
end
class FakePollCondition < PollCondition
def test
true
end
end
class FakeEventCondition < EventCondition
def register
end
def deregister
end
end
end
module Behaviors
class FakeBehavior < Behavior
def before_start
'foo'
end
def after_start
'bar'
end
end
end
module Contacts
class FakeContact < Contact
end
class InvalidContact
end
end
def self.reset
self.watches = nil
self.groups = nil
self.server = nil
self.inited = nil
self.host = nil
self.port = nil
self.pid_file_directory = nil
self.registry.reset
end
end
def silence_warnings
old_verbose, $VERBOSE = $VERBOSE, nil
yield
ensure
$VERBOSE = old_verbose
end
LOG.instance_variable_set(:@io, StringIO.new())
def output_logs
io = LOG.instance_variable_get(:@io)
LOG.instance_variable_set(:@io, $stderr)
yield
ensure
LOG.instance_variable_set(:@io, io)
end
# module Kernel
# def abort(text)
# raise SystemExit, text
# end
# def exit(code)
# raise SystemExit, "Exit code: #{code}"
# end
# end
module Minitest::Assertions
def assert_abort
assert_raises SystemExit do
yield
end
end
def assert_nothing_raised
yield
end
end
# This allows you to be a good OOP citizen and honor encapsulation, but
# still make calls to private methods (for testing) by doing
#
# obj.bypass.private_thingie(arg1, arg2)
#
# Which is easier on the eye than
#
# obj.send(:private_thingie, arg1, arg2)
#
class Object
class Bypass
instance_methods.each do |m|
undef_method m unless m =~ /^(__|object_id)/
end
def initialize(ref)
@ref = ref
end
def method_missing(sym, *args)
@ref.__send__(sym, *args)
end
end
def bypass
Bypass.new(self)
end
end
# Make sure we return valid exit codes
if defined?(RUBY_ENGINE) && RUBY_ENGINE == "ruby" && RUBY_VERSION >= "1.9"
module Kernel
alias :__at_exit :at_exit
def at_exit(&block)
__at_exit do
exit_status = $!.status if $!.is_a?(SystemExit)
block.call
exit exit_status if exit_status
end
end
end
end
|