mutant 0.8.3 → 0.8.4
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 +8 -0
- data/Gemfile +1 -4
- data/Gemfile.shared +3 -0
- data/Rakefile +0 -2
- data/config/flay.yml +1 -1
- data/config/rubocop.yml +8 -0
- data/lib/mutant.rb +2 -0
- data/lib/mutant/ast/meta/restarg.rb +15 -0
- data/lib/mutant/ast/meta/symbol.rb +15 -0
- data/lib/mutant/cli.rb +11 -11
- data/lib/mutant/config.rb +1 -1
- data/lib/mutant/env.rb +1 -1
- data/lib/mutant/matcher/config.rb +2 -2
- data/lib/mutant/mutator/node/block.rb +16 -0
- data/lib/mutant/mutator/node/define.rb +14 -0
- data/lib/mutant/mutator/node/send.rb +12 -1
- data/lib/mutant/mutator/node/send/binary.rb +25 -1
- data/lib/mutant/parallel.rb +2 -2
- data/lib/mutant/result.rb +1 -1
- data/lib/mutant/runner/sink.rb +2 -2
- data/lib/mutant/version.rb +1 -1
- data/meta/begin.rb +0 -2
- data/meta/block.rb +15 -0
- data/meta/def.rb +25 -0
- data/meta/or_asgn.rb +9 -0
- data/meta/send.rb +41 -1
- data/mutant-rspec.gemspec +0 -2
- data/mutant.gemspec +5 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/support/corpus.rb +1 -0
- data/spec/support/shared_context.rb +5 -5
- data/spec/unit/mutant/cli_spec.rb +6 -6
- data/spec/unit/mutant/env/boostrap_spec.rb +3 -3
- data/spec/unit/mutant/env_spec.rb +1 -1
- data/spec/unit/mutant/matcher/compiler_spec.rb +1 -1
- data/spec/unit/mutant/parallel/master_spec.rb +2 -2
- data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +1 -1
- data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +3 -3
- data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +1 -1
- data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +2 -2
- data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +3 -3
- data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +5 -5
- data/spec/unit/mutant/reporter/cli/printer/status_spec.rb +5 -5
- data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +2 -2
- data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +2 -2
- data/spec/unit/mutant/reporter/cli_spec.rb +6 -4
- data/spec/unit/mutant/result_spec.rb +23 -0
- data/spec/unit/mutant/runner/sink/mutation_spec.rb +8 -8
- data/spec/unit/mutant/selector/expression_spec.rb +1 -1
- data/test_app/Gemfile.rspec3.2 +1 -0
- data/test_app/Gemfile.rspec3.3 +1 -0
- data/test_app/spec/unit/test_app/literal_spec.rb +0 -2
- metadata +27 -18
- data/Guardfile +0 -16
- data/test_app/Gemfile.rspec3.0 +0 -6
- data/test_app/Gemfile.rspec3.1 +0 -6
| @@ -12,7 +12,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer::SubjectResult do | |
| 12 12 | 
             
                end
         | 
| 13 13 |  | 
| 14 14 | 
             
                context 'on partial coverage' do
         | 
| 15 | 
            -
                   | 
| 15 | 
            +
                  with(:mutation_a_test_result) { { passed: true } }
         | 
| 16 16 |  | 
| 17 17 | 
             
                  it_reports <<-'STR'
         | 
| 18 18 | 
             
                    subject-a
         | 
| @@ -26,7 +26,7 @@ RSpec.describe Mutant::Reporter::CLI::Printer::SubjectResult do | |
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 28 | 
             
                context 'without results' do
         | 
| 29 | 
            -
                   | 
| 29 | 
            +
                  with(:subject_a_result) { { mutation_results: [] } }
         | 
| 30 30 |  | 
| 31 31 | 
             
                  it_reports <<-'STR'
         | 
| 32 32 | 
             
                    subject-a
         | 
| @@ -132,7 +132,8 @@ RSpec.describe Mutant::Reporter::CLI do | |
| 132 132 |  | 
| 133 133 | 
             
                context 'with non default coverage expectation' do
         | 
