mutant 0.1.1 → 0.2.0

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.
Files changed (225) hide show
  1. data/.gitignore +5 -11
  2. data/.rspec +0 -1
  3. data/.travis.yml +14 -3
  4. data/Changelog.md +3 -0
  5. data/Gemfile +5 -1
  6. data/Gemfile.devtools +49 -0
  7. data/Guardfile +18 -0
  8. data/README.md +67 -0
  9. data/Rakefile +4 -1
  10. data/TODO +13 -0
  11. data/bin/mutant +14 -0
  12. data/bin/zombie +14 -0
  13. data/config/flay.yml +3 -0
  14. data/config/flog.yml +2 -0
  15. data/config/roodi.yml +26 -0
  16. data/config/site.reek +93 -0
  17. data/config/yardstick.yml +2 -0
  18. data/lib/inflector.rb +7 -0
  19. data/lib/inflector/defaults.rb +62 -0
  20. data/lib/inflector/inflections.rb +209 -0
  21. data/lib/inflector/methods.rb +149 -0
  22. data/lib/inflector/version.rb +3 -0
  23. data/lib/mutant.rb +96 -21
  24. data/lib/mutant/cli.rb +309 -0
  25. data/lib/mutant/color.rb +61 -0
  26. data/lib/mutant/context.rb +36 -0
  27. data/lib/mutant/context/scope.rb +138 -0
  28. data/lib/mutant/differ.rb +100 -0
  29. data/lib/mutant/helper.rb +38 -0
  30. data/lib/mutant/killer.rb +136 -0
  31. data/lib/mutant/killer/forking.rb +41 -0
  32. data/lib/mutant/killer/rspec.rb +49 -0
  33. data/lib/mutant/killer/static.rb +19 -0
  34. data/lib/mutant/loader.rb +129 -0
  35. data/lib/mutant/matcher.rb +55 -0
  36. data/lib/mutant/matcher/chain.rb +66 -0
  37. data/lib/mutant/matcher/method.rb +173 -0
  38. data/lib/mutant/matcher/method/classifier.rb +126 -0
  39. data/lib/mutant/matcher/method/instance.rb +67 -0
  40. data/lib/mutant/matcher/method/singleton.rb +141 -0
  41. data/lib/mutant/matcher/object_space.rb +114 -0
  42. data/lib/mutant/matcher/scope_methods.rb +127 -0
  43. data/lib/mutant/mutation.rb +101 -12
  44. data/lib/mutant/mutation/filter.rb +75 -0
  45. data/lib/mutant/mutation/filter/code.rb +68 -0
  46. data/lib/mutant/mutation/filter/regexp.rb +39 -0
  47. data/lib/mutant/mutation/filter/whitelist.rb +47 -0
  48. data/lib/mutant/mutator.rb +134 -30
  49. data/lib/mutant/mutator/node.rb +163 -0
  50. data/lib/mutant/mutator/node/arguments.rb +24 -0
  51. data/lib/mutant/mutator/node/block.rb +24 -0
  52. data/lib/mutant/mutator/node/define.rb +24 -0
  53. data/lib/mutant/mutator/node/if_statement.rb +93 -0
  54. data/lib/mutant/mutator/node/literal.rb +54 -0
  55. data/lib/mutant/mutator/node/literal/array.rb +28 -0
  56. data/lib/mutant/mutator/node/literal/boolean.rb +49 -0
  57. data/lib/mutant/mutator/node/literal/dynamic.rb +24 -0
  58. data/lib/mutant/mutator/node/literal/empty_array.rb +26 -0
  59. data/lib/mutant/mutator/node/literal/fixnum.rb +37 -0
  60. data/lib/mutant/mutator/node/literal/float.rb +48 -0
  61. data/lib/mutant/mutator/node/literal/hash.rb +89 -0
  62. data/lib/mutant/mutator/node/literal/nil.rb +25 -0
  63. data/lib/mutant/mutator/node/literal/range.rb +94 -0
  64. data/lib/mutant/mutator/node/literal/regex.rb +43 -0
  65. data/lib/mutant/mutator/node/literal/string.rb +26 -0
  66. data/lib/mutant/mutator/node/literal/symbol.rb +26 -0
  67. data/lib/mutant/mutator/node/noop.rb +55 -0
  68. data/lib/mutant/mutator/node/receiver_case.rb +140 -0
  69. data/lib/mutant/mutator/node/return.rb +31 -0
  70. data/lib/mutant/mutator/node/send.rb +112 -0
  71. data/lib/mutant/mutator/registry.rb +48 -0
  72. data/lib/mutant/mutator/util.rb +87 -0
  73. data/lib/mutant/random.rb +24 -27
  74. data/lib/mutant/reporter.rb +48 -30
  75. data/lib/mutant/reporter/cli.rb +221 -0
  76. data/lib/mutant/reporter/null.rb +42 -0
  77. data/lib/mutant/reporter/stats.rb +64 -0
  78. data/lib/mutant/runner.rb +112 -0
  79. data/lib/mutant/strategy.rb +42 -0
  80. data/lib/mutant/strategy/rspec.rb +59 -0
  81. data/lib/mutant/strategy/rspec/example_lookup.rb +122 -0
  82. data/lib/mutant/subject.rb +115 -0
  83. data/lib/mutant/support/method_object.rb +31 -0
  84. data/locator.rb +87 -0
  85. data/mutant.gemspec +21 -21
  86. data/spec/integration/mutant/differ_spec.rb +15 -0
  87. data/spec/integration/mutant/loader_spec.rb +21 -0
  88. data/spec/integration/mutant/method_matching_spec.rb +269 -0
  89. data/spec/integration/mutant/rspec_killer_spec.rb +24 -0
  90. data/spec/integration/mutant/runner_spec.rb +26 -0
  91. data/spec/integration/mutant/zombie_spec.rb +8 -0
  92. data/spec/rcov.opts +7 -0
  93. data/spec/shared/command_method_behavior.rb +7 -0
  94. data/spec/shared/each_method_behaviour.rb +15 -0
  95. data/spec/shared/hash_method_behavior.rb +17 -0
  96. data/spec/shared/idempotent_method_behavior.rb +7 -0
  97. data/spec/shared/invertible_method_behaviour.rb +9 -0
  98. data/spec/shared/method_filter_parse_behavior.rb +16 -0
  99. data/spec/shared/method_match_behavior.rb +39 -0
  100. data/spec/shared/mutator_behavior.rb +46 -0
  101. data/spec/spec_helper.rb +11 -14
  102. data/spec/support/compress_helper.rb +10 -0
  103. data/spec/support/rspec.rb +22 -0
  104. data/spec/support/test_app.rb +5 -0
  105. data/spec/support/zombie.rb +141 -0
  106. data/spec/unit/mutant/cli/class_methods/new_spec.rb +87 -0
  107. data/spec/unit/mutant/cli/class_methods/run_spec.rb +38 -0
  108. data/spec/unit/mutant/context/root_spec.rb +11 -0
  109. data/spec/unit/mutant/context/scope/class_methods/build_spec.rb +29 -0
  110. data/spec/unit/mutant/context/scope/root_spec.rb +22 -0
  111. data/spec/unit/mutant/context/scope/unqualified_name_spec.rb +27 -0
  112. data/spec/unit/mutant/killer/fail_ques_spec.rb +39 -0
  113. data/spec/unit/mutant/killer/rspec/class_methods/new_spec.rb +32 -0
  114. data/spec/unit/mutant/loader/eval/class_methods/run_spec.rb +33 -0
  115. data/spec/unit/mutant/loader/rubinius/class_methods/run_spec.rb +42 -0
  116. data/spec/unit/mutant/matcher/chain/each_spec.rb +37 -0
  117. data/spec/unit/mutant/matcher/chain/matchers_spec.rb +12 -0
  118. data/spec/unit/mutant/matcher/class_methods/from_string_spec.rb +49 -0
  119. data/spec/unit/mutant/matcher/class_methods/parse_spec.rb +12 -0
  120. data/spec/unit/mutant/matcher/each_spec.rb +14 -0
  121. data/spec/unit/mutant/matcher/method/class_methods/parse_spec.rb +21 -0
  122. data/spec/unit/mutant/matcher/method/classifier/class_methods/run_spec.rb +34 -0
  123. data/spec/unit/mutant/matcher/method/method_spec.rb +11 -0
  124. data/spec/unit/mutant/matcher/object_space/class_methods/parse_spec.rb +24 -0
  125. data/spec/unit/mutant/matcher/object_space/each_spec.rb +31 -0
  126. data/spec/unit/mutant/mutator/each_spec.rb +25 -0
  127. data/spec/unit/mutant/mutator/emit_new_spec.rb +51 -0
  128. data/spec/unit/mutant/mutator/emit_spec.rb +52 -0
  129. data/spec/unit/mutant/mutator/node/block/mutation_spec.rb +36 -0
  130. data/spec/unit/mutant/mutator/node/define/mutation_spec.rb +47 -0
  131. data/spec/unit/mutant/mutator/node/if_statement/mutation_spec.rb +30 -0
  132. data/spec/unit/mutant/mutator/node/literal/array_spec.rb +30 -0
  133. data/spec/unit/mutant/mutator/node/literal/boolean/mutation_spec.rb +23 -0
  134. data/spec/unit/mutant/mutator/node/literal/empty_array_spec.rb +17 -0
  135. data/spec/unit/mutant/mutator/node/literal/fixnum_spec.rb +17 -0
  136. data/spec/unit/mutant/mutator/node/literal/float_spec.rb +25 -0
  137. data/spec/unit/mutant/mutator/node/literal/hash_spec.rb +34 -0
  138. data/spec/unit/mutant/mutator/node/literal/nil_spec.rb +13 -0
  139. data/spec/unit/mutant/mutator/node/literal/range_spec.rb +35 -0
  140. data/spec/unit/mutant/mutator/node/literal/regex_spec.rb +23 -0
  141. data/spec/unit/mutant/mutator/node/literal/string_spec.rb +17 -0
  142. data/spec/unit/mutant/mutator/node/literal/symbol_spec.rb +17 -0
  143. data/spec/unit/mutant/mutator/node/receiver_case/mutation_spec.rb +27 -0
  144. data/spec/unit/mutant/mutator/node/return/mutation_spec.rb +21 -0
  145. data/spec/unit/mutant/mutator/node/send/mutation_spec.rb +78 -0
  146. data/spec/unit/mutant/mutator/self_spec.rb +7 -0
  147. data/spec/unit/mutant/subject/class_methods/new_spec.rb +13 -0
  148. data/spec/unit/mutant/subject/context_spec.rb +14 -0
  149. data/spec/unit/mutant/subject/each_spec.rb +35 -0
  150. data/spec/unit/mutant/subject/node_spec.rb +13 -0
  151. data/tasks/metrics/ci.rake +7 -0
  152. data/tasks/metrics/flay.rake +41 -0
  153. data/tasks/metrics/flog.rake +43 -0
  154. data/tasks/metrics/heckle.rake +216 -0
  155. data/tasks/metrics/metric_fu.rake +31 -0
  156. data/tasks/metrics/reek.rake +15 -0
  157. data/tasks/metrics/roodi.rake +15 -0
  158. data/tasks/metrics/yardstick.rake +23 -0
  159. data/tasks/spec.rake +45 -0
  160. data/tasks/yard.rake +9 -0
  161. data/test_app/.rspec +1 -0
  162. data/test_app/lib/test_app.rb +5 -0
  163. data/test_app/lib/test_app/literal.rb +32 -0
  164. data/test_app/spec/shared/command_method_behavior.rb +7 -0
  165. data/test_app/spec/shared/each_method_behaviour.rb +15 -0
  166. data/test_app/spec/shared/hash_method_behavior.rb +17 -0
  167. data/test_app/spec/shared/idempotent_method_behavior.rb +7 -0
  168. data/test_app/spec/shared/invertible_method_behaviour.rb +9 -0
  169. data/test_app/spec/shared/method_filter_parse_behavior.rb +16 -0
  170. data/test_app/spec/shared/method_match_behavior.rb +39 -0
  171. data/test_app/spec/shared/mutator_behavior.rb +44 -0
  172. data/test_app/spec/spec_helper.rb +7 -0
  173. data/test_app/spec/unit/test_app/literal/command_spec.rb +9 -0
  174. data/test_app/spec/unit/test_app/literal/string_spec.rb +9 -0
  175. metadata +346 -124
  176. data/.rvmrc +0 -1
  177. data/Readme.md +0 -13
  178. data/exe/mutate +0 -6
  179. data/lib/mutant/extensions.rb +0 -8
  180. data/lib/mutant/formatter.rb +0 -19
  181. data/lib/mutant/implementation.rb +0 -70
  182. data/lib/mutant/literal.rb +0 -147
  183. data/lib/mutant/method.rb +0 -31
  184. data/lib/mutant/mutatee.rb +0 -61
  185. data/lib/mutant/node.rb +0 -26
  186. data/lib/mutant/runners/rspec.rb +0 -34
  187. data/lib/mutant/version.rb +0 -3
  188. data/spec/functional/class_spec.rb +0 -46
  189. data/spec/functional/instance_method/array_spec.rb +0 -53
  190. data/spec/functional/instance_method/boolean_spec.rb +0 -101
  191. data/spec/functional/instance_method/call_spec.rb +0 -161
  192. data/spec/functional/instance_method/fixnum_spec.rb +0 -53
  193. data/spec/functional/instance_method/float_spec.rb +0 -53
  194. data/spec/functional/instance_method/hash_spec.rb +0 -53
  195. data/spec/functional/instance_method/if_spec.rb +0 -57
  196. data/spec/functional/instance_method/ivar_assign_spec.rb +0 -62
  197. data/spec/functional/instance_method/range_spec.rb +0 -53
  198. data/spec/functional/instance_method/regex_spec.rb +0 -55
  199. data/spec/functional/instance_method/string_spec.rb +0 -53
  200. data/spec/functional/instance_method/symbol_spec.rb +0 -53
  201. data/spec/functional/reporter/method_loaded_spec.rb +0 -62
  202. data/spec/functional/reporter/running_mutations_spec.rb +0 -60
  203. data/spec/functional/runners/rspec_spec.rb +0 -26
  204. data/spec/functional/singleton_method/array_spec.rb +0 -53
  205. data/spec/functional/singleton_method/boolean_spec.rb +0 -101
  206. data/spec/functional/singleton_method/call_spec.rb +0 -161
  207. data/spec/functional/singleton_method/fixnum_spec.rb +0 -53
  208. data/spec/functional/singleton_method/float_spec.rb +0 -53
  209. data/spec/functional/singleton_method/hash_spec.rb +0 -53
  210. data/spec/functional/singleton_method/if_spec.rb +0 -57
  211. data/spec/functional/singleton_method/ivar_assign_spec.rb +0 -60
  212. data/spec/functional/singleton_method/range_spec.rb +0 -53
  213. data/spec/functional/singleton_method/regex_spec.rb +0 -55
  214. data/spec/functional/singleton_method/string_spec.rb +0 -53
  215. data/spec/functional/singleton_method/symbol_spec.rb +0 -53
  216. data/spec/mutant/extensions_spec.rb +0 -13
  217. data/spec/mutant/implementation_spec.rb +0 -223
  218. data/spec/mutant/literal_spec.rb +0 -129
  219. data/spec/mutant/mutatee_spec.rb +0 -28
  220. data/spec/mutant/node_spec.rb +0 -41
  221. data/spec/mutant/random_spec.rb +0 -33
  222. data/spec/mutant/reporter_spec.rb +0 -17
  223. data/spec/mutant_spec.rb +0 -28
  224. data/spec/support/example_group_helpers.rb +0 -11
  225. data/spec/support/example_helpers.rb +0 -5
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples_for 'a command method' do
4
+ it 'returns self' do
5
+ should equal(object)
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples_for 'an #each method' do
4
+ it_should_behave_like 'a command method'
5
+
6
+ context 'with no block' do
7
+ subject { object.each }
8
+
9
+ it { should be_instance_of(to_enum.class) }
10
+
11
+ it 'yields the expected values' do
12
+ subject.to_a.should eql(object.to_a)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples_for 'a hash method' do
4
+ it_should_behave_like 'an idempotent method'
5
+
6
+ specification = proc do
7
+ should be_instance_of(Fixnum)
8
+ end
9
+
10
+ it 'is a fixnum' do
11
+ instance_eval(&specification)
12
+ end
13
+
14
+ it 'memoizes the hash code' do
15
+ subject.should eql(object.memoized(:hash))
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples_for 'an idempotent method' do
4
+ it 'is idempotent' do
5
+ should equal(instance_eval(&self.class.subject))
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples_for 'an invertible method' do
4
+ it_should_behave_like 'an idempotent method'
5
+
6
+ it 'is invertible' do
7
+ subject.inverse.should equal(object)
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ shared_examples_for 'a method filter parse result' do
2
+ before do
3
+ expected_class.stub(:new => response)
4
+ end
5
+
6
+ let(:response) { mock('Response') }
7
+
8
+ it { should be(response) }
9
+
10
+ it 'should initialize method filter with correct arguments' do
11
+ expected_class.should_receive(:new).with(TestApp::Literal, :string).and_return(response)
12
+ subject
13
+ end
14
+ end
15
+
16
+
@@ -0,0 +1,39 @@
1
+ shared_examples_for 'a method match' do
2
+ subject { Mutant::Matcher::Method.parse(pattern).to_a }
3
+
4
+ let(:values) { defaults.merge(expectation) }
5
+
6
+ let(:method_name) { values.fetch(:method_name) }
7
+ let(:method_line) { values.fetch(:method_line) }
8
+ let(:method_arity) { values.fetch(:method_arity) }
9
+ let(:scope) { values.fetch(:scope) }
10
+ let(:node_class) { values.fetch(:node_class) }
11
+
12
+ let(:node) { mutation_subject.node }
13
+ let(:context) { mutation_subject.context }
14
+ let(:mutation_subject) { subject.first }
15
+
16
+ it 'should return one subject' do
17
+ subject.size.should be(1)
18
+ end
19
+
20
+ it 'should have correct method name' do
21
+ name(node).should eql(method_name)
22
+ end
23
+
24
+ it 'should have correct line number' do
25
+ node.line.should eql(method_line)
26
+ end
27
+
28
+ it 'should have correct arity' do
29
+ arguments(node).required.length.should eql(method_arity)
30
+ end
31
+
32
+ it 'should have correct scope in context' do
33
+ context.send(:scope).should eql(scope)
34
+ end
35
+
36
+ it 'should have the correct node class' do
37
+ node.should be_a(node_class)
38
+ end
39
+ end
@@ -0,0 +1,44 @@
1
+ shared_examples_for 'a mutator' do
2
+ subject { object.each(node) { |item| yields << item } }
3
+
4
+ let(:yields) { [] }
5
+ let(:object) { described_class }
6
+
7
+ unless instance_methods.map(&:to_s).include?('node')
8
+ let(:node) { source.to_ast }
9
+ end
10
+
11
+ it_should_behave_like 'a command method'
12
+
13
+ context 'with no block' do
14
+ subject { object.each(node) }
15
+
16
+ it { should be_instance_of(to_enum.class) }
17
+
18
+ let(:expected_mutations) do
19
+ mutations.map do |mutation|
20
+ if mutation.respond_to?(:to_ast)
21
+ mutation.to_ast.to_sexp
22
+ else
23
+ mutation
24
+ end
25
+ end.to_set
26
+ end
27
+
28
+ it 'generates the expected mutations' do
29
+ subject = self.subject.map(&:to_sexp).to_set
30
+
31
+ unless subject == expected_mutations
32
+ message = "Missing mutations: %s\nUnexpected mutations: %s" %
33
+ [expected_mutations - subject, subject - expected_mutations ].map(&:to_a).map(&:inspect)
34
+ fail message
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ shared_examples_for 'a noop mutator' do
41
+ let(:mutations) { [] }
42
+
43
+ it_should_behave_like 'a mutator'
44
+ end
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rspec'
4
+ require 'test_app'
5
+
6
+ # require spec support files and shared behavior
7
+ Dir[File.expand_path('../{support,shared}/**/*.rb', __FILE__)].each { |f| require f }
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe TestApp::Literal,'#string' do
4
+ subject { object.command(mock) }
5
+
6
+ let(:object) { described_class.new }
7
+
8
+ it_should_behave_like 'a command method'
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe TestApp::Literal,'#string' do
4
+ subject { object.string }
5
+
6
+ let(:object) { described_class.new }
7
+
8
+ it { should eql('string') }
9
+ end
metadata CHANGED
@@ -1,133 +1,328 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutant
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.1
6
6
  platform: ruby
