free_mutant/lib/mutant/integration.rb

74 lines
1.2 KiB
Ruby
Raw Normal View History

2012-11-22 00:10:50 +01:00
module Mutant
2014-06-28 23:04:18 +00:00
# Abstract base class mutant test framework integrations
class Integration
2014-01-18 00:25:16 +01:00
include AbstractType, Adamantium::Flat, Equalizer.new
2014-01-18 00:15:42 +01:00
REGISTRY = {}
2014-06-28 23:04:18 +00:00
# Lookup integration for name
2014-01-18 00:15:42 +01:00
#
# @param [String] name
#
2014-06-28 23:04:18 +00:00
# @return [Integration]
2014-01-18 00:15:42 +01:00
# if found
#
# @api private
#
def self.lookup(name)
REGISTRY.fetch(name).build
2014-01-18 00:15:42 +01:00
end
2014-06-28 23:04:18 +00:00
# Register integration
2014-01-18 00:15:42 +01:00
#
# @param [String] name
#
# @return [undefined]
#
# @api private
#
def self.register(name)
REGISTRY[name] = self
define_method(:name) { name }
2014-01-18 00:15:42 +01:00
end
private_class_method :register
2014-06-28 23:04:18 +00:00
# Perform integration setup
#
2013-01-15 23:46:05 +01:00
# @return [self]
#
# @api private
#
def setup
2013-09-02 22:02:51 +02:00
self
end
2014-06-28 23:04:18 +00:00
# Return all available tests by integration
#
# @return [Enumerable<Test>]
#
# @api private
#
abstract_method :all_tests
2014-06-28 23:04:18 +00:00
# Null integration that never kills a mutation
2014-01-18 00:15:42 +01:00
class Null < self
register('null')
2014-01-18 00:15:42 +01:00
# Return all tests
#
# @return [Enumerable<Test>]
#
# @api private
#
def all_tests
EMPTY_ARRAY
end
2014-01-18 00:15:42 +01:00
end # Null
2014-06-28 23:04:18 +00:00
end # Integration
2013-06-14 20:54:02 +02:00
end # Mutant