mutant 0.5.17 → 0.5.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +6 -0
- data/Rakefile +13 -0
- data/config/flay.yml +1 -1
- data/config/reek.yml +8 -1
- data/lib/mutant.rb +18 -3
- data/lib/mutant/cli.rb +6 -3
- data/lib/mutant/constants.rb +3 -0
- data/lib/mutant/expression.rb +110 -0
- data/lib/mutant/expression/method.rb +92 -0
- data/lib/mutant/expression/namespace.rb +90 -0
- data/lib/mutant/matcher/namespace.rb +3 -4
- data/lib/mutant/meta.rb +31 -0
- data/lib/mutant/meta/example.rb +152 -0
- data/lib/mutant/meta/example/dsl.rb +105 -0
- data/lib/mutant/mutator/node.rb +6 -6
- data/lib/mutant/mutator/node/arguments.rb +1 -1
- data/lib/mutant/mutator/node/begin.rb +1 -1
- data/lib/mutant/mutator/node/const.rb +1 -1
- data/lib/mutant/mutator/node/if.rb +6 -6
- data/lib/mutant/mutator/node/literal/array.rb +2 -2
- data/lib/mutant/mutator/node/literal/hash.rb +2 -2
- data/lib/mutant/mutator/node/literal/range.rb +3 -3
- data/lib/mutant/mutator/node/literal/regex.rb +2 -2
- data/lib/mutant/mutator/node/literal/symbol.rb +1 -1
- data/lib/mutant/mutator/node/op_asgn.rb +1 -3
- data/lib/mutant/mutator/node/or_asgn.rb +31 -0
- data/lib/mutant/mutator/node/send.rb +1 -1
- data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -1
- data/lib/mutant/reporter/cli/report/mutation.rb +11 -1
- data/lib/mutant/strategy.rb +1 -1
- data/lib/mutant/version.rb +1 -1
- data/meta/and.rb +12 -0
- data/meta/and_asgn.rb +12 -0
- data/meta/array.rb +30 -0
- data/meta/begin.rb +15 -0
- data/meta/binary.rb +12 -0
- data/meta/block.rb +55 -0
- data/meta/block_pass.rb +8 -0
- data/meta/blockarg.rb +10 -0
- data/meta/boolean.rb +15 -0
- data/meta/break.rb +11 -0
- data/meta/case.rb +303 -0
- data/meta/casgn.rb +9 -0
- data/meta/cbase.rb +8 -0
- data/meta/const.rb +9 -0
- data/meta/cvar.rb +7 -0
- data/meta/cvasgn.rb +10 -0
- data/meta/define.rb +118 -0
- data/meta/defined.rb +7 -0
- data/meta/dstr.rb +10 -0
- data/meta/dsym.rb +11 -0
- data/meta/ensure.rb +9 -0
- data/meta/fixnum.rb +19 -0
- data/meta/float.rb +38 -0
- data/meta/gvar.rb +7 -0
- data/meta/gvasgn.rb +10 -0
- data/meta/hash.rb +25 -0
- data/meta/if.rb +57 -0
- data/meta/ivasgn.rb +10 -0
- data/meta/kwbegin.rb +9 -0
- data/meta/lvar.rb +14 -0
- data/meta/lvasgn.rb +10 -0
- data/meta/masgn.rb +7 -0
- data/meta/match_current_line.rb +14 -0
- data/meta/next.rb +11 -0
- data/meta/nil.rb +5 -0
- data/meta/nthref.rb +14 -0
- data/meta/op_assgn.rb +15 -0
- data/meta/or_asgn.rb +22 -0
- data/meta/range.rb +41 -0
- data/meta/redo.rb +5 -0
- data/meta/regex.rb +20 -0
- data/meta/rescue.rb +38 -0
- data/meta/restarg.rb +11 -0
- data/meta/return.rb +15 -0
- data/meta/self.rb +7 -0
- data/meta/send.rb +240 -0
- data/meta/string.rb +7 -0
- data/meta/super.rb +26 -0
- data/meta/symbol.rb +8 -0
- data/meta/unless.rb +15 -0
- data/meta/while.rb +24 -0
- data/meta/yield.rb +10 -0
- data/mutant.gemspec +1 -0
- data/spec/integration/mutant/corpus_spec.rb +29 -25
- data/spec/spec_helper.rb +2 -0
- data/spec/support/mutation_verifier.rb +1 -0
- data/spec/unit/mutant/cli_new_spec.rb +6 -6
- data/spec/unit/mutant/expression/method_spec.rb +50 -0
- data/spec/unit/mutant/expression/namespace/flat_spec.rb +32 -0
- data/spec/unit/mutant/expression/namespace/recursive_spec.rb +37 -0
- data/spec/unit/mutant/matcher/namespace_spec.rb +2 -2
- data/spec/unit/mutant/mutation_spec.rb +1 -1
- data/spec/unit/mutant/mutator/node_spec.rb +14 -0
- metadata +123 -139
- data/lib/mutant/cli/classifier.rb +0 -139
- data/lib/mutant/cli/classifier/method.rb +0 -105
- data/lib/mutant/cli/classifier/namespace.rb +0 -49
- data/spec/unit/mutant/cli/classifier/method_spec.rb +0 -77
- data/spec/unit/mutant/cli/classifier/namespace/flat_spec.rb +0 -58
- data/spec/unit/mutant/cli/classifier/namespace/recursive_spec.rb +0 -58
- data/spec/unit/mutant/cli/classifier_spec.rb +0 -59
- data/spec/unit/mutant/mutator/node/and_asgn_spec.rb +0 -19
- data/spec/unit/mutant/mutator/node/begin_spec.rb +0 -32
- data/spec/unit/mutant/mutator/node/binary_spec.rb +0 -41
- data/spec/unit/mutant/mutator/node/block_pass_spec.rb +0 -15
- data/spec/unit/mutant/mutator/node/block_spec.rb +0 -83
- data/spec/unit/mutant/mutator/node/blockarg_spec.rb +0 -17
- data/spec/unit/mutant/mutator/node/case_spec.rb +0 -329
- data/spec/unit/mutant/mutator/node/cbase_spec.rb +0 -15
- data/spec/unit/mutant/mutator/node/conditional_loop_spec.rb +0 -58
- data/spec/unit/mutant/mutator/node/const_spec.rb +0 -16
- data/spec/unit/mutant/mutator/node/define_spec.rb +0 -171
- data/spec/unit/mutant/mutator/node/defined_spec.rb +0 -14
- data/spec/unit/mutant/mutator/node/dstr_spec.rb +0 -17
- data/spec/unit/mutant/mutator/node/dsym_spec.rb +0 -18
- data/spec/unit/mutant/mutator/node/ensure_spec.rb +0 -16
- data/spec/unit/mutant/mutator/node/if_spec.rb +0 -77
- data/spec/unit/mutant/mutator/node/kwbegin_spec.rb +0 -16
- data/spec/unit/mutant/mutator/node/literal/array_spec.rb +0 -47
- data/spec/unit/mutant/mutator/node/literal/boolean_spec.rb +0 -25
- data/spec/unit/mutant/mutator/node/literal/fixnum_spec.rb +0 -13
- data/spec/unit/mutant/mutator/node/literal/float_spec.rb +0 -53
- data/spec/unit/mutant/mutator/node/literal/hash_spec.rb +0 -33
- data/spec/unit/mutant/mutator/node/literal/nil_spec.rb +0 -10
- data/spec/unit/mutant/mutator/node/literal/range_spec.rb +0 -56
- data/spec/unit/mutant/mutator/node/literal/regex_spec.rb +0 -36
- data/spec/unit/mutant/mutator/node/literal/string_spec.rb +0 -15
- data/spec/unit/mutant/mutator/node/literal/symbol_spec.rb +0 -15
- data/spec/unit/mutant/mutator/node/loop_ctrl_spec.rb +0 -37
- data/spec/unit/mutant/mutator/node/masgn_spec.rb +0 -14
- data/spec/unit/mutant/mutator/node/match_current_line_spec.rb +0 -21
- data/spec/unit/mutant/mutator/node/named_value/access_spec.rb +0 -78
- data/spec/unit/mutant/mutator/node/named_value/constant_assignment_spec.rb +0 -16
- data/spec/unit/mutant/mutator/node/named_value/variable_assignment_spec.rb +0 -61
- data/spec/unit/mutant/mutator/node/nthref_spec.rb +0 -19
- data/spec/unit/mutant/mutator/node/op_assgn_spec.rb +0 -22
- data/spec/unit/mutant/mutator/node/or_asgn_spec.rb +0 -19
- data/spec/unit/mutant/mutator/node/redo_spec.rb +0 -10
- data/spec/unit/mutant/mutator/node/rescue_spec.rb +0 -63
- data/spec/unit/mutant/mutator/node/restarg_spec.rb +0 -18
- data/spec/unit/mutant/mutator/node/return_spec.rb +0 -31
- data/spec/unit/mutant/mutator/node/send_spec.rb +0 -382
- data/spec/unit/mutant/mutator/node/super_spec.rb +0 -46
- data/spec/unit/mutant/mutator/node/yield_spec.rb +0 -17
    
        data/meta/casgn.rb
    ADDED
    
    
    
        data/meta/cbase.rb
    ADDED
    
    
    
        data/meta/const.rb
    ADDED
    
    
    
        data/meta/cvar.rb
    ADDED
    
    
    
        data/meta/cvasgn.rb
    ADDED
    
    
    
        data/meta/define.rb
    ADDED
    
    | @@ -0,0 +1,118 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mutant::Meta::Example.add do
         | 