| 134 134 | 
             
                  let(:format) { progressive_format }
         | 
| 135 | 
            -
             | 
| 135 | 
            +
             | 
| 136 | 
            +
                  with(:config) { { expected_coverage: 0.1r } }
         | 
| 136 137 |  | 
| 137 138 | 
             
                  it_reports(<<-REPORT)
         | 
| 138 139 | 
             
                    Mutant configuration:
         | 
| @@ -204,7 +205,7 @@ RSpec.describe Mutant::Reporter::CLI do | |
| 204 205 | 
             
                  let(:format) { progressive_format }
         | 
| 205 206 |  | 
| 206 207 | 
             
                  context 'with empty scheduler' do
         | 
| 207 | 
            -
                     | 
| 208 | 
            +
                    with(:env_result) { { subject_results: [] } }
         | 
| 208 209 |  | 
| 209 210 | 
             
                    let(:tty?) { true }
         | 
| 210 211 |  | 
| @@ -212,14 +213,15 @@ RSpec.describe Mutant::Reporter::CLI do | |
| 212 213 | 
             
                  end
         | 
| 213 214 |  | 
| 214 215 | 
             
                  context 'with last mutation present' do
         | 
| 215 | 
            -
                     | 
| 216 | 
            +
                    with(:env_result) { { subject_results: [subject_a_result] } }
         | 
| 216 217 |  | 
| 217 218 | 
             
                    context 'when mutation is successful' do
         | 
| 218 219 | 
             
                      it_reports "(02/02) 100% - killtime: 2.00s runtime: 4.00s overhead: 2.00s\n"
         | 
| 219 220 | 
             
                    end
         | 
| 220 221 |  | 
| 221 222 | 
             
                    context 'when mutation is NOT successful' do
         | 
| 222 | 
            -
                       | 
| 223 | 
            +
                      with(:mutation_a_test_result) { { passed: true } }
         | 
| 224 | 
            +
             | 
| 223 225 | 
             
                      it_reports "(01/02)  50% - killtime: 2.00s runtime: 4.00s overhead: 2.00s\n"
         | 
| 224 226 | 
             
                    end
         | 
| 225 227 | 
             
                  end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            RSpec.describe Mutant::Result do
         | 
| 2 | 
            +
              describe '.included' do
         | 
| 3 | 
            +
                let(:object) do
         | 
| 4 | 
            +
                  Class.new do
         | 
| 5 | 
            +
                    include Mutant::Result
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    def collection
         | 
| 8 | 
            +
                      [[1]]
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    sum :length, :collection
         | 
| 12 | 
            +
                  end.new
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it 'includes mixin to freeze instances' do
         | 
| 16 | 
            +
                  expect(object.frozen?).to be(true)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                it 'it makes DSL methods from Mutant::Result available' do
         | 
| 20 | 
            +
                  expect(object.length).to be(1)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -52,7 +52,7 @@ describe Mutant::Runner::Sink::Mutation do | |
| 52 52 | 
             
                context 'one result' do
         | 
| 53 53 | 
             
                  include_context 'one result'
         | 
| 54 54 |  | 
| 55 | 
            -
                   | 
| 55 | 
            +
                  with(:subject_a_result) { { mutation_results: [mutation_a_result] } }
         | 
| 56 56 |  | 
| 57 57 | 
             
                  let(:expected_status) do
         | 
| 58 58 | 
             
                    Mutant::Result::Env.new(env: env, runtime: 0.0, subject_results: [subject_a_result])
         | 
| @@ -88,7 +88,7 @@ describe Mutant::Runner::Sink::Mutation do | |
| 88 88 | 
             
                    end
         | 
| 89 89 |  | 
| 90 90 | 
             
                    context 'when result failed' do
         | 
| 91 | 
            -
                       | 
| 91 | 
            +
                      with(:mutation_a_test_result) { { passed: true } }
         | 
| 92 92 |  | 
| 93 93 | 
             
                      it { should be(false) }
         | 
| 94 94 | 
             
                    end
         | 