7
7
  authors:
8
- - Justin Ko
9
- - Josep M. Bach
8
+ - Markus Schirp
10
9
  autorequire:
11
- bindir: exe
10
+ bindir: bin
12
11
  cert_chain: []
13
- date: 2012-02-27 00:00:00.000000000 Z
12
+ date: 2012-12-07 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- version_requirements: &7400 !ruby/object:Gem::Requirement
15
+ name: to_source
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.2.0
22
+ type: :runtime
22
23
  prerelease: false
23
- requirement: *7400
24
- name: to_source
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.2.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: ice_nine
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.5.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.5.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: descendants_tracker
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.0.1
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.1
62
+ - !ruby/object:Gem::Dependency
63
+ name: backports
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '2.6'
25
70
  type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '2.6'
78
+ - !ruby/object:Gem::Dependency
79
+ name: adamantium
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.0.3
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.3
26
94
  - !ruby/object:Gem::Dependency
27
- version_requirements: &7464 !ruby/object:Gem::Requirement
95
+ name: equalizer
96
+ requirement: !ruby/object:Gem::Requirement
28
97
  none: false
29
98
  requirements:
30
- - - ! '>='
99
+ - - ~>
31
100
  - !ruby/object:Gem::Version
32
- version: '0'
101
+ version: 0.0.1
102
+ type: :runtime
33
103
  prerelease: false