| 4 | 
            +
              source 'def foo; end'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              mutation 'def foo; raise; end'
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Mutant::Meta::Example.add do
         | 
| 10 | 
            +
              source "def foo\nfoo\nrescue\nend"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              mutation 'def foo; raise; end'
         | 
| 13 | 
            +
              mutation 'def foo; nil; rescue; end'
         | 
| 14 | 
            +
              mutation 'def foo; end'
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            Mutant::Meta::Example.add do
         | 
| 18 | 
            +
              source 'def foo; true; false; end'
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              # Mutation of each statement in block
         | 
| 21 | 
            +
              mutation 'def foo; true; true; end'
         | 
| 22 | 
            +
              mutation 'def foo; false; false; end'
         | 
| 23 | 
            +
              mutation 'def foo; true; nil; end'
         | 
| 24 | 
            +
              mutation 'def foo; nil; false; end'
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              # Remove statement in block
         | 
| 27 | 
            +
              mutation 'def foo; true; end'
         | 
| 28 | 
            +
              mutation 'def foo; false; end'
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              # Remove all statements
         | 
| 31 | 
            +
              mutation 'def foo; end'
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              mutation 'def foo; raise; end'
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            Mutant::Meta::Example.add do
         | 
| 37 | 
            +
              source 'def foo(a, b); end'
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              # Deletion of each argument
         | 
