mutant 0.3.0.beta7 → 0.3.0.beta8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92ef8b77a7307525dfa389089d65fa060ff58d03
4
- data.tar.gz: 31fbcfab2667cc6e4777bef50cf8561c2f8aa1e2
3
+ metadata.gz: 360fa704d17fde6a8699cf73cb30cfb1fe421e05
4
+ data.tar.gz: 9dbd9a5918ce529871b86fd5a80f1067f49da439
5
5
  SHA512:
6
- metadata.gz: f64c6da579a3a5c6d86c4b7547d8197536fbc1aa6f98132e52cb7fed15bfc93a4a87818dfbd10a5b38a355e1bf47cc73d6441444f208c3ac06b746bc8ef24fac
7
- data.tar.gz: 1d5a18099e4b35cd21e3bdfe0e316a306fdaa86b5c6cbd29c4fd1aabf5e9685a18815f59660c54bc2c3689565268ed5d00bce0e48c5ed4c6f213c9500da7ff6a
6
+ metadata.gz: b1139b749e2e1e7a94060d8638113373681e9fafc8707b7b24d919ca9f41ab72e9d82c29fe4d44d7a3a5af32e6c7f7d1210096e14fec0df2803060901aa67b63
7
+ data.tar.gz: 40cfbe6e7022486af8d50ff8bbb943bc5946e0ed6402aa46a339a3fbd15f1317c760677365d8270b24c4744d96bbbc43a00fcb50d2083c2884fef5a22ba8a7f9
data/Rakefile CHANGED
@@ -1,2 +1,10 @@
1
1
  require 'devtools'
2
2
  Devtools.init_rake_tasks
3
+
4
+ task('metrics:mutant').clear
5
+
6
+ namespace :metrics do
7
+ task :mutant do
8
+ $stderr.puts 'Mutant self mutation is disable till mutant is fast enough for travis'
9
+ end
10
+ end
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 16
3
- total_score: 632
3
+ total_score: 640
data/lib/mutant.rb CHANGED
@@ -27,7 +27,6 @@ require 'mutant/node_helpers'
27
27
  require 'mutant/singleton_methods'
28
28
  require 'mutant/constants'
29
29
  require 'mutant/support/method_object'
30
- require 'mutant/helper'
31
30
  require 'mutant/random'
32
31
  require 'mutant/mutator'
33
32
  require 'mutant/mutation'
data/lib/mutant/differ.rb CHANGED
@@ -1,10 +1,7 @@
1
1
  module Mutant
2
2
  # Class to create diffs from source code
3
3
  class Differ
4
- include Adamantium::Flat
5
-
6
- FORMAT = :unified
7
- CONTEXT_LINES = 3
4
+ include Adamantium::Flat, Concord.new(:old, :new)
8
5
 
9
6
  # Return source diff
10
7
  #
@@ -14,12 +11,15 @@ module Mutant
14
11
  #
15
12
  def diff
16
13
  output = ''
17
- @diffs.each do |piece|
18
- hunk = Diff::LCS::Hunk.new(@old, @new, piece, CONTEXT_LINES, length_difference)
19
- output << hunk.diff(FORMAT)
14
+ case diffs.length
15
+ when 0
16
+ nil
17
+ when 1
18
+ output = Diff::LCS::Hunk.new(old, new, diffs.first, max_length, 0).diff(:unified)
20
19
  output << "\n"
20
+ else
21
+ raise 'Mutation resulted in more than one diff, should not happen!'
21
22
  end
22
- output
23
23
  end
24
24
  memoize :diff
25
25
 
@@ -36,23 +36,20 @@ module Mutant
36
36
  end
37
37
  memoize :colorized_diff
38
38
 
39
- private
40
-
41
- # Initialize differ object
39
+ # Return new object
42
40
  #
43
41
  # @param [String] old
44
42
  # @param [String] new
45
43
  #
46
- # @return [undefined]
44
+ # @return [Differ]
47
45
  #
48
46
  # @api private
49
47
  #
50
- def initialize(old, new)
51
- @old, @new = lines(old), lines(new)
52
- @diffs = Diff::LCS.diff(@old, @new)
48
+ def self.build(old, new)
49
+ new(lines(old), lines(new))
53
50
  end
54
51
 
55
- # Break up sorce into lines
52
+ # Break up source into lines
56
53
  #
57
54
  # @param [String] source
58
55
  #
@@ -60,30 +57,32 @@ module Mutant
60
57
  #