34
- requirement: *7464
35
- name: rake
36
- type: :development
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.0.1
37
110
  - !ruby/object:Gem::Dependency
38
- version_requirements: &7508 !ruby/object:Gem::Requirement
111
+ name: abstract_type
112
+ requirement: !ruby/object:Gem::Requirement
39
113
  none: false
40
114
  requirements:
41
115
  - - ~>
42
116
  - !ruby/object:Gem::Version
43
- version: '2.7'
117
+ version: 0.0.2
118
+ type: :runtime
44
119
  prerelease: false
45
- requirement: *7508
46
- name: rspec
47
- type: :development
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.0.2
48
126
  - !ruby/object:Gem::Dependency
49
- version_requirements: &7552 !ruby/object:Gem::Requirement
127
+ name: diff-lcs
128
+ requirement: !ruby/object:Gem::Requirement
50
129
  none: false
51
130
  requirements:
52
- - - ! '>='
131
+ - - ~>
53
132
  - !ruby/object:Gem::Version
54
- version: '0'
133
+ version: 1.1.3
134
+ type: :runtime
55
135
  prerelease: false
56
- requirement: *7552
57
- name: aruba
58
- type: :development
59
- description: Mutation tester
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.1.3
142
+ description: Mutation testing for ruby under rubinius
60
143
  email:
61
- - justin@kospecinc.com
62
- - josep.m.bach@gmail.com
144
+ - mbj@seonic.net
63
145
  executables:
64
- - mutate
146
+ - mutant
65
147
  extensions: []
66
- extra_rdoc_files: []
148
+ extra_rdoc_files:
149
+ - TODO
67
150
  files:
68
151
  - .gitignore
69
152
  - .rspec
70
- - .rvmrc
71
153
  - .travis.yml
154
+ - Changelog.md
72
155
  - Gemfile
156
+ - Gemfile.devtools
157
+ - Guardfile
158
+ - README.md
73
159
  - Rakefile
74
- - Readme.md
75
- - exe/mutate
160
+ - TODO
161
+ - bin/mutant
162
+ - bin/zombie
163
+ - config/flay.yml
164
+ - config/flog.yml
165
+ - config/roodi.yml
166
+ - config/site.reek
167
+ - config/yardstick.yml
168
+ - lib/inflector.rb
169
+ - lib/inflector/defaults.rb
170
+ - lib/inflector/inflections.rb
171
+ - lib/inflector/methods.rb
172
+ - lib/inflector/version.rb
76
173
  - lib/mutant.rb
77
- - lib/mutant/extensions.rb
78
- - lib/mutant/formatter.rb
79
- - lib/mutant/implementation.rb
80
- - lib/mutant/literal.rb
81
- - lib/mutant/method.rb
82
- - lib/mutant/mutatee.rb
174
+ - lib/mutant/cli.rb
175
+ - lib/mutant/color.rb
176
+ - lib/mutant/context.rb
177
+ - lib/mutant/context/scope.rb
178
+ - lib/mutant/differ.rb
179
+ - lib/mutant/helper.rb
180
+ - lib/mutant/killer.rb
181
+ - lib/mutant/killer/forking.rb
182
+ - lib/mutant/killer/rspec.rb
183
+ - lib/mutant/killer/static.rb
184
+ - lib/mutant/loader.rb
185
+ - lib/mutant/matcher.rb
186
+ - lib/mutant/matcher/chain.rb
187
+ - lib/mutant/matcher/method.rb
188
+ - lib/mutant/matcher/method/classifier.rb
189
+ - lib/mutant/matcher/method/instance.rb
190
+ - lib/mutant/matcher/method/singleton.rb
191
+ - lib/mutant/matcher/object_space.rb
192
+ - lib/mutant/matcher/scope_methods.rb
83
193
  - lib/mutant/mutation.rb