| 40 | 
            +
              mutation 'def foo(a); end'
         | 
| 41 | 
            +
              mutation 'def foo(b); end'
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              # Deletion of all arguments
         | 
| 44 | 
            +
              mutation 'def foo; end'
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              # Rename each argument
         | 
| 47 | 
            +
              mutation 'def foo(a__mutant__, b); end'
         | 
| 48 | 
            +
              mutation 'def foo(a, b__mutant__); end'
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              # Mutation of body
         | 
| 51 | 
            +
              mutation 'def foo(a, b); raise; end'
         | 
| 52 | 
            +
            end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            Mutant::Meta::Example.add do
         | 
| 55 | 
            +
              source 'def foo(_unused); end'
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              mutation 'def foo(_unused); raise; end'
         | 
| 58 | 
            +
              mutation 'def foo; end'
         | 
| 59 | 
            +
            end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            Mutant::Meta::Example.add do
         | 
| 62 | 
            +
              source 'def foo(_unused = true); end'
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              mutation 'def foo(_unused = nil); end'
         | 
| 65 | 
            +
              mutation 'def foo(_unused = false); end'
         | 
| 66 | 
            +
              mutation 'def foo(_unused = true); raise; end'
         | 
| 67 | 
            +
              mutation 'def foo(_unused); end'
         | 