61
58
  # @api private
62
59
  #
63
- def lines(source)
64
- self.class.lines(source)
60
+ def self.lines(source)
61
+ source.lines.map { |line| line.chomp }
65
62
  end
63
+ private_class_method :lines
64
+
65
+ private
66
66
 
67
- # Return length difference
67
+ # Return diffs
68
68
  #
69
- # @return [Fixnum]
69
+ # @return [Array<Array>]
70
70
  #
71
71
  # @api private
72
72
  #
73
- def length_difference
74
- @new.size - @old.size
73
+ def diffs
74
+ Diff::LCS.diff(old, new)
75
75
  end
76
+ memoize :diffs
76
77
 
77
- # Break up source into lines
78
- #
79
- # @param [String] source
78
+ # Return max length
80
79
  #
81
- # @return [Array<String>]
80
+ # @return [Fixnum]
82
81
  #
83
82
  # @api private
84
83
  #
85
- def self.lines(source)
86
- source.lines.map { |line| line.chomp }
84
+ def max_length
85
+ old.length > new.length ? old.length : new.length
87
86
  end
88
87
 
89
88
  # Return colorized diff line
@@ -96,13 +95,11 @@ module Mutant
96
95
  # @api private
97
96
  #
98
97
  def self.colorize_line(line)
99
- case line[0].chr
98
+ case line[0]
100
99
  when '+'
101
100
  Color::GREEN
102
101
  when '-'
103
102
  Color::RED
104
- when '@'
105
- line[1].chr == '@' ? Color::BLUE : Color::NONE
106
103
  else
107
104
  Color::NONE
108
105
  end.format(line)
@@ -192,7 +192,7 @@ module Mutant
192
192
  # @api private
193
193
  #
194
194
  def dup_input
195
- Helper.deep_clone(input)
195
+ input.dup
196
196
  end
197
197
 
198
198
  end # Mutator
@@ -21,9 +21,8 @@ module Mutant
21
21
  emit_arguments_mutations
22
22
  if body
23
23
  emit_body_mutations
24
- else
25
- emit_body(NEW_OBJECT)
26
24
  end
25
+ emit_body(RAISE)
27
26
  end
28
27
 
29
28
  end # Block
@@ -14,11 +14,8 @@ module Mutant
14
14
  #
15
15
  def dispatch
16
16
  emit_arguments_mutations
17
- if body
18
- emit_body_mutations
19
- else
20
- emit_body(NEW_OBJECT)
21
- end
17
+ emit_body(RAISE)
18
+ emit_body_mutations if body
22
19
  end
23
20
 
24
21
  # Mutator for instance method defines
@@ -21,6 +21,8 @@ module Mutant
21
21
  INFINITY = s(:send, s(:float, 1.0), :/, s(:args, s(:float, 0.0)))
22
22
  NEW_OBJECT = s(:send, s(:const, s(:cbase), :Object), :new)
23
23
 
24
+ RAISE = s(:send, nil, :raise)
25
+
24
26
  N_NIL = s(:nil)
25
27
  N_EMPTY = s(:empty)
26
28
 
@@ -38,7 +38,7 @@ module Mutant
38
38
  #
39
39
  def colorized_diff
40
40
  original, current = mutation.original_source, mutation.source
41
- differ = Differ.new(original, current)
41
+ differ = Differ.build(original, current)
42
42
  diff = color? ? differ.colorized_diff : differ.diff
43
43
 
44
44
  if diff.empty?
data/mutant.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'mutant'
5
- gem.version = '0.3.0.beta7'
5
+ gem.version = '0.3.0.beta8'
6
6
  gem.authors = [ 'Markus Schirp' ]
7
7
  gem.email = [ 'mbj@schirp-dso.com' ]
8
8
 
@@ -16,8 +16,8 @@ Gem::Specification.new do |gem|
16
16
  gem.extra_rdoc_files = %w[TODO LICENSE]
17
17
  gem.executables = [ 'mutant', 'zombie' ]
18
18
 
19
- gem.add_runtime_dependency('parser', '~> 2.0.beta9')
20
- gem.add_runtime_dependency('unparser', '~> 0.0.6')
19
+ gem.add_runtime_dependency('parser', '~> 2.0.beta10')
20
+ gem.add_runtime_dependency('unparser', '~> 0.0.7')
21
21
  gem.add_runtime_dependency('ice_nine', '~> 0.8.0')
22
22
  gem.add_runtime_dependency('descendants_tracker', '~> 0.0.1')