| @@ -102,13 +102,13 @@ describe Mutant::Runner::Sink::Mutation do | |
| 102 102 | 
             
                    end
         | 
| 103 103 |  | 
| 104 104 | 
             
                    context 'when first result is unsuccessful' do
         | 
| 105 | 
            -
                       | 
| 105 | 
            +
                      with(:mutation_a_test_result) { { passed: true } }
         | 
| 106 106 |  | 
| 107 107 | 
             
                      it { should be(false) }
         | 
| 108 108 | 
             
                    end
         | 
| 109 109 |  | 
| 110 110 | 
             
                    context 'when second result is unsuccessful' do
         | 
| 111 | 
            -
                       | 
| 111 | 
            +
                      with(:mutation_b_test_result) { { passed: true } }
         | 
| 112 112 |  | 
| 113 113 | 
             
                      it { should be(false) }
         | 
| 114 114 | 
             
                    end
         | 
| @@ -116,7 +116,7 @@ describe Mutant::Runner::Sink::Mutation do | |
| 116 116 | 
             
                end
         | 
| 117 117 |  | 
| 118 118 | 
             
                context 'with fail fast' do
         | 
| 119 | 
            -
                   | 
| 119 | 
            +
                  with(:config) { { fail_fast: true } }
         | 
| 120 120 |  | 
| 121 121 | 
             
                  context 'no results' do
         | 
| 122 122 | 
             
                    it { should be(false) }
         | 
| @@ -130,7 +130,7 @@ describe Mutant::Runner::Sink::Mutation do | |
| 130 130 | 
             
                    end
         | 
| 131 131 |  | 
| 132 132 | 
             
                    context 'when result failed' do
         | 
| 133 | 
            -
                       | 
| 133 | 
            +
                      with(:mutation_a_test_result) { { passed: true } }
         | 
| 134 134 |  | 
| 135 135 | 
             
                      it { should be(true) }
         | 
| 136 136 | 
             
                    end
         | 
| @@ -144,13 +144,13 @@ describe Mutant::Runner::Sink::Mutation do | |
| 144 144 | 
             
                    end
         | 
| 145 145 |  | 
| 146 146 | 
             
                    context 'when first result is unsuccessful' do
         | 
| 147 | 
            -
                       | 
| 147 | 
            +
                      with(:mutation_a_test_result) { { passed: true } }
         | 
| 148 148 |  | 
| 149 149 | 
             
                      it { should be(true) }
         | 
| 150 150 | 
             
                    end
         | 
| 151 151 |  | 
| 152 152 | 
             
                    context 'when second result is unsuccessful' do
         | 
| 153 | 
            -
                       | 
| 153 | 
            +
                      with(:mutation_b_test_result) { { passed: true } }
         | 
| 154 154 |  | 
| 155 155 | 
             
                      it { should be(true) }
         | 
| 156 156 | 
             
                    end
         | 
| @@ -19,7 +19,7 @@ RSpec.describe Mutant::Selector::Expression do | |
| 19 19 | 
             
                let(:mutation_subject) { subject_class.new(context, node)                           }
         | 
| 20 20 | 
             
                let(:context)          { double('Context')                                          }
         | 
| 21 21 | 
             
                let(:node)             { double('Node')                                             }
         | 