| 68 | 
            +
              mutation 'def foo; end'
         | 
| 69 | 
            +
            end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            Mutant::Meta::Example.add do
         | 
| 72 | 
            +
              source 'def foo(a = true); end'
         | 
| 73 | 
            +
             | 
| 74 | 
            +
              mutation 'def foo(a); end'
         | 
| 75 | 
            +
              mutation 'def foo(); end'
         | 
| 76 | 
            +
              mutation 'def foo(a = false); end'
         | 
| 77 | 
            +
              mutation 'def foo(a = nil); end'
         | 
| 78 | 
            +
              mutation 'def foo(a__mutant__ = true); end'
         | 
| 79 | 
            +
              mutation 'def foo(a = true); raise; end'
         | 
| 80 | 
            +
            end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            Mutant::Meta::Example.add do
         | 
| 83 | 
            +
              source 'def self.foo; true; false; end'
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              # Body presence mutation
         | 
| 86 | 
            +
              mutation 'def self.foo; false; false; end'
         | 
| 87 | 
            +
              mutation 'def self.foo; true; true; end'
         | 
| 88 | 
            +
              mutation 'def self.foo; true; nil; end'
         | 
| 89 | 
            +
              mutation 'def self.foo; nil; false; end'
         | 
| 90 | 
            +
             | 
| 91 | 
            +
              # Body presence mutation
         | 
| 92 | 
            +
              mutation 'def self.foo; true; end'
         | 
| 93 | 
            +
              mutation 'def self.foo; false; end'
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              # Remove all statements
         | 
| 96 | 
            +
              mutation 'def self.foo; end'
         | 
| 97 | 
            +
             | 
| 98 | 
            +
              mutation 'def self.foo; raise; end'
         | 
| 99 | 
            +
            end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            Mutant::Meta::Example.add do
         | 
| 102 | 
            +
             | 
| 103 | 
            +
              source 'def self.foo(a, b); end'
         | 
| 104 | 
            +
             | 
| 105 | 
            +
              # Deletion of each argument
         | 
| 106 | 
            +
              mutation 'def self.foo(a); end'
         | 
| 107 | 
            +
              mutation 'def self.foo(b); end'
         | 
| 108 | 
            +
             | 
| 109 | 
            +
              # Deletion of all arguments
         | 
| 110 | 
            +
              mutation 'def self.foo; end'
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              # Rename each argument
         | 
| 113 | 
            +
              mutation 'def self.foo(a__mutant__, b); end'
         | 
| 114 | 
            +
              mutation 'def self.foo(a, b__mutant__); end'
         | 
| 115 | 
            +
             | 
| 116 | 
            +
              # Mutation of body
         | 
| 117 | 
            +
              mutation 'def self.foo(a, b); raise; end'
         | 
| 118 | 
            +
            end
         | 
    
        data/meta/defined.rb
    ADDED
    
    
    
        data/meta/dstr.rb
    ADDED
    
    
    
        data/meta/dsym.rb
    ADDED
    
    
    
        data/meta/ensure.rb
    ADDED
    
    
    
        data/meta/fixnum.rb
    ADDED
    
    | @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mutant::Meta::Example.add do
         | 