23
23
  gem.add_runtime_dependency('adamantium', '~> 0.0.8')
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant, '.singleton_subclass_instance' do
4
+ let(:object) { described_class }
5
+
6
+ subject { object.singleton_subclass_instance(name, superclass, &block) }
7
+
8
+ before do
9
+ subject
10
+ end
11
+
12
+ let(:name) { 'Test' }
13
+ let(:block) { proc { def foo; end } }
14
+ let(:superclass) { Class.new }
15
+
16
+ let(:generated) { superclass.const_get(:Test) }
17
+
18
+ it_should_behave_like 'a command method'
19
+
20
+ it 'sets expected name' do
21
+ name = generated.class.name
22
+ name.should eql("::#{self.name}")
23
+ name.should be_frozen
24
+ end
25
+
26
+ it 'stores instance of subclass' do
27
+ generated.should be_kind_of(superclass)
28
+ end
29
+
30
+ it 'evaluates the context of proc inside subclass' do
31
+ generated.should respond_to(:foo)
32
+ end
33
+
34
+ it 'generates nice #inspect' do
35
+ inspect = generated.inspect
36
+ inspect.should eql("::#{self.name}")
37
+ inspect.should be_frozen
38
+ end
39
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Differ, '.build' do
4
+ let(:object) { described_class }
5
+
6
+ subject { object.build(old_string, new_string) }
7
+
8
+ let(:old_string) { "foo\nbar" }
9
+ let(:new_string) { "bar\nbaz" }
10
+
11
+ it { should eql(Mutant::Differ.new(%w(foo bar), %w(bar baz))) }
12
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Differ, '.colorize_line' do
4
+ let(:object) { described_class }
5
+
6
+ subject { object.colorize_line(line) }
7
+
8
+ context 'line beginning with "+"' do
9
+ let(:line) { '+line' }
10
+ it { should eql(Mutant::Color::GREEN.format(line)) }
11
+ end
12
+
13
+ context 'line beginning with "-"' do
14
+ let(:line) { '-line' }
15
+ it { should eql(Mutant::Color::RED.format(line)) }
16
+ end
17
+
18
+ context 'line beginning in other char' do
19
+ let(:line) { ' line' }
20
+ it { should eql(line) }
21
+ end
22
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mutant::Differ, '#diff' do
4
+ let(:object) { described_class.new(old, new) }
5
+
6
+ subject { object.diff }
7
+
8
+ context 'when there is a diff at begin of hunk' do
9
+ let(:old) { %w(foo bar) }
10
+ let(:new) { %w(baz bar) }
11
+
12
+ it { should eql("@@ -1,3 +1,3 @@\n-foo\n+baz\n bar\n") }
13
+
14
+ it_should_behave_like 'an idempotent method'
15
+ end
16
+
17
+ context 'when there is a diff NOT at begin of hunk' do
18
+ let(:old) { %w(foo bar) }
19
+ let(:new) { %w(foo baz bar) }
20
+
21
+ it { should eql("@@ -1,3 +1,4 @@\n foo\n+baz\n bar\n") }
22
+
23
+ it_should_behave_like 'an idempotent method'
24
+ end
25
+
26
+ context 'when the diff has a long context at begin' do
27
+ let(:old) { %w(foo bar baz boz a b c) }
28
+ let(:new) { %w(foo bar baz boz a b c other) }
29
+
30
+ it { should eql("@@ -1,8 +1,9 @@\n foo\n bar\n baz\n boz\n a\n b\n c\n+other\n") }
31
+
32
+ it_should_behave_like 'an idempotent method'
33
+ end
34
+
35
+ context 'when the diff has a long context at end, deleting' do
36
+ let(:old) { %w(other foo bar baz boz a b c) }
37
+ let(:new) { %w(foo bar baz boz a b c) }
38
+
39
+ it { should eql("@@ -1,9 +1,8 @@\n-other\n foo\n bar\n baz\n boz\n a\n b\n c\n") }
40
+
41
+ it_should_behave_like 'an idempotent method'
42
+ end
43
+
44
+ context 'when the diff has a long context at end, inserting' do
45
+ let(:old) { %w(foo bar baz boz a b c) }
46
+ let(:new) { %w(other foo bar baz boz a b c) }
47
+
48
+ it { should eql("@@ -1,8 +1,9 @@\n+other\n foo\n bar\n baz\n boz\n a\n b\n c\n") }
49
+
50
+ it_should_behave_like 'an idempotent method'
51
+ end
52
+
53
+ context 'when there is no diff' do
54
+ let(:old) { '' }
55
+ let(:new) { '' }
56
+
57
+ it { should be(nil) }
58
+
59
+ it_should_behave_like 'an idempotent method'
60
+ end
61
+ end
@@ -9,6 +9,7 @@ describe Mutant::Mutator, 'block' do
9
9
  mutations << 'foo { a }'