194
+ - lib/mutant/mutation/filter.rb
195
+ - lib/mutant/mutation/filter/code.rb
196
+ - lib/mutant/mutation/filter/regexp.rb
197
+ - lib/mutant/mutation/filter/whitelist.rb
84
198
  - lib/mutant/mutator.rb
85
- - lib/mutant/node.rb
199
+ - lib/mutant/mutator/node.rb
200
+ - lib/mutant/mutator/node/arguments.rb
201
+ - lib/mutant/mutator/node/block.rb
202
+ - lib/mutant/mutator/node/define.rb
203
+ - lib/mutant/mutator/node/if_statement.rb
204
+ - lib/mutant/mutator/node/literal.rb
205
+ - lib/mutant/mutator/node/literal/array.rb
206
+ - lib/mutant/mutator/node/literal/boolean.rb
207
+ - lib/mutant/mutator/node/literal/dynamic.rb
208
+ - lib/mutant/mutator/node/literal/empty_array.rb
209
+ - lib/mutant/mutator/node/literal/fixnum.rb
210
+ - lib/mutant/mutator/node/literal/float.rb
211
+ - lib/mutant/mutator/node/literal/hash.rb
212
+ - lib/mutant/mutator/node/literal/nil.rb
213
+ - lib/mutant/mutator/node/literal/range.rb
214
+ - lib/mutant/mutator/node/literal/regex.rb
215
+ - lib/mutant/mutator/node/literal/string.rb
216
+ - lib/mutant/mutator/node/literal/symbol.rb
217
+ - lib/mutant/mutator/node/noop.rb
218
+ - lib/mutant/mutator/node/receiver_case.rb
219
+ - lib/mutant/mutator/node/return.rb
220
+ - lib/mutant/mutator/node/send.rb
221
+ - lib/mutant/mutator/registry.rb
222
+ - lib/mutant/mutator/util.rb
86
223
  - lib/mutant/random.rb