| 22 | 
            -
                let(:config)           { Mutant::Config::DEFAULT. | 
| 22 | 
            +
                let(:config)           { Mutant::Config::DEFAULT.with(integration: integration)     }
         | 
| 23 23 | 
             
                let(:integration)      { double('Integration', all_tests: all_tests)                }
         | 
| 24 24 | 
             
                let(:test_a)           { double('test a', expression: parse_expression('SubjectA')) }
         | 
| 25 25 | 
             
                let(:test_b)           { double('test b', expression: parse_expression('SubjectB')) }
         | 
    
        data/test_app/Gemfile.rspec3.2
    CHANGED
    
    
    
        data/test_app/Gemfile.rspec3.3
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mutant
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.8. | 
| 4 | 
            +
              version: 0.8.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Markus Schirp
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-09- | 
| 11 | 
            +
            date: 2015-09-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: parser
         | 
| @@ -72,14 +72,14 @@ dependencies: | |
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 0.2. | 
| 75 | 
            +
                    version: 0.2.5
         | 
| 76 76 | 
             
              type: :runtime
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 0.2. | 
| 82 | 
            +
                    version: 0.2.5
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: procto
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -184,14 +184,14 @@ dependencies: | |
| 184 184 | 
             
                requirements:
         | 
| 185 185 | 
             
                - - "~>"
         | 
| 186 186 | 
             
                  - !ruby/object:Gem::Version
         | 
| 187 | 
            -
                    version: 0. | 
| 187 | 
            +
                    version: 0.3.0
         | 
| 188 188 | 
             
              type: :runtime
         | 
| 189 189 | 
             
              prerelease: false
         | 
| 190 190 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 191 191 | 
             
                requirements:
         | 
| 192 192 | 
             
                - - "~>"
         | 
| 193 193 | 
             
                  - !ruby/object:Gem::Version
         | 
| 194 | 
            -
                    version: 0. | 
| 194 | 
            +
                    version: 0.3.0
         | 
| 195 195 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 196 196 | 
             
              name: concord
         | 
| 197 197 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -207,25 +207,33 @@ dependencies: | |
| 207 207 | 
             
                  - !ruby/object:Gem::Version
         | 
| 208 208 | 
             
                    version: 0.1.5
         | 
| 209 209 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 210 | 
            -
              name:  | 
| 210 | 
            +
              name: devtools
         | 
| 211 211 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 212 212 | 
             
                requirements:
         | 
| 213 213 | 
             
                - - "~>"
         | 
| 214 214 | 
             
                  - !ruby/object:Gem::Version
         | 
| 215 | 
            -
                    version:  | 
| 216 | 
            -
                - - ">="
         | 
| 217 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 218 | 
            -
                    version: 1.3.5
         | 
| 215 | 
            +
                    version: 0.1.1
         | 
| 219 216 | 
             
              type: :development
         | 
| 220 217 | 
             
              prerelease: false
         | 
| 221 218 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 222 219 | 
             
                requirements:
         | 
| 223 220 | 
             
                - - "~>"
         | 
| 224 221 | 
             
                  - !ruby/object:Gem::Version
         | 
| 225 | 
            -
                    version:  | 
| 226 | 
            -
             | 
| 222 | 
            +
                    version: 0.1.1
         | 
| 223 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 224 | 
            +
              name: bundler
         | 
| 225 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 226 | 
            +
                requirements:
         | 
| 227 | 
            +
                - - "~>"
         | 
| 228 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 229 | 
            +
                    version: '1.10'
         | 
| 230 | 
            +
              type: :development
         | 
| 231 | 
            +
              prerelease: false
         | 
| 232 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 233 | 
            +
                requirements:
         | 
| 234 | 
            +
                - - "~>"
         | 
| 227 235 | 
             
                  - !ruby/object:Gem::Version
         | 
| 228 | 
            -
                    version: 1. | 
| 236 | 
            +
                    version: '1.10'
         | 
| 229 237 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 230 238 | 
             
              name: ffi
         | 
| 231 239 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -256,7 +264,7 @@ files: | |
| 256 264 | 
             
            - ".ruby-gemset"
         | 
| 257 265 | 
             
            - Changelog.md
         | 
| 258 266 | 
             
            - Gemfile
         | 
| 259 | 
            -
            -  | 
| 267 | 
            +
            - Gemfile.shared
         | 
| 260 268 | 
             
            - LICENSE
         | 
| 261 269 | 
             
            - README.md
         | 
| 262 270 | 
             
            - Rakefile
         | 
| @@ -281,7 +289,9 @@ files: | |
| 281 289 | 
             
            - lib/mutant/ast/meta.rb
         | 
| 282 290 | 
             
            - lib/mutant/ast/meta/optarg.rb
         | 
| 283 291 | 
             
            - lib/mutant/ast/meta/resbody.rb
         | 
| 292 | 
            +
            - lib/mutant/ast/meta/restarg.rb
         | 
| 284 293 | 
             
            - lib/mutant/ast/meta/send.rb
         | 
| 294 | 
            +
            - lib/mutant/ast/meta/symbol.rb
         | 
| 285 295 | 
             
            - lib/mutant/ast/named_children.rb
         | 
| 286 296 | 
             
            - lib/mutant/ast/node_predicates.rb
         | 
| 287 297 | 
             
            - lib/mutant/ast/nodes.rb
         | 
| @@ -560,6 +570,7 @@ files: | |
| 560 570 | 
             
            - spec/unit/mutant/require_highjack_spec.rb
         | 
| 561 571 | 
             
            - spec/unit/mutant/result/env_spec.rb
         | 
| 562 572 | 
             
            - spec/unit/mutant/result/subject_spec.rb
         | 
| 573 | 
            +
            - spec/unit/mutant/result_spec.rb
         | 
| 563 574 | 
             
            - spec/unit/mutant/runner/driver_spec.rb
         | 
| 564 575 | 
             
            - spec/unit/mutant/runner/sink/mutation_spec.rb
         | 
| 565 576 | 
             
            - spec/unit/mutant/runner_spec.rb
         | 
| @@ -571,8 +582,6 @@ files: | |
| 571 582 | 
             
            - spec/unit/mutant/zombifier_spec.rb
         | 
| 572 583 | 
             
            - spec/unit/mutant_spec.rb
         | 
| 573 584 | 
             
            - test_app/.rspec
         | 
| 574 | 
            -
            - test_app/Gemfile.rspec3.0
         | 
| 575 | 
            -
            - test_app/Gemfile.rspec3.1
         | 
| 576 585 | 
             
            - test_app/Gemfile.rspec3.2
         | 
| 577 586 | 
             
            - test_app/Gemfile.rspec3.3
         | 
| 578 587 | 
             
            - test_app/lib/test_app.rb
         | 
| @@ -677,6 +686,7 @@ test_files: | |
| 677 686 | 
             
            - spec/unit/mutant/require_highjack_spec.rb
         | 
| 678 687 | 
             
            - spec/unit/mutant/result/env_spec.rb
         | 
| 679 688 | 
             
            - spec/unit/mutant/result/subject_spec.rb
         | 
| 689 | 
            +
            - spec/unit/mutant/result_spec.rb
         | 
| 680 690 | 
             
            - spec/unit/mutant/runner/driver_spec.rb
         | 
| 681 691 | 
             
            - spec/unit/mutant/runner/sink/mutation_spec.rb
         | 
| 682 692 | 
             
            - spec/unit/mutant/runner_spec.rb
         | 
| @@ -687,4 +697,3 @@ test_files: | |
| 687 697 | 
             
            - spec/unit/mutant/warning_filter_spec.rb
         | 
| 688 698 | 
             
            - spec/unit/mutant/zombifier_spec.rb
         | 
| 689 699 | 
             
            - spec/unit/mutant_spec.rb
         | 
| 690 | 
            -
            has_rdoc: 
         | 
    
        data/Guardfile
    DELETED
    
    | @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            # encoding: utf-8
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            guard :bundler do
         | 
| 4 | 
            -
              watch('Gemfile')
         | 
| 5 | 
            -
            end
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            guard :rspec, :all_after_pass => false, :all_on_start => false, :cmd => 'bundle exec rspec --fail-fast --seed 0' do
         | 
| 8 | 
            -
              # run all specs if the spec_helper or supporting files files are modified
         | 
| 9 | 
            -
              watch('spec/spec_helper.rb')                      { 'spec/unit' }
         | 
| 10 | 
            -
              watch(%r{\Aspec/(?:lib|support|shared)/.+\.rb\z}) { 'spec/unit' }
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              watch(%r{lib/.*.rb})                              { 'spec/unit' }
         | 
| 13 | 
            -
             | 
| 14 | 
            -
              # run a spec if it is modified
         | 
| 15 | 
            -
              watch(%r{\Aspec/.+_spec\.rb\z})
         | 
| 16 | 
            -
            end
         | 
    
        data/test_app/Gemfile.rspec3.0
    DELETED