10
10
  mutations << 'foo { b }'
11
11
  mutations << 'foo {}'
12
+ mutations << 'foo { raise }'
12
13
  mutations << 'foo'
13
14
  end
14
15
 
@@ -26,7 +27,7 @@ describe Mutant::Mutator, 'block' do
26
27
  let(:mutations) do
27
28
  mutations = []
28
29
  mutations << 'foo'
29
- mutations << 'foo { |a, b| ::Object.new }'
30
+ mutations << 'foo { |a, b| raise }'
30
31
  mutations << 'foo { |a, srandom| }'
31
32
  mutations << 'foo { |srandom, b| }'
32
33
  mutations << 'foo { |a| }'
@@ -49,7 +50,7 @@ describe Mutant::Mutator, 'block' do
49
50
  mutations = []
50
51
  mutations << 'foo { || }'
51
52
  mutations << 'foo { |a, b, c| }'
52
- mutations << 'foo { |(a, b), c| ::Object.new }'
53
+ mutations << 'foo { |(a, b), c| raise }'
53
54
  mutations << 'foo { |(a), c| }'
54
55
  mutations << 'foo { |(b), c| }'
55
56
  mutations << 'foo { |(a, b)| }'
@@ -7,7 +7,7 @@ describe Mutant::Mutator, 'def' do
7
7
 
8
8
  let(:mutations) do
9
9
  mutations = []
10
- mutations << 'def foo; ::Object.new; end'
10
+ mutations << 'def foo; raise; end'
11
11
  end
12
12
 
13
13
  it_should_behave_like 'a mutator'
@@ -31,6 +31,8 @@ describe Mutant::Mutator, 'def' do
31
31
 
32
32
  # Remove all statements
33
33
  mutations << 'def foo; end'
34
+
35
+ mutations << 'def foo; raise; end'
34
36
  end
35
37
 
36
38
  it_should_behave_like 'a mutator'
@@ -58,7 +60,7 @@ describe Mutant::Mutator, 'def' do
58
60
  mutations << 'def foo(a, srandom); end'
59
61
 
60
62
  # Mutation of body
61
- mutations << 'def foo(a, b); ::Object.new; end'
63
+ mutations << 'def foo(a, b); raise; end'
62
64
  end
63
65
 
64
66
  it_should_behave_like 'a mutator'
@@ -69,7 +71,7 @@ describe Mutant::Mutator, 'def' do
69
71
 
70
72
  let(:mutations) do
71
73
  mutations = []
72
- mutations << 'def foo(_unused); ::Object.new; end'
74
+ mutations << 'def foo(_unused); raise; end'
73
75
  mutations << 'def foo; end'
74
76
  end
75
77
 
@@ -90,7 +92,7 @@ describe Mutant::Mutator, 'def' do
90
92
  mutations << 'def foo(a = false); end'
91
93
  mutations << 'def foo(a = nil); end'
92
94
  mutations << 'def foo(srandom = true); end'
93
- mutations << 'def foo(a = true); ::Object.new; end'
95
+ mutations << 'def foo(a = true); raise; end'
94
96
  end
95
97
 
96
98
  it_should_behave_like 'a mutator'
@@ -114,6 +116,8 @@ describe Mutant::Mutator, 'def' do
114
116
 
115
117
  # Remove all statements
116
118
  mutations << 'def self.foo; end'
119
+
120
+ mutations << 'def self.foo; raise; end'
117
121
  end
118
122
 
119
123
  it_should_behave_like 'a mutator'
@@ -125,24 +129,24 @@ describe Mutant::Mutator, 'def' do
125
129
  Mutant::Random.stub(:hex_string => 'random')
126
130
  end
127
131
 
128
- let(:source) { 'def self.foo(a, b); nil; end' }
132
+ let(:source) { 'def self.foo(a, b); end' }
129
133
 
130
134
  let(:mutations) do
131
135
  mutations = []
132
136
 
133
137
  # Deletion of each argument