| 4 | 
            +
              source '10'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              # generic
         | 
| 7 | 
            +
              mutation 'nil'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              # edge cases
         | 
| 10 | 
            +
              mutation '0'
         | 
| 11 | 
            +
              mutation '1'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # negative
         | 
| 14 | 
            +
              mutation '-10'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              # scalar boundary
         | 
| 17 | 
            +
              mutation '9'
         | 
| 18 | 
            +
              mutation '11'
         | 
| 19 | 
            +
            end
         | 
    
        data/meta/float.rb
    ADDED
    
    | @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mutant::Meta::Example.add do
         | 
| 4 | 
            +
              source '10.0'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              # generic
         | 
| 7 | 
            +
              mutation 'nil'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              # edge cases
         | 
| 10 | 
            +
              mutation '0.0'
         | 
| 11 | 
            +
              mutation '1.0'
         | 
| 12 | 
            +
              mutation '(0.0 / 0.0)'
         | 
| 13 | 
            +
              mutation '(1.0 / 0.0)'
         | 
| 14 | 
            +
              mutation '(-1.0 / 0.0)'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              # negative
         | 
| 17 | 
            +
              mutation '-10.0'
         | 
| 18 | 
            +
            end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            Mutant::Meta::Example.add do
         | 
| 21 | 
            +
              source '0.0'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              mutation 'nil'
         | 
| 24 | 
            +
              mutation '1.0'
         | 
| 25 | 
            +
              mutation '(0.0 / 0.0)'
         | 
| 26 | 
            +
              mutation '(1.0 / 0.0)'
         | 
| 27 | 
            +
              mutation '(-1.0 / 0.0)'
         | 
| 28 | 
            +
            end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            Mutant::Meta::Example.add do
         | 
| 31 | 
            +
              source '-0.0'
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              mutation 'nil'
         | 
| 34 | 
            +
              mutation '1.0'
         | 
| 35 | 
            +
              mutation '(0.0 / 0.0)'
         | 
| 36 | 
            +
              mutation '(1.0 / 0.0)'
         | 
| 37 | 
            +
              mutation '(-1.0 / 0.0)'
         | 
| 38 | 
            +
            end
         | 
    
        data/meta/gvar.rb
    ADDED
    
    
    
        data/meta/gvasgn.rb
    ADDED
    
    
    
        data/meta/hash.rb
    ADDED
    
    | @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mutant::Meta::Example.add do
         | 
| 4 | 
            +
              source '{true => true, false => false}'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              # Literal replaced with nil
         | 
| 7 | 
            +
              mutation 'nil'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              # Mutation of each key and value in hash
         | 
| 10 | 
            +
              mutation '{ false => true  ,  false => false }'
         | 
| 11 | 
            +
              mutation '{ nil   => true  ,  false => false }'
         | 
| 12 | 
            +
              mutation '{ true  => false ,  false => false }'
         | 
| 13 | 
            +
              mutation '{ true  => nil   ,  false => false }'
         | 
| 14 | 
            +
              mutation '{ true  => true  ,  true  => false }'
         | 
| 15 | 
            +
              mutation '{ true  => true  ,  nil   => false }'
         | 
| 16 | 
            +
              mutation '{ true  => true  ,  false => true  }'
         | 
| 17 | 
            +
              mutation '{ true  => true  ,  false => nil   }'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              # Remove each key once
         | 
| 20 | 
            +
              mutation '{ true => true }'
         | 
| 21 | 
            +
              mutation '{ false => false }'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              # Empty hash
         | 
| 24 | 
            +
              mutation '{}'
         | 
| 25 | 
            +
            end
         | 
    
        data/meta/if.rb
    ADDED
    
    | @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mutant::Meta::Example.add do
         | 
| 4 | 
            +
              source 'if :condition; true; else false; end'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              # mutation of condition
         | 