87
224
  - lib/mutant/reporter.rb
88
- - lib/mutant/runners/rspec.rb
89
- - lib/mutant/version.rb
225
+ - lib/mutant/reporter/cli.rb
226
+ - lib/mutant/reporter/null.rb
227
+ - lib/mutant/reporter/stats.rb
228
+ - lib/mutant/runner.rb
229
+ - lib/mutant/strategy.rb
230
+ - lib/mutant/strategy/rspec.rb
231
+ - lib/mutant/strategy/rspec/example_lookup.rb
232
+ - lib/mutant/subject.rb
233
+ - lib/mutant/support/method_object.rb
234
+ - locator.rb
90
235
  - mutant.gemspec
91
- - spec/functional/class_spec.rb
92
- - spec/functional/instance_method/array_spec.rb
93
- - spec/functional/instance_method/boolean_spec.rb
94
- - spec/functional/instance_method/call_spec.rb
95
- - spec/functional/instance_method/fixnum_spec.rb
96
- - spec/functional/instance_method/float_spec.rb
97
- - spec/functional/instance_method/hash_spec.rb
98
- - spec/functional/instance_method/if_spec.rb
99
- - spec/functional/instance_method/ivar_assign_spec.rb
100
- - spec/functional/instance_method/range_spec.rb
101
- - spec/functional/instance_method/regex_spec.rb
102
- - spec/functional/instance_method/string_spec.rb
103
- - spec/functional/instance_method/symbol_spec.rb
104
- - spec/functional/reporter/method_loaded_spec.rb
105
- - spec/functional/reporter/running_mutations_spec.rb
106
- - spec/functional/runners/rspec_spec.rb
107
- - spec/functional/singleton_method/array_spec.rb
108
- - spec/functional/singleton_method/boolean_spec.rb
109
- - spec/functional/singleton_method/call_spec.rb
110
- - spec/functional/singleton_method/fixnum_spec.rb
111
- - spec/functional/singleton_method/float_spec.rb
112
- - spec/functional/singleton_method/hash_spec.rb
113
- - spec/functional/singleton_method/if_spec.rb
114
- - spec/functional/singleton_method/ivar_assign_spec.rb
115
- - spec/functional/singleton_method/range_spec.rb
116
- - spec/functional/singleton_method/regex_spec.rb
117
- - spec/functional/singleton_method/string_spec.rb
118
- - spec/functional/singleton_method/symbol_spec.rb
119
- - spec/mutant/extensions_spec.rb
120
- - spec/mutant/implementation_spec.rb
121
- - spec/mutant/literal_spec.rb
122
- - spec/mutant/mutatee_spec.rb
123
- - spec/mutant/node_spec.rb
124
- - spec/mutant/random_spec.rb
125
- - spec/mutant/reporter_spec.rb
126
- - spec/mutant_spec.rb
236
+ - spec/integration/mutant/differ_spec.rb
237
+ - spec/integration/mutant/loader_spec.rb
238
+ - spec/integration/mutant/method_matching_spec.rb
239
+ - spec/integration/mutant/rspec_killer_spec.rb
240
+ - spec/integration/mutant/runner_spec.rb
241
+ - spec/integration/mutant/zombie_spec.rb
242
+ - spec/rcov.opts
243
+ - spec/shared/command_method_behavior.rb
244
+ - spec/shared/each_method_behaviour.rb
245
+ - spec/shared/hash_method_behavior.rb
246
+ - spec/shared/idempotent_method_behavior.rb
247
+ - spec/shared/invertible_method_behaviour.rb
248
+ - spec/shared/method_filter_parse_behavior.rb
249
+ - spec/shared/method_match_behavior.rb
250
+ - spec/shared/mutator_behavior.rb
127
251
  - spec/spec_helper.rb