134
- mutations << 'def self.foo(a); nil; end'
135
- mutations << 'def self.foo(b); nil; end'
138
+ mutations << 'def self.foo(a); end'
139
+ mutations << 'def self.foo(b); end'
136
140
 
137
141
  # Deletion of all arguments
138
- mutations << 'def self.foo; nil; end'
142
+ mutations << 'def self.foo; end'
139
143
 
140
144
  # Rename each argument
141
- mutations << 'def self.foo(srandom, b); nil; end'
142
- mutations << 'def self.foo(a, srandom); nil; end'
145
+ mutations << 'def self.foo(srandom, b); end'
146
+ mutations << 'def self.foo(a, srandom); end'
143
147
 
144
148
  # Mutation of body
145
- mutations << 'def self.foo(a, b); ::Object.new; end'
149
+ mutations << 'def self.foo(a, b); raise; end'
146
150
  end
147
151
 
148
152
  it_should_behave_like 'a mutator'
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ # FIXME: This spec needs to be structured better!
4
+ describe Mutant::Mutator::Node::Noop, 'send' do
5
+
6
+ let(:source) { 'alias foo bar' }
7
+
8
+ let(:mutations) do
9
+ mutations = []
10
+ end
11
+
12
+ it_should_behave_like 'a mutator'
13
+ end
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.3.0.beta7
4
+ version: 0.3.0.beta8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-30 00:00:00.000000000 Z
11
+ date: 2013-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.beta9
19
+ version: 2.0.beta10
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
- version: 2.0.beta9
26
+ version: 2.0.beta10
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: unparser
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.6
33
+ version: 0.0.7
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
- version: 0.0.6
40
+ version: 0.0.7
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ice_nine
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -193,7 +193,6 @@ files:
193
193
  - lib/mutant/context.rb
194
194
  - lib/mutant/context/scope.rb
195
195
  - lib/mutant/differ.rb
196
- - lib/mutant/helper.rb
197
196
  - lib/mutant/killer.rb
198
197
  - lib/mutant/killer/forked.rb
199
198
  - lib/mutant/killer/forking.rb
@@ -277,9 +276,7 @@ files:
277
276
  - lib/mutant/support/method_object.rb
278
277
  - lib/mutant/zombifier.rb
279
278
  - mutant.gemspec
280
- - spec/integration/mutant/differ_spec.rb
281
279
  - spec/integration/mutant/rspec_killer_spec.rb
282
- - spec/integration/mutant/runner_spec.rb
283
280
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
284
281
  - spec/integration/mutant/zombie_spec.rb
285
282
  - spec/rcov.opts
@@ -290,12 +287,16 @@ files:
290
287
  - spec/support/ice_nine_config.rb
291
288
  - spec/support/rspec.rb
292
289
  - spec/support/test_app.rb
290
+ - spec/unit/mutant/class_methods/singleton_subclass_instance_spec.rb
293
291
  - spec/unit/mutant/cli/class_methods/new_spec.rb
294
292
  - spec/unit/mutant/cli/class_methods/run_spec.rb
295
293
  - spec/unit/mutant/cli/classifier/class_methods/build_spec.rb
296
294
  - spec/unit/mutant/context/root_spec.rb
297
295
  - spec/unit/mutant/context/scope/root_spec.rb
298
296
  - spec/unit/mutant/context/scope/unqualified_name_spec.rb
297
+ - spec/unit/mutant/differ/class_methods/build_spec.rb
298
+ - spec/unit/mutant/differ/class_methods/colorize_line_spec.rb
299
+ - spec/unit/mutant/differ/diff_spec.rb
299
300
  - spec/unit/mutant/killer/rspec/class_methods/new_spec.rb
300
301
  - spec/unit/mutant/killer/success_predicate_spec.rb
301
302
  - spec/unit/mutant/loader/eval/class_methods/run_spec.rb
@@ -327,6 +328,7 @@ files:
327
328
  - spec/unit/mutant/mutator/node/literal/regex_spec.rb
328
329
  - spec/unit/mutant/mutator/node/literal/string_spec.rb
329
330
  - spec/unit/mutant/mutator/node/literal/symbol_spec.rb
331
+ - spec/unit/mutant/mutator/node/noop/mutation_spec.rb
330
332
  - spec/unit/mutant/mutator/node/return/mutation_spec.rb
331
333
  - spec/unit/mutant/mutator/node/send/mutation_spec.rb
332
334
  - spec/unit/mutant/mutator/node/super/mutation_spec.rb
@@ -376,14 +378,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
376
378
  version: 1.3.1
377
379
  requirements: []
378
380
  rubyforge_project:
379
- rubygems_version: 2.0.2
381
+ rubygems_version: 2.0.3
380
382
  signing_key:
381
383
  specification_version: 4
382
384
  summary: Mutation testing tool for ruby under MRI and Rubinius
383
385
  test_files:
384
- - spec/integration/mutant/differ_spec.rb
385
386
  - spec/integration/mutant/rspec_killer_spec.rb
386
- - spec/integration/mutant/runner_spec.rb
387
387
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
388
388
  - spec/integration/mutant/zombie_spec.rb
389
389
  - spec/rcov.opts
@@ -394,12 +394,16 @@ test_files:
394
394
  - spec/support/ice_nine_config.rb
395
395
  - spec/support/rspec.rb
396
396
  - spec/support/test_app.rb
397
+ - spec/unit/mutant/class_methods/singleton_subclass_instance_spec.rb
397
398
  - spec/unit/mutant/cli/class_methods/new_spec.rb
398
399
  - spec/unit/mutant/cli/class_methods/run_spec.rb
399
400
  - spec/unit/mutant/cli/classifier/class_methods/build_spec.rb
400
401
  - spec/unit/mutant/context/root_spec.rb
401
402
  - spec/unit/mutant/context/scope/root_spec.rb
402
403
  - spec/unit/mutant/context/scope/unqualified_name_spec.rb
404
+ - spec/unit/mutant/differ/class_methods/build_spec.rb
405
+ - spec/unit/mutant/differ/class_methods/colorize_line_spec.rb
406
+ - spec/unit/mutant/differ/diff_spec.rb
403
407
  - spec/unit/mutant/killer/rspec/class_methods/new_spec.rb
404
408
  - spec/unit/mutant/killer/success_predicate_spec.rb
405
409
  - spec/unit/mutant/loader/eval/class_methods/run_spec.rb
@@ -431,6 +435,7 @@ test_files:
431
435
  - spec/unit/mutant/mutator/node/literal/regex_spec.rb
432
436
  - spec/unit/mutant/mutator/node/literal/string_spec.rb
433
437
  - spec/unit/mutant/mutator/node/literal/symbol_spec.rb
438
+ - spec/unit/mutant/mutator/node/noop/mutation_spec.rb
434
439
  - spec/unit/mutant/mutator/node/return/mutation_spec.rb
435
440
  - spec/unit/mutant/mutator/node/send/mutation_spec.rb
436
441
  - spec/unit/mutant/mutator/node/super/mutation_spec.rb
data/lib/mutant/helper.rb DELETED
@@ -1,23 +0,0 @@
1
- module Mutant
2
- # Module for support methods
3
- #
4
- # They would normally be defined on the root namespace.
5
- # But it is easier to create the Zombie when there are no
6
- # References to the root namespace name within the library.
7
- #
8
- module Helper
9
-
10
- # Return deep clone of object
11
- #
12
- # @param [Object] object
13
- #
14
- # @return [Object] object
15
- #
16
- # @api private
17
- #
18
- def self.deep_clone(object)
19
- Marshal.load(Marshal.dump(object))
20
- end
21
-
22
- end # Helper
23
- end # Mutant
@@ -1,15 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mutant,'differ' do
4
- specify 'allows to create diffs from text' do
5
- a = "Foo\nBar\n"
6
- b = "Foo\nBaz\n"
7
- differ = Mutant::Differ.new(a,b)
8
- differ.diff.should == strip_indent(<<-RUBY)
9
- @@ -1,3 +1,3 @@
10
- Foo
11
- -Bar
12
- +Baz
13
- RUBY
14
- end
15
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mutant, 'runner' do
4
- before do
5
- pending
6
- end
7
-
8
- around do |example|
9
- Dir.chdir(TestApp.root) do
10
- example.run
11
- end
12
- end
13
-
14
- it 'allows to run mutant over a project' do
15
- output = StringIO.new
16
- runner = Mutant::Runner.run(
17
- :killer => Mutant::Killer::Rspec,
18
- :matcher => Mutant::Matcher::ObjectSpace.new(/\ATestApp::/),
19
- :reporter => Mutant::Reporter::CLI.new(output)
20
- )
21
- runner.fail?.should be(true)
22
- runner.errors.size.should be(22)
23
- output.rewind
24
- output.lines.grep(/Mutant alive:/).size.should be(22)
25
- end
26
- end