a7c3dc5339
* Uses a monkeypach extension to parser with a list of valid node types. * Add nodes, found to be uncovered to generic mutator.
166 lines
5.3 KiB
Ruby
166 lines
5.3 KiB
Ruby
# encoding: utf-8
|
|
|
|
require 'stringio'
|
|
require 'benchmark'
|
|
require 'set'
|
|
require 'adamantium'
|
|
require 'ice_nine'
|
|
require 'abstract_type'
|
|
require 'descendants_tracker'
|
|
require 'securerandom'
|
|
require 'equalizer'
|
|
require 'digest/sha1'
|
|
require 'inflecto'
|
|
require 'parser'
|
|
require 'parser/current'
|
|
require 'unparser'
|
|
require 'ice_nine'
|
|
require 'diff/lcs'
|
|
require 'diff/lcs/hunk'
|
|
require 'rspec'
|
|
require 'anima'
|
|
require 'concord'
|
|
require 'rspec'
|
|
|
|
# Monkeypatch on parser with a list of allowed nodes.
|
|
# Will be pushed upstream once turning out to be correct.
|
|
module Parser
|
|
module Meta
|
|
NODE_TYPES =
|
|
%w(
|
|
true false nil int float str dstr str
|
|
sym dsym xstr regopt regexp array splat
|
|
array pair kwsplat hash irange erange self
|
|
lvar ivar cvar gvar const defined? lvasgn
|
|
ivasgn cvasgn gvasgn casgn mlhs masgn op_asgn
|
|
op_asgn and_asgn ensure rescue arg_expr
|
|
or_asgn and_asgn or_asgn back_ref nth_ref
|
|
match_with_lvasgn match_current_line
|
|
module class sclass def defs undef alias args
|
|
cbase arg optarg restarg blockarg block_pass args def kwarg kwoptarg
|
|
kwrestarg send super zsuper yield block send
|
|
and not or if when case while until while_post
|
|
until_post for break next redo return resbody
|
|
kwbegin begin retry preexe postexe iflipflop eflipflop
|
|
).map(&:to_sym).to_set.freeze
|
|
end # Meta
|
|
end # Parser
|
|
|
|
# Library namespace
|
|
module Mutant
|
|
# The empty string used within this namespace
|
|
EMPTY_STRING = ''.freeze
|
|
end # Mutant
|
|
|
|
require 'mutant/version'
|
|
require 'mutant/cache'
|
|
require 'mutant/node_helpers'
|
|
require 'mutant/singleton_methods'
|
|
require 'mutant/constants'
|
|
require 'mutant/support/method_object'
|
|
require 'mutant/random'
|
|
require 'mutant/predicate'
|
|
require 'mutant/predicate/attribute'
|
|
require 'mutant/predicate/whitelist'
|
|
require 'mutant/predicate/blacklist'
|
|
require 'mutant/predicate/matcher'
|
|
require 'mutant/mutator'
|
|
require 'mutant/mutation'
|
|
require 'mutant/mutation/evil'
|
|
require 'mutant/mutation/neutral'
|
|
require 'mutant/mutator/registry'
|
|
require 'mutant/mutator/util'
|
|
require 'mutant/mutator/util/array'
|
|
require 'mutant/mutator/util/symbol'
|
|
require 'mutant/mutator/node'
|
|
require 'mutant/mutator/node/generic'
|
|
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'
|
|
require 'mutant/mutator/node/argument'
|
|
require 'mutant/mutator/node/arguments'
|
|
require 'mutant/mutator/node/blockarg'
|
|
require 'mutant/mutator/node/begin'
|
|
require 'mutant/mutator/node/connective/binary'
|
|
require 'mutant/mutator/node/const'
|
|
require 'mutant/mutator/node/dstr'
|
|
require 'mutant/mutator/node/dsym'
|
|
require 'mutant/mutator/node/kwbegin'
|
|
require 'mutant/mutator/node/named_value/access'
|
|
require 'mutant/mutator/node/named_value/constant_assignment'
|
|
require 'mutant/mutator/node/named_value/variable_assignment'
|
|
require 'mutant/mutator/node/loop_control'
|
|
require 'mutant/mutator/node/noop'
|
|
require 'mutant/mutator/node/op_asgn'
|
|
require 'mutant/mutator/node/conditional_loop'
|
|
require 'mutant/mutator/node/yield'
|
|
require 'mutant/mutator/node/super'
|
|
require 'mutant/mutator/node/zsuper'
|
|
require 'mutant/mutator/node/restarg'
|
|
require 'mutant/mutator/node/send'
|
|
require 'mutant/mutator/node/send/binary'
|
|
require 'mutant/mutator/node/when'
|
|
require 'mutant/mutator/node/define'
|
|
require 'mutant/mutator/node/mlhs'
|
|
require 'mutant/mutator/node/nthref'
|
|
require 'mutant/mutator/node/masgn'
|
|
require 'mutant/mutator/node/return'
|
|
require 'mutant/mutator/node/block'
|
|
require 'mutant/mutator/node/if'
|
|
require 'mutant/mutator/node/case'
|
|
require 'mutant/mutator/node/splat'
|
|
require 'mutant/mutator/node/resbody'
|
|
require 'mutant/config'
|
|
require 'mutant/loader'
|
|
require 'mutant/context'
|
|
require 'mutant/context/scope'
|
|
require 'mutant/subject'
|
|
require 'mutant/subject/method'
|
|
require 'mutant/subject/method/instance'
|
|
require 'mutant/subject/method/singleton'
|
|
require 'mutant/matcher'
|
|
require 'mutant/matcher/chain'
|
|
require 'mutant/matcher/method'
|
|
require 'mutant/matcher/method/finder'
|
|
require 'mutant/matcher/method/singleton'
|
|
require 'mutant/matcher/method/instance'
|
|
require 'mutant/matcher/methods'
|
|
require 'mutant/matcher/namespace'
|
|
require 'mutant/matcher/scope'
|
|
require 'mutant/matcher/filter'
|
|
require 'mutant/killer'
|
|
require 'mutant/killer/static'
|
|
require 'mutant/killer/rspec'
|
|
require 'mutant/killer/forking'
|
|
require 'mutant/killer/forked'
|
|
require 'mutant/strategy'
|
|
require 'mutant/strategy/rspec'
|
|
require 'mutant/runner'
|
|
require 'mutant/runner/config'
|
|
require 'mutant/runner/subject'
|
|
require 'mutant/runner/mutation'
|
|
require 'mutant/cli'
|
|
require 'mutant/cli/classifier'
|
|
require 'mutant/cli/classifier/namespace'
|
|
require 'mutant/cli/classifier/method'
|
|
require 'mutant/cli/builder'
|
|
require 'mutant/color'
|
|
require 'mutant/differ'
|
|
require 'mutant/reporter'
|
|
require 'mutant/reporter/null'
|
|
require 'mutant/reporter/cli'
|
|
require 'mutant/reporter/cli/printer'
|
|
require 'mutant/reporter/cli/printer/config'
|
|
require 'mutant/reporter/cli/printer/subject'
|
|
require 'mutant/reporter/cli/printer/killer'
|
|
require 'mutant/reporter/cli/printer/mutation'
|
|
require 'mutant/zombifier'
|
|
|