128
- - spec/support/example_group_helpers.rb
129
- - spec/support/example_helpers.rb
130
- homepage: ''
252
+ - spec/support/compress_helper.rb
253
+ - spec/support/rspec.rb
254
+ - spec/support/test_app.rb
255
+ - spec/support/zombie.rb
256
+ - spec/unit/mutant/cli/class_methods/new_spec.rb
257
+ - spec/unit/mutant/cli/class_methods/run_spec.rb
258
+ - spec/unit/mutant/context/root_spec.rb
259
+ - spec/unit/mutant/context/scope/class_methods/build_spec.rb
260
+ - spec/unit/mutant/context/scope/root_spec.rb
261
+ - spec/unit/mutant/context/scope/unqualified_name_spec.rb
262
+ - spec/unit/mutant/killer/fail_ques_spec.rb
263
+ - spec/unit/mutant/killer/rspec/class_methods/new_spec.rb
264
+ - spec/unit/mutant/loader/eval/class_methods/run_spec.rb
265
+ - spec/unit/mutant/loader/rubinius/class_methods/run_spec.rb
266
+ - spec/unit/mutant/matcher/chain/each_spec.rb
267
+ - spec/unit/mutant/matcher/chain/matchers_spec.rb
268
+ - spec/unit/mutant/matcher/class_methods/from_string_spec.rb
269
+ - spec/unit/mutant/matcher/class_methods/parse_spec.rb
270
+ - spec/unit/mutant/matcher/each_spec.rb
271
+ - spec/unit/mutant/matcher/method/class_methods/parse_spec.rb
272
+ - spec/unit/mutant/matcher/method/classifier/class_methods/run_spec.rb
273
+ - spec/unit/mutant/matcher/method/method_spec.rb
274
+ - spec/unit/mutant/matcher/object_space/class_methods/parse_spec.rb
275
+ - spec/unit/mutant/matcher/object_space/each_spec.rb
276
+ - spec/unit/mutant/mutator/each_spec.rb
277
+ - spec/unit/mutant/mutator/emit_new_spec.rb
278
+ - spec/unit/mutant/mutator/emit_spec.rb
279
+ - spec/unit/mutant/mutator/node/block/mutation_spec.rb
280
+ - spec/unit/mutant/mutator/node/define/mutation_spec.rb
281
+ - spec/unit/mutant/mutator/node/if_statement/mutation_spec.rb
282
+ - spec/unit/mutant/mutator/node/literal/array_spec.rb
283
+ - spec/unit/mutant/mutator/node/literal/boolean/mutation_spec.rb
284
+ - spec/unit/mutant/mutator/node/literal/empty_array_spec.rb
285
+ - spec/unit/mutant/mutator/node/literal/fixnum_spec.rb
286
+ - spec/unit/mutant/mutator/node/literal/float_spec.rb
287
+ - spec/unit/mutant/mutator/node/literal/hash_spec.rb
288
+ - spec/unit/mutant/mutator/node/literal/nil_spec.rb
289
+ - spec/unit/mutant/mutator/node/literal/range_spec.rb
290
+ - spec/unit/mutant/mutator/node/literal/regex_spec.rb
291
+ - spec/unit/mutant/mutator/node/literal/string_spec.rb
292
+ - spec/unit/mutant/mutator/node/literal/symbol_spec.rb
293
+ - spec/unit/mutant/mutator/node/receiver_case/mutation_spec.rb
294
+ - spec/unit/mutant/mutator/node/return/mutation_spec.rb
295
+ - spec/unit/mutant/mutator/node/send/mutation_spec.rb
296
+ - spec/unit/mutant/mutator/self_spec.rb
297
+ - spec/unit/mutant/subject/class_methods/new_spec.rb
298
+ - spec/unit/mutant/subject/context_spec.rb
299
+ - spec/unit/mutant/subject/each_spec.rb
300
+ - spec/unit/mutant/subject/node_spec.rb
301
+ - tasks/metrics/ci.rake
302
+ - tasks/metrics/flay.rake
303
+ - tasks/metrics/flog.rake
304
+ - tasks/metrics/heckle.rake
305
+ - tasks/metrics/metric_fu.rake
306
+ - tasks/metrics/reek.rake
307
+ - tasks/metrics/roodi.rake
308
+ - tasks/metrics/yardstick.rake
309
+ - tasks/spec.rake
310
+ - tasks/yard.rake
311
+ - test_app/.rspec
312
+ - test_app/lib/test_app.rb
313
+ - test_app/lib/test_app/literal.rb
314
+ - test_app/spec/shared/command_method_behavior.rb
315
+ - test_app/spec/shared/each_method_behaviour.rb
316
+ - test_app/spec/shared/hash_method_behavior.rb
317
+ - test_app/spec/shared/idempotent_method_behavior.rb
318
+ - test_app/spec/shared/invertible_method_behaviour.rb
319
+ - test_app/spec/shared/method_filter_parse_behavior.rb
320
+ - test_app/spec/shared/method_match_behavior.rb
321
+ - test_app/spec/shared/mutator_behavior.rb
322
+ - test_app/spec/spec_helper.rb
323
+ - test_app/spec/unit/test_app/literal/command_spec.rb
324
+ - test_app/spec/unit/test_app/literal/string_spec.rb
325
+ homepage: https://github.com/mbj/mutant
131
326
  licenses: []
132
327
  post_install_message:
133
328
  rdoc_options: []
@@ -146,48 +341,75 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
341
  - !ruby/object:Gem::Version
147
342
  version: '0'
148
343
  requirements: []
149
- rubyforge_project: mutant
150
- rubygems_version: 1.8.12
344
+ rubyforge_project:
345
+ rubygems_version: 1.8.24
151
346
  signing_key:
152
347
  specification_version: 3
153
- summary: Mutation tester
348
+ summary: Mutation testing for ruby under rubinius
154
349
  test_files:
155
- - spec/functional/class_spec.rb
156
- - spec/functional/instance_method/array_spec.rb
157
- - spec/functional/instance_method/boolean_spec.rb
158
- - spec/functional/instance_method/call_spec.rb
159
- - spec/functional/instance_method/fixnum_spec.rb
160
- - spec/functional/instance_method/float_spec.rb
161
- - spec/functional/instance_method/hash_spec.rb
162
- - spec/functional/instance_method/if_spec.rb
163
- - spec/functional/instance_method/ivar_assign_spec.rb
164
- - spec/functional/instance_method/range_spec.rb
165
- - spec/functional/instance_method/regex_spec.rb
166
- - spec/functional/instance_method/string_spec.rb
167
- - spec/functional/instance_method/symbol_spec.rb
168
- - spec/functional/reporter/method_loaded_spec.rb
169
- - spec/functional/reporter/running_mutations_spec.rb
170
- - spec/functional/runners/rspec_spec.rb
171
- - spec/functional/singleton_method/array_spec.rb
172
- - spec/functional/singleton_method/boolean_spec.rb
173
- - spec/functional/singleton_method/call_spec.rb
174
- - spec/functional/singleton_method/fixnum_spec.rb
175
- - spec/functional/singleton_method/float_spec.rb
176
- - spec/functional/singleton_method/hash_spec.rb
177
- - spec/functional/singleton_method/if_spec.rb
178
- - spec/functional/singleton_method/ivar_assign_spec.rb
179
- - spec/functional/singleton_method/range_spec.rb
180
- - spec/functional/singleton_method/regex_spec.rb
181
- - spec/functional/singleton_method/string_spec.rb
182
- - spec/functional/singleton_method/symbol_spec.rb
183
- - spec/mutant/extensions_spec.rb
184
- - spec/mutant/implementation_spec.rb
185
- - spec/mutant/literal_spec.rb
186
- - spec/mutant/mutatee_spec.rb
187
- - spec/mutant/node_spec.rb
188
- - spec/mutant/random_spec.rb
189
- - spec/mutant/reporter_spec.rb
190
- - spec/mutant_spec.rb
350
+ - spec/integration/mutant/differ_spec.rb
351
+ - spec/integration/mutant/loader_spec.rb
352
+ - spec/integration/mutant/method_matching_spec.rb
353
+ - spec/integration/mutant/rspec_killer_spec.rb
354
+ - spec/integration/mutant/runner_spec.rb
355
+ - spec/integration/mutant/zombie_spec.rb
356
+ - spec/rcov.opts
357
+ - spec/shared/command_method_behavior.rb
358
+ - spec/shared/each_method_behaviour.rb
359
+ - spec/shared/hash_method_behavior.rb
360
+ - spec/shared/idempotent_method_behavior.rb
361
+ - spec/shared/invertible_method_behaviour.rb
362
+ - spec/shared/method_filter_parse_behavior.rb
363
+ - spec/shared/method_match_behavior.rb
364
+ - spec/shared/mutator_behavior.rb
191
365
  - spec/spec_helper.rb
192
- - spec/support/example_group_helpers.rb
193
- - spec/support/example_helpers.rb
366
+ - spec/support/compress_helper.rb
367
+ - spec/support/rspec.rb
368
+ - spec/support/test_app.rb
369
+ - spec/support/zombie.rb
370
+ - spec/unit/mutant/cli/class_methods/new_spec.rb
371
+ - spec/unit/mutant/cli/class_methods/run_spec.rb
372
+ - spec/unit/mutant/context/root_spec.rb
373
+ - spec/unit/mutant/context/scope/class_methods/build_spec.rb
374
+ - spec/unit/mutant/context/scope/root_spec.rb
375
+ - spec/unit/mutant/context/scope/unqualified_name_spec.rb
376
+ - spec/unit/mutant/killer/fail_ques_spec.rb
377
+ - spec/unit/mutant/killer/rspec/class_methods/new_spec.rb
378
+ - spec/unit/mutant/loader/eval/class_methods/run_spec.rb
379
+ - spec/unit/mutant/loader/rubinius/class_methods/run_spec.rb
380
+ - spec/unit/mutant/matcher/chain/each_spec.rb
381
+ - spec/unit/mutant/matcher/chain/matchers_spec.rb
382
+ - spec/unit/mutant/matcher/class_methods/from_string_spec.rb
383
+ - spec/unit/mutant/matcher/class_methods/parse_spec.rb
384
+ - spec/unit/mutant/matcher/each_spec.rb
385
+ - spec/unit/mutant/matcher/method/class_methods/parse_spec.rb
386
+ - spec/unit/mutant/matcher/method/classifier/class_methods/run_spec.rb
387
+ - spec/unit/mutant/matcher/method/method_spec.rb
388
+ - spec/unit/mutant/matcher/object_space/class_methods/parse_spec.rb
389
+ - spec/unit/mutant/matcher/object_space/each_spec.rb
390
+ - spec/unit/mutant/mutator/each_spec.rb
391
+ - spec/unit/mutant/mutator/emit_new_spec.rb
392
+ - spec/unit/mutant/mutator/emit_spec.rb
393
+ - spec/unit/mutant/mutator/node/block/mutation_spec.rb
394
+ - spec/unit/mutant/mutator/node/define/mutation_spec.rb
395
+ - spec/unit/mutant/mutator/node/if_statement/mutation_spec.rb
396
+ - spec/unit/mutant/mutator/node/literal/array_spec.rb
397
+ - spec/unit/mutant/mutator/node/literal/boolean/mutation_spec.rb
398
+ - spec/unit/mutant/mutator/node/literal/empty_array_spec.rb
399
+ - spec/unit/mutant/mutator/node/literal/fixnum_spec.rb
400
+ - spec/unit/mutant/mutator/node/literal/float_spec.rb
401
+ - spec/unit/mutant/mutator/node/literal/hash_spec.rb
402
+ - spec/unit/mutant/mutator/node/literal/nil_spec.rb
403
+ - spec/unit/mutant/mutator/node/literal/range_spec.rb
404
+ - spec/unit/mutant/mutator/node/literal/regex_spec.rb
405
+ - spec/unit/mutant/mutator/node/literal/string_spec.rb
406
+ - spec/unit/mutant/mutator/node/literal/symbol_spec.rb
407
+ - spec/unit/mutant/mutator/node/receiver_case/mutation_spec.rb
408
+ - spec/unit/mutant/mutator/node/return/mutation_spec.rb
409
+ - spec/unit/mutant/mutator/node/send/mutation_spec.rb
410
+ - spec/unit/mutant/mutator/self_spec.rb
411
+ - spec/unit/mutant/subject/class_methods/new_spec.rb
412
+ - spec/unit/mutant/subject/context_spec.rb
413
+ - spec/unit/mutant/subject/each_spec.rb
414
+ - spec/unit/mutant/subject/node_spec.rb
415
+ has_rdoc: