mirror of
https://github.com/rapid7/metasploit-framework
synced 2024-11-05 14:57:30 +01:00
69 lines
1.4 KiB
Ruby
69 lines
1.4 KiB
Ruby
|
|
|
|
module Msf
|
|
|
|
module ModuleTest
|
|
attr_accessor :tests
|
|
attr_accessor :failures
|
|
|
|
def initialize(info={})
|
|
@tests = 0
|
|
@failures = 0
|
|
super
|
|
end
|
|
|
|
def run_all_tests
|
|
tests = self.methods.select { |m| m.to_s =~ /^test_/ }
|
|
tests.each { |test_method|
|
|
self.send(test_method)
|
|
}
|
|
|
|
end
|
|
|
|
def it(msg="", &block)
|
|
@tests += 1
|
|
begin
|
|
result = block.call
|
|
unless result
|
|
print_error("FAILED: #{msg}")
|
|
print_error("FAILED: #{error}") if error
|
|
@failures += 1
|
|
return
|
|
end
|
|
rescue ::Exception => e
|
|
print_error("FAILED: #{msg}")
|
|
print_error("Exception: #{e.class} : #{e}")
|
|
dlog("Exception in testing - #{msg}")
|
|
dlog("Call stack: #{e.backtrace.join("\n")}")
|
|
return
|
|
end
|
|
|
|
print_good("#{msg}")
|
|
end
|
|
|
|
def pending(msg="", &block)
|
|
print_status("PENDING: #{msg}")
|
|
end
|
|
end
|
|
|
|
module ModuleTest::PostTest
|
|
include ModuleTest
|
|
def run
|
|
print_status("Running against session #{datastore["SESSION"]}")
|
|
print_status("Session type is #{session.type} and platform is #{session.platform}")
|
|
|
|
t = Time.now
|
|
@tests = 0; @failures = 0
|
|
run_all_tests
|
|
|
|
vprint_status("Testing complete in #{Time.now - t}")
|
|
if (@failures > 0)
|
|
print_error("Passed: #{@tests - @failures}; Failed: #{@failures}")
|
|
else
|
|
print_status("Passed: #{@tests - @failures}; Failed: #{@failures}")
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|