2013-07-28 16:03:06 -07:00
|
|
|
# encoding: utf-8
|
|
|
|
|
2013-12-19 16:47:12 +01:00
|
|
|
require 'stringio'
|
2013-01-03 16:52:42 +01:00
|
|
|
require 'set'
|
2012-10-15 14:36:15 +02:00
|
|
|
require 'adamantium'
|
2012-08-28 19:15:10 +02:00
|
|
|
require 'ice_nine'
|
2012-11-26 12:16:22 +01:00
|
|
|
require 'abstract_type'
|
2012-07-27 22:39:31 +02:00
|
|
|
require 'securerandom'
|
2012-09-15 23:04:10 +02:00
|
|
|
require 'equalizer'
|
2012-11-21 22:28:08 +01:00
|
|
|
require 'digest/sha1'
|
2013-01-22 16:05:56 +01:00
|
|
|
require 'inflecto'
|
2013-05-22 02:40:50 +02:00
|
|
|
require 'parser'
|
2013-06-04 19:22:33 +02:00
|
|
|
require 'parser/current'
|
2013-05-22 02:40:50 +02:00
|
|
|
require 'unparser'
|
2012-07-31 22:01:55 +02:00
|
|
|
require 'ice_nine'
|
2012-08-16 18:02:03 +02:00
|
|
|
require 'diff/lcs'
|
|
|
|
require 'diff/lcs/hunk'
|
2013-02-24 20:40:23 +01:00
|
|
|
require 'anima'
|
2013-03-24 16:43:40 +01:00
|
|
|
require 'concord'
|
2014-02-02 22:48:08 +01:00
|
|
|
require 'morpher'
|
2012-07-27 22:39:31 +02:00
|
|
|
|
2014-04-11 20:45:30 +00:00
|
|
|
# Monkey patch to parser that needs to be pushed upstream
|
|
|
|
module Parser
|
|
|
|
# AST namespace
|
|
|
|
module AST
|
|
|
|
# The AST nodes we use in mutant
|
|
|
|
class Node
|
|
|
|
|
|
|
|
# Return hash compatible with #eql?
|
|
|
|
#
|
|
|
|
# @return [Fixnum]
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
def hash
|
|
|
|
@type.hash ^ @children.hash ^ self.class.hash
|
|
|
|
end
|
|
|
|
|
|
|
|
# Test if node is equal to anotheo
|
|
|
|
#
|
|
|
|
# @return [true]
|
|
|
|
# if node represents the same code semantics locations are ignored
|
|
|
|
#
|
|
|
|
# @return [false]
|
|
|
|
# otherwise
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
#
|
|
|
|
def eql?(other)
|
|
|
|
other.kind_of?(self.class)
|
|
|
|
other.type.eql?(@type) && other.children.eql?(@children)
|
|
|
|
end
|
|
|
|
|
|
|
|
end # Node
|
|
|
|
end # AST
|
|
|
|
end # Parser
|
|
|
|
|
2012-07-23 22:54:35 +02:00
|
|
|
# Library namespace
|
|
|
|
module Mutant
|
2014-03-30 14:56:51 +00:00
|
|
|
# The frozen empty string used within mutant
|
2013-07-21 22:19:41 +02:00
|
|
|
EMPTY_STRING = ''.freeze
|
2014-03-30 14:56:51 +00:00
|
|
|
# The frozen empty array used within mutant
|
|
|
|
EMPTY_ARRAY = [].freeze
|
2014-04-04 14:14:24 +00:00
|
|
|
|
|
|
|
# Perform self zombification
|
|
|
|
#
|
|
|
|
# @return [self]
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
#
|
|
|
|
def self.zombify
|
|
|
|
Zombifier.run('mutant', :Zombie)
|
|
|
|
self
|
|
|
|
end
|
|
|
|
|
2013-07-21 22:19:41 +02:00
|
|
|
end # Mutant
|
2012-07-23 22:54:35 +02:00
|
|
|
|
2013-08-03 01:44:58 +02:00
|
|
|
require 'mutant/version'
|
2013-06-27 22:18:07 +02:00
|
|
|
require 'mutant/cache'
|
2013-06-04 19:22:33 +02:00
|
|
|
require 'mutant/node_helpers'
|
2013-01-04 00:18:48 +01:00
|
|
|
require 'mutant/singleton_methods'
|
|
|
|
require 'mutant/constants'
|
2012-07-31 20:11:37 +02:00
|
|
|
require 'mutant/random'
|
2014-01-18 23:53:07 +01:00
|
|
|
require 'mutant/walker'
|
2014-04-04 12:38:06 +00:00
|
|
|
require 'mutant/require_highjack'
|
2012-07-26 19:25:23 +02:00
|
|
|
require 'mutant/mutator'
|
2012-08-16 04:09:14 +02:00
|
|
|
require 'mutant/mutation'
|
2013-01-15 23:46:05 +01:00
|
|
|
require 'mutant/mutation/evil'
|
|
|
|
require 'mutant/mutation/neutral'
|
2012-08-01 13:27:35 +02:00
|
|
|
require 'mutant/mutator/registry'
|
2012-12-06 20:44:26 +01:00
|
|
|
require 'mutant/mutator/util'
|
2012-12-29 20:12:48 +01:00
|
|
|
require 'mutant/mutator/util/array'
|
|
|
|
require 'mutant/mutator/util/symbol'
|
2012-12-06 21:30:28 +01:00
|
|
|
require 'mutant/mutator/node'
|
2013-07-05 01:21:07 +02:00
|
|
|
require 'mutant/mutator/node/generic'
|
2012-12-06 21:30:28 +01:00
|
|
|
require 'mutant/mutator/node/literal'
|
|
|
|
require 'mutant/mutator/node/literal/boolean'
|
|
|
|
require 'mutant/mutator/node/literal/range'
|
|
|
|
require 'mutant/mutator/node/literal/symbol'
|
|
|
|
require 'mutant/mutator/node/literal/string'
|
|
|
|
require 'mutant/mutator/node/literal/fixnum'
|
|
|
|
require 'mutant/mutator/node/literal/float'
|
|
|
|
require 'mutant/mutator/node/literal/array'
|
|
|
|
require 'mutant/mutator/node/literal/hash'
|
|
|
|
require 'mutant/mutator/node/literal/regex'
|
|
|
|
require 'mutant/mutator/node/literal/nil'
|
2013-06-04 23:44:17 +02:00
|
|
|
require 'mutant/mutator/node/argument'
|
|
|
|
require 'mutant/mutator/node/arguments'
|
2013-09-08 23:08:44 -07:00
|
|
|
require 'mutant/mutator/node/blockarg'
|
2013-06-04 22:16:04 +02:00
|
|
|
require 'mutant/mutator/node/begin'
|
2013-12-29 23:04:28 +01:00
|
|
|
require 'mutant/mutator/node/binary'
|
2013-07-23 21:57:39 -07:00
|
|
|
require 'mutant/mutator/node/const'
|
2013-09-07 21:28:37 -07:00
|
|
|
require 'mutant/mutator/node/dstr'
|
2013-09-08 08:17:47 -07:00
|
|
|
require 'mutant/mutator/node/dsym'
|
2013-11-03 20:51:55 -08:00
|
|
|
require 'mutant/mutator/node/kwbegin'
|
2013-07-22 23:54:54 -07:00
|
|
|
require 'mutant/mutator/node/named_value/access'
|
2013-07-23 00:23:21 -07:00
|
|
|
require 'mutant/mutator/node/named_value/constant_assignment'
|
2013-07-23 00:03:57 -07:00
|
|
|
require 'mutant/mutator/node/named_value/variable_assignment'
|
2013-11-20 20:25:17 +01:00
|
|
|
require 'mutant/mutator/node/loop_control'
|
2013-07-28 13:25:43 -07:00
|
|
|
require 'mutant/mutator/node/noop'
|
2013-09-07 23:03:25 -07:00
|
|
|
require 'mutant/mutator/node/op_asgn'
|
2013-12-29 22:32:26 +01:00
|
|
|
require 'mutant/mutator/node/conditional_loop'
|
2013-11-03 12:37:47 -08:00
|
|
|
require 'mutant/mutator/node/yield'
|
2013-01-01 23:28:21 +01:00
|
|
|
require 'mutant/mutator/node/super'
|
2013-07-23 01:02:29 -07:00
|
|
|
require 'mutant/mutator/node/zsuper'
|
2013-09-07 19:49:55 -07:00
|
|
|
require 'mutant/mutator/node/restarg'
|
2012-12-06 21:30:28 +01:00
|
|
|
require 'mutant/mutator/node/send'
|
2013-06-14 19:53:55 +02:00
|
|
|
require 'mutant/mutator/node/send/binary'
|
2013-01-04 22:16:03 +01:00
|
|
|
require 'mutant/mutator/node/when'
|
2012-12-06 21:30:28 +01:00
|
|
|
require 'mutant/mutator/node/define'
|
2013-06-14 20:19:53 +02:00
|
|
|
require 'mutant/mutator/node/mlhs'
|
2013-08-03 01:36:13 +02:00
|
|
|
require 'mutant/mutator/node/nthref'
|
2013-07-05 13:44:13 +02:00
|
|
|
require 'mutant/mutator/node/masgn'
|
2012-12-06 21:30:28 +01:00
|
|
|
require 'mutant/mutator/node/return'
|
2013-06-14 20:19:53 +02:00
|
|
|
require 'mutant/mutator/node/block'
|
2013-01-04 22:16:03 +01:00
|
|
|
require 'mutant/mutator/node/if'
|
2013-06-14 18:22:34 +02:00
|
|
|
require 'mutant/mutator/node/case'
|
2013-07-15 22:25:09 +02:00
|
|
|
require 'mutant/mutator/node/splat'
|
2013-12-01 22:42:52 +01:00
|
|
|
require 'mutant/mutator/node/resbody'
|
2014-03-23 00:33:45 +00:00
|
|
|
require 'mutant/mutator/node/rescue'
|
2013-04-17 20:31:21 -07:00
|
|
|
require 'mutant/config'
|
|
|
|
require 'mutant/loader'
|
2012-07-26 19:25:23 +02:00
|
|
|
require 'mutant/context'
|
2012-08-16 04:10:54 +02:00
|
|
|
require 'mutant/context/scope'
|
2012-08-01 18:34:03 +02:00
|
|
|
require 'mutant/subject'
|
2013-01-13 22:25:49 +01:00
|
|
|
require 'mutant/subject/method'
|
2013-07-05 00:54:50 +02:00
|
|
|
require 'mutant/subject/method/instance'
|
|
|
|
require 'mutant/subject/method/singleton'
|
2012-07-23 22:54:35 +02:00
|
|
|
require 'mutant/matcher'
|
2012-08-28 19:15:10 +02:00
|
|
|
require 'mutant/matcher/chain'
|
2012-07-23 22:54:35 +02:00
|
|
|
require 'mutant/matcher/method'
|
2013-06-27 22:18:07 +02:00
|
|
|
require 'mutant/matcher/method/finder'
|
2012-07-23 22:54:35 +02:00
|
|
|
require 'mutant/matcher/method/singleton'
|
|
|
|
require 'mutant/matcher/method/instance'
|
2013-01-21 20:08:30 +01:00
|
|
|
require 'mutant/matcher/methods'
|
|
|
|
require 'mutant/matcher/namespace'
|
2013-04-20 21:16:48 +02:00
|
|
|
require 'mutant/matcher/scope'
|
2013-09-08 21:58:39 +02:00
|
|
|
require 'mutant/matcher/filter'
|
2014-02-13 16:47:29 +01:00
|
|
|
require 'mutant/matcher/null'
|
2012-08-14 22:45:34 +02:00
|
|
|
require 'mutant/killer'
|
2012-11-22 03:00:36 +01:00
|
|
|
require 'mutant/killer/static'
|
2012-11-21 22:55:53 +01:00
|
|
|
require 'mutant/killer/forking'
|
2013-01-15 23:46:05 +01:00
|
|
|
require 'mutant/killer/forked'
|
2012-11-22 00:10:50 +01:00
|
|
|
require 'mutant/strategy'
|
2012-08-14 22:45:34 +02:00
|
|
|
require 'mutant/runner'
|
2013-02-02 16:32:13 +01:00
|
|
|
require 'mutant/runner/config'
|
2013-02-01 23:06:07 +01:00
|
|
|
require 'mutant/runner/subject'
|
|
|
|
require 'mutant/runner/mutation'
|
2012-08-28 19:15:10 +02:00
|
|
|
require 'mutant/cli'
|
2013-01-21 20:08:30 +01:00
|
|
|
require 'mutant/cli/classifier'
|
|
|
|
require 'mutant/cli/classifier/namespace'
|
|
|
|
require 'mutant/cli/classifier/method'
|
2012-08-16 18:02:03 +02:00
|
|
|
require 'mutant/color'
|
|
|
|
require 'mutant/differ'
|
2012-08-16 04:10:54 +02:00
|
|
|
require 'mutant/reporter'
|
|
|
|
require 'mutant/reporter/null'
|
|
|
|
require 'mutant/reporter/cli'
|
2013-06-21 17:52:53 +02:00
|
|
|
require 'mutant/reporter/cli/printer'
|
2013-06-21 23:52:57 +02:00
|
|
|
require 'mutant/reporter/cli/printer/config'
|
|
|
|
require 'mutant/reporter/cli/printer/subject'
|
|
|
|
require 'mutant/reporter/cli/printer/killer'
|
|
|
|
require 'mutant/reporter/cli/printer/mutation'
|
2013-06-28 23:23:05 +02:00
|
|
|
require 'mutant/zombifier'
|
2014-04-04 14:14:24 +00:00
|
|
|
require 'mutant/zombifier/file'
|