mutant 0.5.12 → 0.5.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +10 -0
  3. data/circle.yml +1 -1
  4. data/config/flay.yml +1 -1
  5. data/config/flog.yml +1 -1
  6. data/config/mutant.yml +1 -2
  7. data/config/reek.yml +12 -3
  8. data/config/rubocop.yml +4 -0
  9. data/lib/mutant.rb +45 -16
  10. data/lib/mutant/constants.rb +11 -11
  11. data/lib/mutant/delegator.rb +50 -0
  12. data/lib/mutant/{differ.rb → diff.rb} +5 -5
  13. data/lib/mutant/killer.rb +29 -106
  14. data/lib/mutant/matcher/method.rb +2 -11
  15. data/lib/mutant/mutation.rb +17 -3
  16. data/lib/mutant/mutation/evil.rb +2 -10
  17. data/lib/mutant/mutation/neutral.rb +4 -30
  18. data/lib/mutant/mutator/node/literal/fixnum.rb +0 -1
  19. data/lib/mutant/mutator/node/literal/float.rb +0 -1
  20. data/lib/mutant/mutator/node/literal/string.rb +0 -1
  21. data/lib/mutant/mutator/node/literal/symbol.rb +6 -2
  22. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +8 -3
  23. data/lib/mutant/mutator/util/symbol.rb +3 -1
  24. data/lib/mutant/node_helpers.rb +1 -3
  25. data/lib/mutant/reporter.rb +10 -0
  26. data/lib/mutant/reporter/cli.rb +15 -2
  27. data/lib/mutant/reporter/cli/printer.rb +12 -105
  28. data/lib/mutant/reporter/cli/progress.rb +12 -0
  29. data/lib/mutant/reporter/cli/progress/config.rb +32 -0
  30. data/lib/mutant/reporter/cli/{printer/killer.rb → progress/mutation.rb} +9 -16
  31. data/lib/mutant/reporter/cli/progress/noop.rb +22 -0
  32. data/lib/mutant/reporter/cli/progress/subject.rb +118 -0
  33. data/lib/mutant/reporter/cli/registry.rb +77 -0
  34. data/lib/mutant/reporter/cli/report.rb +12 -0
  35. data/lib/mutant/reporter/cli/report/config.rb +118 -0
  36. data/lib/mutant/reporter/cli/report/mutation.rb +112 -0
  37. data/lib/mutant/reporter/cli/report/subject.rb +33 -0
  38. data/lib/mutant/reporter/null.rb +13 -0
  39. data/lib/mutant/reporter/trace.rb +41 -0
  40. data/lib/mutant/runner.rb +22 -20
  41. data/lib/mutant/runner/config.rb +6 -5
  42. data/lib/mutant/runner/killer.rb +59 -0
  43. data/lib/mutant/runner/mutation.rb +17 -10
  44. data/lib/mutant/runner/subject.rb +14 -4
  45. data/lib/mutant/strategy.rb +30 -16
  46. data/lib/mutant/subject/method/instance.rb +1 -1
  47. data/lib/mutant/test.rb +86 -0
  48. data/lib/mutant/version.rb +1 -1
  49. data/spec/integration/mutant/null_spec.rb +18 -0
  50. data/spec/integration/mutant/rspec_spec.rb +1 -1
  51. data/spec/spec_helper.rb +0 -2
  52. data/spec/unit/mutant/diff_spec.rb +162 -0
  53. data/spec/unit/mutant/mutation_spec.rb +8 -5
  54. data/spec/unit/mutant/mutator/node/and_asgn_spec.rb +1 -9
  55. data/spec/unit/mutant/mutator/node/block_spec.rb +6 -18
  56. data/spec/unit/mutant/mutator/node/case_spec.rb +10 -16
  57. data/spec/unit/mutant/mutator/node/define_spec.rb +5 -17
  58. data/spec/unit/mutant/mutator/node/dstr_spec.rb +0 -6
  59. data/spec/unit/mutant/mutator/node/dsym_spec.rb +0 -5
  60. data/spec/unit/mutant/mutator/node/if_spec.rb +13 -17
  61. data/spec/unit/mutant/mutator/node/literal/fixnum_spec.rb +1 -7
  62. data/spec/unit/mutant/mutator/node/literal/float_spec.rb +0 -9
  63. data/spec/unit/mutant/mutator/node/literal/range_spec.rb +0 -10
  64. data/spec/unit/mutant/mutator/node/literal/string_spec.rb +1 -5
  65. data/spec/unit/mutant/mutator/node/literal/symbol_spec.rb +1 -5
  66. data/spec/unit/mutant/mutator/node/named_value/access_spec.rb +4 -7
  67. data/spec/unit/mutant/mutator/node/named_value/constant_assignment_spec.rb +1 -5
  68. data/spec/unit/mutant/mutator/node/named_value/variable_assignment_spec.rb +4 -8
  69. data/spec/unit/mutant/mutator/node/op_assgn_spec.rb +0 -7
  70. data/spec/unit/mutant/mutator/node/or_asgn_spec.rb +1 -9
  71. data/spec/unit/mutant/mutator/node/rescue_spec.rb +0 -4
  72. data/spec/unit/mutant/reporter/null_spec.rb +11 -0
  73. data/spec/unit/mutant/runner/config_spec.rb +6 -7
  74. data/spec/unit/mutant/runner/mutation_spec.rb +101 -0
  75. data/spec/unit/mutant/runner/subject_spec.rb +10 -7
  76. data/spec/unit/mutant_spec.rb +53 -0
  77. metadata +65 -62
  78. data/lib/mutant/killer/forked.rb +0 -46
  79. data/lib/mutant/killer/forking.rb +0 -46
  80. data/lib/mutant/killer/static.rb +0 -34
  81. data/lib/mutant/mutator/node/literal/dynamic.rb +0 -27
  82. data/lib/mutant/random.rb +0 -38
  83. data/lib/mutant/reporter/cli/printer/config.rb +0 -154
  84. data/lib/mutant/reporter/cli/printer/mutation.rb +0 -103
  85. data/lib/mutant/reporter/cli/printer/subject.rb +0 -150
  86. data/spec/unit/mutant/differ/diff_spec.rb +0 -123
  87. data/spec/unit/mutant/differ_spec.rb +0 -42
  88. data/spec/unit/mutant/killer/success_predicate_spec.rb +0 -30
  89. data/spec/unit/mutant/rspec/killer_spec.rb +0 -57
  90. data/spec/unit/mutant/runner/mutation/killer_spec.rb +0 -44
@@ -3,15 +3,11 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Mutant::Mutator::Node::NamedValue::VariableAssignment, 'mutations' do
6
- before do
7
- Mutant::Random.stub(hex_string: 'random')
8
- end
9
-
10
6
  let(:source) { 'A = true' }
11
7
 
12
8
  let(:mutations) do
13
9
  mutations = []
14
- mutations << 'SRANDOM = true'
10
+ mutations << 'A__MUTANT__ = true'
15
11
  mutations << 'A = false'
16
12
  mutations << 'A = nil'
17
13
  end
@@ -3,16 +3,12 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Mutant::Mutator::Node::NamedValue::VariableAssignment, 'mutations' do
6
- before do
7
- Mutant::Random.stub(hex_string: 'random')
8
- end
9
-
10
6
  context 'global variable' do
11
7
  let(:source) { '$a = true' }
12
8
 
13
9
  let(:mutations) do
14
10
  mutations = []
15
- mutations << '$srandom = true'
11
+ mutations << '$a__mutant__ = true'
16
12
  mutations << '$a = false'
17
13
  mutations << '$a = nil'
18
14
  mutations << 'nil'
@@ -26,7 +22,7 @@ describe Mutant::Mutator::Node::NamedValue::VariableAssignment, 'mutations' do
26
22
 
27
23
  let(:mutations) do
28
24
  mutations = []
29
- mutations << '@@srandom = true'
25
+ mutations << '@@a__mutant__ = true'
30
26
  mutations << '@@a = false'
31
27
  mutations << '@@a = nil'
32
28
  mutations << 'nil'
@@ -40,7 +36,7 @@ describe Mutant::Mutator::Node::NamedValue::VariableAssignment, 'mutations' do
40
36
 
41
37
  let(:mutations) do
42
38
  mutations = []
43
- mutations << '@srandom = true'
39
+ mutations << '@a__mutant__ = true'
44
40
  mutations << '@a = false'
45
41
  mutations << '@a = nil'
46
42
  mutations << 'nil'
@@ -54,7 +50,7 @@ describe Mutant::Mutator::Node::NamedValue::VariableAssignment, 'mutations' do
54
50
 
55
51
  let(:mutations) do
56
52
  mutations = []
57
- mutations << 'srandom = true'
53
+ mutations << 'a__mutant__ = true'
58
54
  mutations << 'a = false'
59
55
  mutations << 'a = nil'
60
56
  mutations << 'nil'
@@ -3,8 +3,6 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Mutant::Mutator::Node::Generic, 'op_asgn' do
6
- let(:random_fixnum) { 5 }
7
-
8
6
  let(:source) { '@a.b += 1' }
9
7
 
10
8
  let(:mutations) do
@@ -13,7 +11,6 @@ describe Mutant::Mutator::Node::Generic, 'op_asgn' do
13
11
  mutations << '@a.b += 2'
14
12
  mutations << '@a.b += 0'
15
13
  mutations << '@a.b += nil'
16
- mutations << '@a.b += 5'
17
14
  mutations << 'nil.b += 1'
18
15
  mutations << 'nil'
19
16
  # TODO: fix invalid AST
@@ -21,9 +18,5 @@ describe Mutant::Mutator::Node::Generic, 'op_asgn' do
21
18
  mutations << s(:op_asgn, s(:ivar, :@a), :+, s(:int, 1))
22
19
  end
23
20
 
24
- before do
25
- Mutant::Random.stub(fixnum: random_fixnum)
26
- end
27
-
28
21
  it_should_behave_like 'a mutator'
29
22
  end
@@ -3,25 +3,17 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Mutant::Mutator::Node::OpAsgn, 'or_asgn' do
6
- let(:random_fixnum) { 5 }
7
- let(:random_string) { 'random' }
8
-
9
6
  let(:source) { 'a ||= 1' }
10
7
 
11
8
  let(:mutations) do
12
9
  mutations = []
13
- mutations << 'srandom ||= 1'
10
+ mutations << 'a__mutant__ ||= 1'
14
11
  mutations << 'a ||= nil'
15
12
  mutations << 'a ||= 0'
16
13
  mutations << 'a ||= -1'
17
14
  mutations << 'a ||= 2'
18
- mutations << 'a ||= 5'
19
15
  mutations << 'nil'
20
16
  end
21
17
 
22
- before do
23
- Mutant::Random.stub(fixnum: random_fixnum, hex_string: random_string)
24
- end
25
-
26
18
  it_should_behave_like 'a mutator'
27
19
  end
@@ -4,10 +4,6 @@ require 'spec_helper'
4
4
 
5
5
  describe Mutant::Mutator::Node::Generic, 'rescue' do
6
6
 
7
- before do
8
- Mutant::Random.stub(hex_string: 'random')
9
- end
10
-
11
7
  context 'multiple exception selectors and assignment' do
12
8
  let(:source) { 'begin; rescue ExceptionA, ExceptionB => error; true; end' }
13
9
 
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Reporter::Null do
4
+ let(:object) { described_class.new }
5
+
6
+ describe '#report' do
7
+ subject { object.report(double('some input')) }
8
+
9
+ it_should_behave_like 'a command method'
10
+ end
11
+ end
@@ -18,15 +18,14 @@ describe Mutant::Runner::Config do
18
18
  )
19
19
  end
20
20
 
21
- let(:fail_fast) { false }
22
- let(:expected_coverage) { 100.0 }
23
- let(:reporter) { double('Reporter') }
24
- let(:strategy) { double('Strategy') }
25
- let(:subject_a) { double('Subject A') }
26
- let(:subject_b) { double('Subject B') }
21
+ let(:fail_fast) { false }
22
+ let(:expected_coverage) { 100.0 }
23
+ let(:reporter) { Mutant::Reporter::Trace.new }
24
+ let(:strategy) { double('Strategy') }
25
+ let(:subject_a) { double('Subject A') }
26
+ let(:subject_b) { double('Subject B') }
27
27
 
28
28
  before do
29
- reporter.stub(report: reporter)
30
29
  strategy.stub(:setup)
31
30
  strategy.stub(:teardown)
32
31
  Mutant::Runner.stub(:run).with(config, subject_a).and_return(runner_a)
@@ -0,0 +1,101 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Mutant::Runner::Mutation do
6
+ let(:object) { described_class.new(config, mutation, tests) }
7
+
8
+ let(:reporter) { double('Reporter') }
9
+ let(:mutation) { double('Mutation', class: Mutant::Mutation) }
10
+ let(:strategy) { double('Strategy') }
11
+ let(:killer_a) { Mutant::Killer.new(test: test_a, mutation: mutation) }
12
+ let(:killer_b) { Mutant::Killer.new(test: test_b, mutation: mutation) }
13
+ let(:runner_a) { double('Runner A', success?: success_a, stop?: stop_a) }
14
+ let(:runner_b) { double('Runner B', success?: success_b, stop?: stop_b) }
15
+ let(:runners) { [runner_a, runner_b] }
16
+ let(:killers) { [killer_a, killer_b] }
17
+ let(:fail_fast) { false }
18
+ let(:success_a) { true }
19
+ let(:success_b) { true }
20
+ let(:stop_a) { false }
21
+ let(:stop_b) { false }
22
+ let(:test_a) { double('test a') }
23
+ let(:test_b) { double('test b') }
24
+ let(:tests) { [test_a, test_b] }
25
+
26
+ before do
27
+ expect(Mutant::Runner).to receive(:run).with(config, killer_a).and_return(runner_a)
28
+ expect(Mutant::Runner).to receive(:run).with(config, killer_b).and_return(runner_b)
29
+ end
30
+
31
+ let(:config) do
32
+ double(
33
+ 'Config',
34
+ fail_fast: fail_fast,
35
+ reporter: reporter,
36
+ strategy: strategy
37
+ )
38
+ end
39
+
40
+ before do
41
+ reporter.stub(progress: reporter)
42
+ strategy.stub(killers: killers)
43
+ end
44
+
45
+ describe '#stop?' do
46
+ subject { object.stop? }
47
+
48
+ context 'when fail fast is false' do
49
+ it { should be(false) }
50
+ end
51
+
52
+ context 'when fail fast is true' do
53
+ let(:fail_fast) { true }
54
+
55
+ context 'when all killers are successful' do
56
+ it { should be(false) }
57
+ end
58
+
59
+ context 'when one killer is NOT successful' do
60
+ let(:success_b) { false }
61
+ it { should be(false) }
62
+ end
63
+
64
+ context 'when all killer are NOT successful' do
65
+ let(:success_b) { false }
66
+ let(:success_a) { false }
67
+
68
+ it { should be(true) }
69
+ end
70
+ end
71
+ end
72
+
73
+ describe '#success?' do
74
+ subject { object.success? }
75
+
76
+ context 'when all killers are successful' do
77
+ it { should be(true) }
78
+ end
79
+
80
+ context 'when one killer is not successful' do
81
+ let(:success_b) { false }
82
+
83
+ it { should be(true) }
84
+ end
85
+
86
+ context 'when all killer are not successful' do
87
+ let(:success_a) { false }
88
+ let(:success_b) { false }
89
+
90
+ it { should be(false) }
91
+ end
92
+ end
93
+
94
+ describe '#killers' do
95
+ subject { object.killers }
96
+
97
+ it { should eql(runners) }
98
+
99
+ it_should_behave_like 'an idempotent method'
100
+ end
101
+ end
@@ -15,10 +15,11 @@ describe Mutant::Runner::Subject, '#success?' do
15
15
  )
16
16
  end
17
17
 
18
- let(:reporter) { double('Reporter') }
19
- let(:config) { double('Config', reporter: reporter) }
20
- let(:mutation_a) { double('Mutation A') }
21
- let(:mutation_b) { double('Mutation B') }
18
+ let(:reporter) { Mutant::Reporter::Trace.new }
19
+ let(:config) { double('Config', reporter: reporter, strategy: strategy) }
20
+ let(:mutation_a) { double('Mutation A') }
21
+ let(:mutation_b) { double('Mutation B') }
22
+ let(:strategy) { double('Strategy') }
22
23
 
23
24
  let(:runner_a) do
24
25
  double('Runner A', success?: success_a, stop?: stop_a)
@@ -28,10 +29,12 @@ describe Mutant::Runner::Subject, '#success?' do
28
29
  double('Runner B', success?: success_b, stop?: stop_b)
29
30
  end
30
31
 
32
+ let(:tests) { [double('test a'), double('test b')] }
33
+
31
34
  before do
32
- reporter.stub(report: reporter)
33
- Mutant::Runner.stub(:run).with(config, mutation_a).and_return(runner_a)
34
- Mutant::Runner.stub(:run).with(config, mutation_b).and_return(runner_b)
35
+ expect(strategy).to receive(:tests).with(mutation_subject).and_return(tests)
36
+ expect(Mutant::Runner).to receive(:run).with(config, mutation_a, tests).and_return(runner_a)
37
+ expect(Mutant::Runner).to receive(:run).with(config, mutation_b, tests).and_return(runner_b)
35
38
  end
36
39
 
37
40
  context 'with failing mutations' do
@@ -38,4 +38,57 @@ describe Mutant do
38
38
  expect(inspect).to be_frozen
39
39
  end
40
40
  end
41
+
42
+ describe '.isolate' do
43
+ let(:object) { described_class }
44
+
45
+ let(:expected_return) { :foo }
46
+
47
+ subject { object.isolate(&block) }
48
+
49
+ def redirect_stderr
50
+ $stderr = File.open('/dev/null')
51
+ end
52
+
53
+ unless ENV['COVERAGE']
54
+ context 'when block returns mashallable data, and process exists zero' do
55
+ let(:block) do
56
+ lambda do
57
+ :data_from_child_process
58
+ end
59
+ end
60
+
61
+ it { should eql(:data_from_child_process) }
62
+ end
63
+ end
64
+
65
+ context 'when block does return marshallable data' do
66
+ let(:block) do
67
+ lambda do
68
+ redirect_stderr
69
+ $stderr # not mashallable, nothing written to pipe and raised exceptions in child
70
+ end
71
+ end
72
+
73
+ it 'raises an exception' do
74
+ expect { subject }.to raise_error(Mutant::IsolationError, 'Childprocess wrote un-unmarshallable data')
75
+ end
76
+ end
77
+
78
+ context 'when block does return marshallable data, but process exits with nonzero exitstatus' do
79
+ let(:block) do
80
+ lambda do
81
+ redirect_stderr
82
+ at_exit do
83
+ raise
84
+ end
85
+ :foo
86
+ end
87
+ end
88
+
89
+ it 'raises an exception' do
90
+ expect { subject }.to raise_error(Mutant::IsolationError, 'Childprocess exited with nonzero exit status: 1')
91
+ end
92
+ end
93
+ end
41
94
  end
metadata CHANGED
@@ -1,229 +1,229 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-09 00:00:00.000000000 Z
11
+ date: 2014-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ast
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: diff-lcs
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: morpher
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.2.3
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.2.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: procto
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.0.2
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
82
  version: 0.0.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: abstract_type
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.0.7
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.0.7
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: unparser
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: 0.1.12
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.1.12
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: ice_nine
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.11.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.11.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: adamantium
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ~>
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.2.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ~>
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.2.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: memoizable
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ~>
144
144
  - !ruby/object:Gem::Version
145
145
  version: 0.4.2
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ~>
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.4.2
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: equalizer
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ~>
158
158
  - !ruby/object:Gem::Version
159
159
  version: 0.0.9
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ~>
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.0.9
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: inflecto
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - "~>"
171
+ - - ~>
172
172
  - !ruby/object:Gem::Version
173
173
  version: 0.0.2
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - "~>"
178
+ - - ~>
179
179
  - !ruby/object:Gem::Version
180
180
  version: 0.0.2
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: anima
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - "~>"
185
+ - - ~>
186
186
  - !ruby/object:Gem::Version
187
187
  version: 0.2.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
194
  version: 0.2.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: concord
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - "~>"
199
+ - - ~>
200
200
  - !ruby/object:Gem::Version
201
201
  version: 0.1.5
202
202
  type: :runtime
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - "~>"
206
+ - - ~>
207
207
  - !ruby/object:Gem::Version
208
208
  version: 0.1.5
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: bundler
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - "~>"
213
+ - - ~>
214
214
  - !ruby/object:Gem::Version
215
215
  version: '1.3'
216
- - - ">="
216
+ - - '>='
217
217
  - !ruby/object:Gem::Version
218
218
  version: 1.3.5
219
219
  type: :development
220
220
  prerelease: false
221
221
  version_requirements: !ruby/object:Gem::Requirement
222
222
  requirements:
223
- - - "~>"
223
+ - - ~>
224
224
  - !ruby/object:Gem::Version
225
225
  version: '1.3'
226
- - - ">="
226
+ - - '>='
227
227
  - !ruby/object:Gem::Version
228
228
  version: 1.3.5
229
229
  description: Mutation testing for ruby
@@ -236,11 +236,11 @@ extra_rdoc_files:
236
236
  - TODO
237
237
  - LICENSE
238
238
  files:
239
- - ".gitignore"
240
- - ".rspec"
241
- - ".rubocop.yml"
242
- - ".ruby-gemset"
243
- - ".travis.yml"
239
+ - .gitignore
240
+ - .rspec
241
+ - .rubocop.yml
242
+ - .ruby-gemset
243
+ - .travis.yml
244
244
  - Changelog.md
245
245
  - Gemfile
246
246
  - Gemfile.devtools
@@ -270,11 +270,9 @@ files:
270
270
  - lib/mutant/constants.rb
271
271
  - lib/mutant/context.rb
272
272
  - lib/mutant/context/scope.rb
273
- - lib/mutant/differ.rb
273
+ - lib/mutant/delegator.rb
274
+ - lib/mutant/diff.rb
274
275
  - lib/mutant/killer.rb
275
- - lib/mutant/killer/forked.rb
276
- - lib/mutant/killer/forking.rb
277
- - lib/mutant/killer/static.rb
278
276
  - lib/mutant/loader.rb
279
277
  - lib/mutant/matcher.rb
280
278
  - lib/mutant/matcher/chain.rb
@@ -310,7 +308,6 @@ files:
310
308
  - lib/mutant/mutator/node/literal.rb
311
309
  - lib/mutant/mutator/node/literal/array.rb
312
310
  - lib/mutant/mutator/node/literal/boolean.rb
313
- - lib/mutant/mutator/node/literal/dynamic.rb
314
311
  - lib/mutant/mutator/node/literal/fixnum.rb
315
312
  - lib/mutant/mutator/node/literal/float.rb
316
313
  - lib/mutant/mutator/node/literal/hash.rb
@@ -347,18 +344,25 @@ files:
347
344
  - lib/mutant/mutator/util/array.rb
348
345
  - lib/mutant/mutator/util/symbol.rb
349
346
  - lib/mutant/node_helpers.rb
350
- - lib/mutant/random.rb
351
347
  - lib/mutant/reporter.rb
352
348
  - lib/mutant/reporter/cli.rb
353
349
  - lib/mutant/reporter/cli/printer.rb
354
- - lib/mutant/reporter/cli/printer/config.rb
355
- - lib/mutant/reporter/cli/printer/killer.rb
356
- - lib/mutant/reporter/cli/printer/mutation.rb
357
- - lib/mutant/reporter/cli/printer/subject.rb
350
+ - lib/mutant/reporter/cli/progress.rb
351
+ - lib/mutant/reporter/cli/progress/config.rb
352
+ - lib/mutant/reporter/cli/progress/mutation.rb
353
+ - lib/mutant/reporter/cli/progress/noop.rb
354
+ - lib/mutant/reporter/cli/progress/subject.rb
355
+ - lib/mutant/reporter/cli/registry.rb
356
+ - lib/mutant/reporter/cli/report.rb
357
+ - lib/mutant/reporter/cli/report/config.rb
358
+ - lib/mutant/reporter/cli/report/mutation.rb
359
+ - lib/mutant/reporter/cli/report/subject.rb
358
360
  - lib/mutant/reporter/null.rb
361
+ - lib/mutant/reporter/trace.rb
359
362
  - lib/mutant/require_highjack.rb
360
363
  - lib/mutant/runner.rb
361
364
  - lib/mutant/runner/config.rb
365
+ - lib/mutant/runner/killer.rb
362
366
  - lib/mutant/runner/mutation.rb
363
367
  - lib/mutant/runner/subject.rb
364
368
  - lib/mutant/strategy.rb
@@ -366,6 +370,7 @@ files:
366
370
  - lib/mutant/subject/method.rb
367
371
  - lib/mutant/subject/method/instance.rb
368
372
  - lib/mutant/subject/method/singleton.rb
373
+ - lib/mutant/test.rb
369
374
  - lib/mutant/version.rb
370
375
  - lib/mutant/walker.rb
371
376
  - lib/mutant/warning_expectation.rb
@@ -376,6 +381,7 @@ files:
376
381
  - mutant-rspec.gemspec
377
382
  - mutant.gemspec
378
383
  - spec/integration/mutant/corpus_spec.rb
384
+ - spec/integration/mutant/null_spec.rb
379
385
  - spec/integration/mutant/rspec_spec.rb
380
386
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
381
387
  - spec/integration/mutant/zombie_spec.rb
@@ -398,9 +404,7 @@ files:
398
404
  - spec/unit/mutant/context/root_spec.rb
399
405
  - spec/unit/mutant/context/scope/root_spec.rb
400
406
  - spec/unit/mutant/context/scope/unqualified_name_spec.rb
401
- - spec/unit/mutant/differ/diff_spec.rb
402
- - spec/unit/mutant/differ_spec.rb
403
- - spec/unit/mutant/killer/success_predicate_spec.rb
407
+ - spec/unit/mutant/diff_spec.rb
404
408
  - spec/unit/mutant/loader/eval_spec.rb
405
409
  - spec/unit/mutant/matcher/chain_spec.rb
406
410
  - spec/unit/mutant/matcher/method/instance_spec.rb
@@ -453,10 +457,10 @@ files:
453
457
  - spec/unit/mutant/mutator/node/super_spec.rb
454
458
  - spec/unit/mutant/mutator/node/yield_spec.rb
455
459
  - spec/unit/mutant/mutator_spec.rb
460
+ - spec/unit/mutant/reporter/null_spec.rb
456
461
  - spec/unit/mutant/require_highjack_spec.rb
457
- - spec/unit/mutant/rspec/killer_spec.rb
458
462
  - spec/unit/mutant/runner/config_spec.rb
459
- - spec/unit/mutant/runner/mutation/killer_spec.rb
463
+ - spec/unit/mutant/runner/mutation_spec.rb
460
464
  - spec/unit/mutant/runner/subject_spec.rb
461
465
  - spec/unit/mutant/strategy_spec.rb
462
466
  - spec/unit/mutant/subject/context_spec.rb
@@ -494,22 +498,23 @@ require_paths:
494
498
  - lib
495
499
  required_ruby_version: !ruby/object:Gem::Requirement
496
500
  requirements:
497
- - - ">="
501
+ - - '>='
498
502
  - !ruby/object:Gem::Version
499
503
  version: 1.9.3
500
504
  required_rubygems_version: !ruby/object:Gem::Requirement
501
505
  requirements:
502
- - - ">="
506
+ - - '>='
503
507
  - !ruby/object:Gem::Version
504
508
  version: '0'
505
509
  requirements: []
506
510
  rubyforge_project:
507
- rubygems_version: 2.2.2
511
+ rubygems_version: 2.0.14
508
512
  signing_key:
509
513
  specification_version: 4
510
514
  summary: Mutation testing tool for ruby under MRI and Rubinius
511
515
  test_files:
512
516
  - spec/integration/mutant/corpus_spec.rb
517
+ - spec/integration/mutant/null_spec.rb
513
518
  - spec/integration/mutant/rspec_spec.rb
514
519
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
515
520
  - spec/integration/mutant/zombie_spec.rb
@@ -522,9 +527,7 @@ test_files:
522
527
  - spec/unit/mutant/context/root_spec.rb
523
528
  - spec/unit/mutant/context/scope/root_spec.rb
524
529
  - spec/unit/mutant/context/scope/unqualified_name_spec.rb
525
- - spec/unit/mutant/differ/diff_spec.rb
526
- - spec/unit/mutant/differ_spec.rb
527
- - spec/unit/mutant/killer/success_predicate_spec.rb
530
+ - spec/unit/mutant/diff_spec.rb
528
531
  - spec/unit/mutant/loader/eval_spec.rb
529
532
  - spec/unit/mutant/matcher/chain_spec.rb
530
533
  - spec/unit/mutant/matcher/method/instance_spec.rb
@@ -577,10 +580,10 @@ test_files:
577
580
  - spec/unit/mutant/mutator/node/super_spec.rb
578
581
  - spec/unit/mutant/mutator/node/yield_spec.rb
579
582
  - spec/unit/mutant/mutator_spec.rb
583
+ - spec/unit/mutant/reporter/null_spec.rb
580
584
  - spec/unit/mutant/require_highjack_spec.rb
581
- - spec/unit/mutant/rspec/killer_spec.rb
582
585
  - spec/unit/mutant/runner/config_spec.rb
583
- - spec/unit/mutant/runner/mutation/killer_spec.rb
586
+ - spec/unit/mutant/runner/mutation_spec.rb
584
587
  - spec/unit/mutant/runner/subject_spec.rb
585
588
  - spec/unit/mutant/strategy_spec.rb
586
589
  - spec/unit/mutant/subject/context_spec.rb