| 7 | 
            +
              mutation 'if :condition__mutant__; true; else false; end'
         | 
| 8 | 
            +
              mutation 'if !:condition;          true; else false; end'
         | 
| 9 | 
            +
              mutation 'if nil;                  true; else false; end'
         | 
| 10 | 
            +
              mutation 'if true;                 true; else false; end'
         | 
| 11 | 
            +
              mutation 'if false;                true; else false; end'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # Deleted else branch
         | 
| 14 | 
            +
              mutation 'if :condition; true end'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              # Deleted if branch resuting in unless rendering
         | 
| 17 | 
            +
              mutation 'unless :condition; false; end'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              # Deleted if branch with promoting else branch to if branch
         | 
| 20 | 
            +
              mutation 'if :condition; false end'
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              # mutation of if body
         | 
| 23 | 
            +
              mutation 'if :condition; false; else false; end'
         | 
| 24 | 
            +
              mutation 'if :condition; nil;   else false; end'
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              # mutation of else body
         | 
| 27 | 
            +
              mutation 'if :condition; true;  else true;  end'
         | 
| 28 | 
            +
              mutation 'if :condition; true;  else nil;   end'
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              mutation 'nil'
         | 
| 31 | 
            +
            end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            Mutant::Meta::Example.add do
         | 
| 34 | 
            +
              source 'if condition; true; end'
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              mutation 'if !condition; true;  end'
         | 
| 37 | 
            +
              mutation 'if condition;  false; end'
         | 
| 38 | 
            +
              mutation 'if condition;  nil;   end'
         | 
| 39 | 
            +
              mutation 'if true;       true;  end'
         | 
| 40 | 
            +
              mutation 'if false;      true;  end'
         | 
| 41 | 
            +
              mutation 'if nil;        true;  end'
         | 
| 42 | 
            +
              mutation 'nil'
         | 
| 43 | 
            +
            end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            Mutant::Meta::Example.add do
         | 
| 46 | 
            +
              source 'unless :condition; true; end'
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              mutation 'unless !:condition;          true;  end'
         | 
| 49 | 
            +
              mutation 'unless :condition__mutant__; true;  end'
         | 
| 50 | 
            +
              mutation 'unless nil;                  true;  end'
         | 
| 51 | 
            +
              mutation 'unless :condition;           false; end'
         | 
| 52 | 
            +
              mutation 'unless :condition;           nil;   end'
         | 
| 53 | 
            +
              mutation 'unless true;                 true;  end'
         | 
| 54 | 
            +
              mutation 'unless false;                true;  end'
         | 
| 55 | 
            +
              mutation 'if     :condition;           true;  end'
         | 
| 56 | 
            +
              mutation 'nil'
         | 
| 57 | 
            +
            end
         | 
    
        data/meta/ivasgn.rb
    ADDED
    
    
    
        data/meta/kwbegin.rb
    ADDED
    
    
    
        data/meta/lvar.rb
    ADDED
    
    | @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mutant::Meta::Example.add do
         | 
| 4 | 
            +
              source 'a = nil; a'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              mutation 'a = nil; nil'
         | 
| 7 | 
            +
              mutation 'a = nil'
         | 
| 8 | 
            +
              # TODO: fix invalid AST
         | 
| 9 | 
            +
              #   These ASTs are not valid and should NOT be emitted
         | 
| 10 | 
            +
              #   Mutations of lvarasgn need to be special cased to avoid this.
         | 
| 11 | 
            +
              mutation s(:begin, s(:lvasgn, :a__mutant__, s(:nil)), s(:lvar, :a))
         | 
| 12 | 
            +
              mutation s(:begin, s(:nil), s(:lvar, :a))
         | 
| 13 | 
            +
              mutation s(:lvar, :a)
         | 
| 14 | 
            +
            end
         | 
    
        data/meta/lvasgn.rb
    ADDED